バニラずっと。K8sのバニラクラウドソリューション

Kubernetesに基づく新しいクラウドベースのオープンソーステクノロジーであるVanillaStackに関する記事の翻訳を公開しています。


私は最近、多くのオープンソースコンポーネントを含むVanillaStack出くわしました この記事では、インストールプロセスを簡単に見て、さまざまな使用例を示します。







一目でバニラスタック



Vanilla Stack、多くのオープンソースコンポーネントを備えたKubernetesクラスターとして定義でき ます。



その中で:



  • Rook-分散ストレージ(ファイルシステム、ブロック、オブジェクト)を管理し、
  • OpenStack-サービスとしてのインフラストラクチャ(IaaS)を提供し、
  • Cloud Foundry -Platform as a Service(PaaS)を提供します。


公式ドキュメントの次の図は、グローバルスタックアーキテクチャを示しています。



注: Vanilla Stackに付属するすべてのソリューション(Rook、Cloud Foundry、OpenStack、その他のツール)は、基盤となるKubernetesクラスターのポッドとして機能します。



上の図からわかるように、ユーザーは次のことができます。



  • デプロイ、サービス、ヘルムチャートなどを作成して、基本的なKubernetesクラスターでアプリケーションを実行します。
  • Cloud Foundryを使用して、コードからアプリケーションを実行します(単純なものを使用cf push



    )。
  • OpenStackを使用して、新しいインフラストラクチャー(仮想マシン、ソフトウェア定義ネットワークなど)を作成します。


注:ハードウェア要件は、スタックにインストールされるコンポーネントによって異なります。



次の図はより詳細で、バニラスタックに付属している可能性のあるすべてのコンポーネントのリストがカテゴリ別に整理されています







。この図はかなり正確だと思います。デフォルトでインストールされるコンポーネントもあれば、インストール時に選択できるコンポーネントもあります。



この記事では、インストールプロセスの主な手順について説明します。タスクを簡素化するために、ホスティング業者が準備した6台の仮想マシンにVanilla Stackをインストールします。3台はマスターKubernetesノードとして機能し、残りはワーカーとして機能します。



注意:クラウドプロバイダーは、インストール要件を満たしていない可能性があるため、インストールするコンポーネントに応じて選択する必要があります。たとえば、Rookをインストールするには、ブロックストレージを提供するインフラストラクチャプロバイダーが必要です。



インストールを開始します



Vanilla Stackをインストールするには、2つの方法がありますそれらはダウンロードセクションで説明され ています次のコマンドで開始できるDockerインストールを使用します。



$ docker run \
  --name VanillaStack-installer -d \
  -p 8080:8080 \
  harbor.vanillastack.io/vanillastack/installer:latest

      
      





インストーラーのWebインターフェイスにはポート8080からアクセスできます。インストールは10の簡単な手順で完了できます。これについては、次に説明します。



要件









最初のステップである Startは、スタックがインストールされるマシンのハードウェアとソフトウェアの要件を定義します。この例では、6台の仮想マシンを使用します。それぞれがUbuntu20.04で実行され、4GB RAM / 2CPUを搭載しています。



前に書いたように、3つの仮想マシンがメインのKubernetesノードとして機能し、残りは機能します。



# IP addresses of the master nodes
master1 - 159.65.92.123
master2 - 178.62.32.212
master3 - 178.62.40.225

# IP addresses of the worker nodes
worker1 - 178.62.41.87
worker2 - 178.62.27.97
worker3 - 178.62.67.29

      
      





さらに、クラスターにアクセスするためにドメイン(およびいくつかのサブドメイン)を設定する必要があります。後でロードバランサーを構成するときに、この手順に戻ります。



規約と条件



規約に同意すること が2番目のステップです。指定されたライセンス情報を必ずお読みください。







一般設定



次は、一般設定のステップ です。マスターノードとワーカーノードの数、初期負荷など、適切なインストールの種類を指定する必要があります。











この例では、3つのマスターノードを備えたHAインストールを選択し、残りの3つのノードはワーカーとして機能します。リポジトリのインストールでは、デフォルトでRookが選択されています。ここではOpenStackやCloudFoundryを使用していません。これは別の記事のトピックになる可能性があります。



SSHキーによる仮想マシンへのアクセス



公開鍵セクション はRSA公開鍵を提供します。これは、各仮想マシンにコピーする必要があります。この手順は、インストールマシン(インストーラーを実行している)がAnsibleプレイブックを実行して各VMを構成できるようにするために必要です。



注: Ansibleは構成管理システムです。SSH接続を介してマシン上でのみコマンドを実行します。ChefPuppetなどのアナログとは異なり、Ansibleではエージェントをインストールする必要はありません







キーをコピーする手順は、インストーラーに示されています。



  • キーをkey.pub



    という名前のファイルに保存します
  • 以下を使用して、キーをターゲットコンピュータにコピーしますssh-copy-id





ssh-copy-id -f -i key.pub <username>@<ip-address-of-node>
      
      





  • すべてのノードでこれを繰り返します。


Windowsの場合は、SSHキーをリモートLinuxデバイスにコピーすることから始めてこの記事の手順に従ってください



ノード情報の定義



ノードステージで は、マスターノードとワーカーノードのそれぞれのIPアドレスとユーザーを定義する必要があります。









また、ルークポッドを起動するノードを定義する必要があります。要件に応じて、3つのワーカーノードすべてを使用します。







ノード構成の確認



ノードチェックステップで は、すべてのノードが要件を満たしているかどうかをチェックします。







[ノードの検証]ボタンをクリックする前に、一番下までスクロールして、ルークルールに従っていることを確認することが重要です。rawブロックデバイスを各ノードに接続する必要があります。







コマンドを使用して、 lsblk -f



すべてが正しく構成されているかどうかを確認できます。 インストーラーの







[ノード検証]ボタンをクリックすると、 すべてのノードが正しく構成されていることを確認できます。







クラスター設定



Cluster-Settingsステップで最初に構成するの は、ポッドCIDRとサービスCIDR(つまり、ポッドIPとサービス仮想IPを提供するために使用されるIP範囲)です。この場合、デフォルト値を使用します。







さらに、トラフィックをマスターノードまたは本番ノードにリダイレクトするロードバランサーを作成する必要があります。



使用しているクラウドプロバイダーの性質上、同じロードバランサーを使用してトラフィックを別のノードセットにリダイレクトすることはできません。



したがって、マスターノードの

前とワーカーの前の2つのロードバランサーを作成します



マスターノードの前にあるロードバランサー



クラスタAPIサーバーにアクセスするには、最初のロードバランサーが必要です。次のように構成する必要があります。



  • TCPトラフィックをポート6443からマスターホストの同じポートにリダイレクトします。
  • TCP要求をポート6443に送信することにより、マスターノードの動作を定期的にチェックします。




この場合、ロードバランサーはIPアドレス159.65.211.35を取得します。



ワーカーノードの前にあるロードバランサー



2番目のロードバランサーは、クラスター入力コントローラー(クラスター内のアプリケーションへのアクセスを提供するコンポーネント)へのアクセスを提供するために必要です。その設定:



  • HTTPトラフィック(ポート80)をワーカーノードのポート30080にリダイレクトします。
  • HTTPSトラフィック(ポート443)を作業ノードのポート30443にリダイレクトします。
  • ポート30080でTCP要求を送信するワーカーノードの状態を定期的にチェックします。




この場合、ロードバランサーはIP46.101.64.165を取得します。



DNSエントリの構成



ロードバランサーのIPアドレスは、クラスタードメイン名に関連付ける必要があります。この記事では、を使用します vanilla.techwhale.io



入力コントローラーを介して公開されているAPIサーバーとアプリケーションにアクセスするには、追加のサブドメインが必要です。







この段階では、1つのロードバランサーのIPアドレスしか提供できませんが、インストーラーの次のリリースでは、さらに多くのオプションがあります。







セットアップを暗号化しましょう



Let's Encryptは、広く使用されている無料の認証局です。これにより、HTTPS証明書を受信して​​自動的に更新できます。Kubernetes Let's Encryptは、VanillaStackのデフォルトコンポーネントであるCertManagerを介して使用されることがよく あります。Cert Managerは、Let's Encrypt(および他のいくつかのソース)から証明書を取得し、KubernetesSecretを介してアプリケーションで利用できるようにすることができます。







ルーク構成



次の手順では、インストールするRookコンポーネント (この場合はRookコントロールパネルと監視)、および1つのデータの繰り返し回数(レプリカレベル)を選択できます。







追加ツールのインストール



[追加のツール]セクション で、クラスターにインストールするコンポーネントを指定できます。









ここにリストされているツールはかなり一般的です。それらはさまざまなカテゴリに分類されます。



  • モニタリング(プロメテウス、イェーガー);
  • ロギング(fluentd、Elasticsearch、Grafana);
  • コンテナレジストリとヘルムチャートリポジトリ(ハーバー);
  • 入力コントローラー(nginx)。




これは、すべてのコンポーネントを1か所からインストールするのに便利な方法です。この段階で選択されていない場合は、後でインストールすることもできます。



サブスクリプション



商用サポートに加入したい場合は、このステップで必要なすべての情報を入手できます。







サポートはCloudicalによって提供され ますそれはサポートしてい バニラスタックをしてい バニラクラウド、新しい管理スタックオプションを選択します。



すべてのステップを確認する



ここで、構成パラメーターを表示および変更できます(必要な場合)。







次のステップに進んでスタック全体をインストールする前に、

/etc/apt/sources.list



各ノードで正しく構成され、公式リポジトリに転送されていることを確認する必要があり ます。



注:この手順は、たとえば、デフォルトのリポジトリーからAnsibleを使用できない場合に必要です。



これを修正する最も簡単な方法は、コンテンツを /etc/apt/sources.list



次の手順に置き換えることです







インストール



これですべての準備が整い、お茶の下でインストールを開始できます。







インストールログには、次の目的で各VMに適用されたAnsibleプレイブックが表示されます。



  • 必要なすべてのパッケージをインストールします。
  • Kubernetesクラスターをセットアップします(3つのメインノード/ 3つのワーカー)。
  • Rookと上記で選択したすべてのツールをインストールします。




スタック全体のインストールにそれほど時間はかかりません。







注:スタックをインストールするときに、使用するクラウドプロバイダーの特性により、小さな問題が発生しました。ロードバランサーは、トラフィックをパブリックIPアドレスではなくホストの内部(プライベート)IPアドレスにリダイレクトします。Ingressコントローラーはノードの外部(パブリック)IPアドレスにマップされているため、ワーカーノードは不良としてマークされますが、これは誤りです。



クラスターアクセス



ファイル kubeconfig



はから取得できます /etc/kubernetes/admin.conf file







# Get kubeconfig file
$ ssh root@master1 cat /etc/kubernetes/admin.conf > vanilla.cfg
# Configure local kubectl
$ export KUBECONFIG=$PWD/vanilla.cfg
      
      







いつものように、クラスター内のノードをリストすることから始めます。



$ kubectl get no
NAME      STATUS   ROLES    AGE   VERSION
master1   Ready    master   38m   v1.19.6
master2   Ready    master   37m   v1.19.6
master3   Ready    master   37m   v1.19.6
worker1   Ready    worker   37m   v1.19.6
worker2   Ready    worker   37m   v1.19.6
worker3   Ready    worker   37m   v1.19.6
      
      







さらに、クラスターで実行されているすべてのポッドと、それらを提供するサービスを確認できます。









すべてが機能しているようです。次のステップは、次のようなステートフルアプリケーションなどのテスト実行です。



  • Rookを介して作成されたCephクラスターによって提供されるブロックストレージを使用します。
  • nginx入力コントローラーを介して転送されます。
  • Let's Encrypt CAからのTLS証明書を使用します。これは、CertManagerによって自動的に生成されます。




結果



Vanilla Stackのセットアップは迅速で、Dockerインストーラーはシンプルで簡単です。利便性を高めるために、パラメータをすぐに追加する必要があります。



Vanilla Stackをインストールしたくない場合は、VanillaCloudから直接同じスタックを使用できます この新しいクラウドオファリングは2020年12月に開始され、最初のベータ版が利用可能になりました。



人気のあるオープンソースプロジェクトについてさらに学ぶのに最適な方法であるため、このスタックを詳しく調べることをお勧めします。



All Articles