このページでは、Compute Engine で実行されている仮想マシン(VM)を使用して、高可用性(HA)モードで Google Distributed Cloud ハイブリッド クラスタを設定する方法について説明します。
Google Distributed Cloud は、ハードウェアを準備することなくすぐに試すことができます。このページの手順を完了すると、Compute Engine で実行されている Google Distributed Cloud のテスト環境が機能するようになります。
Compute Engine VM で Google Distributed Cloud を試すには、次の手順を行います。
- Compute Engine で 6 つの VM を作成する
- すべての VM 間に L2 接続で
vxlan
ネットワークを作成する - Google Distributed Cloud の前提条件をインストールする
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
- このページのスクリプトとコマンドで使用する環境変数を設定する際に必要となるため、プロジェクト ID をメモしておきます。既存のプロジェクトを選択した場合は、ご自身がプロジェクト オーナーまたはプロジェクト編集者であることを確認します。
-
Linux ワークステーションに、最新の Google Cloud CLI(Google Cloud を操作するためのコマンドライン ツール)がインストールされていることを確認します。gcloud CLI がすでにインストールされている場合は、次のコマンドを実行してコンポーネントを更新します。
gcloud components update
gcloud CLI のインストール方法によっては、「このインストールでは Google Cloud CLI コンポーネント マネージャーが無効になっているため、この操作を実行できません。次のコマンドを実行して、このインストールで同じ結果を得ることができます。」というメッセージが表示される可能性があります。以下の手順に沿って、コマンドをコピーして貼り付け、コンポーネントを更新してください。
このガイドの手順は、anthos-samples
リポジトリのインストール スクリプトから取ったものです。よくある質問セクションには、このスクリプトをカスタマイズして、一般的なバリエーションを処理する方法の詳細が記載されています。
Compute Engine で 6 つの VM を作成する
以下の VM を作成する手順は次のとおりです。
- 管理ワークステーション用の 1 つの VM。管理ワークステーションは、インストール中にクラスタをプロビジョニングするためのコマンドライン インターフェース(CLI)ツールと構成ファイルをホストします。また、インストール後に、プロビジョニングされたクラスタとやり取りするための CLI ツールもホストします。管理ワークステーションは、SSH でクラスタ内の他のすべてのノードにアクセスできます。
- Google Distributed Cloud コントロール プレーンを実行するために必要な、3 つのコントロール プレーン ノード用の 3 つの VM。
- Google Distributed Cloud クラスタのワークロードを実行するために必要な、2 つのワーカーノード用の 2 つの VM。
環境変数を設定します。
export PROJECT_ID=PROJECT_ID export ZONE=ZONE export CLUSTER_NAME=CLUSTER_NAME export BMCTL_VERSION=1.29.400-gke.86
ZONE
については、us-central1-a
または他の任意の Compute Engine ゾーンを使用できます。次のコマンドを実行して、Google アカウントでログインし、プロジェクトをデフォルトとして設定します。
gcloud auth login gcloud config set project $PROJECT_ID gcloud config set compute/zone $ZONE
baremetal-gcr
サービス アカウントとキーを作成します。Google Cloud APIs とサービスを有効にします。
複数の API とサービスに複数のサービス アカウントが必要とならないように、
baremetal-gcr
サービス アカウントに追加の権限を付与します。このページのすべてのコマンドに必要な変数と配列を作成します。
次のループを使用して 6 つの VM を作成します。
このコマンドは、次の名前の VM インスタンスを作成します。
- abm-ws: 管理ワークステーション用の VM。
- abm-cp1、abm-cp2、abm-cp3: コントロール プレーン ノード用の VM。
- abm-w1、abm-w2: ワークロードを実行するノード用の VM。
次のループを使用して、すべての VM で SSH を使用できることを確認します。
VM 間の L2 接続を使用して vxlan
ネットワークを作成する
Linux の標準 vxlan
機能を使用して、L2 接続ですべての VM を接続するネットワークを作成します。
以下のコマンドには、次のアクションを行う 2 つのループが含まれています。
- 各 VM への SSH 接続。
- 必要なパッケージの更新とインストール。
必要なコマンドを実行して、
vxlan
でネットワークを構成します。
これで、10.200.0.0/24 ネットワーク内に L2 接続が確立されました。VM には次の IP アドレスが割り振られます。
- 管理ワークステーション VM: 10.200.0.2
- コントロール プレーン ノードを実行する VM:
- 10.200.0.3
- 10.200.0.4
- 10.200.0.5
- ワーカーノードを実行する VM:
- 10.200.0.6
- 10.200.0.7
Google Distributed Cloud の前提条件をインストールする
Google Distributed Cloud をインストールする前に、管理ワークステーションに次のツールをインストールする必要があります。
bmctl
kubectl
- Docker
ツールをインストールして Google Distributed Cloud のインストールの準備をするには:
次のコマンドを実行して、管理ワークステーションにサービス アカウント キーをダウンロードし、必要なツールをインストールします。
次のコマンドを実行して、
root@10.200.0.x
が動作することを確認します。このコマンドは、以下のタスクを実行します。- 管理マシンで新しい SSH 認証鍵を生成します。
- デプロイメント内の他のすべての VM に公開鍵を追加します。
Google Distributed Cloud ハイブリッド クラスタをデプロイする
次のコードブロックには、次のタスクを完了するために必要なすべてのコマンドと構成が含まれています。
- 必要なハイブリッド クラスタ用の構成ファイルを作成します。
- プリフライト チェックを実行します。
- クラスタをデプロイします。
クラスタを確認する
管理ワークステーションにあるクラスタの kubeconfig
ファイルは、root アカウントの bmctl-workspace
ディレクトリにあります。デプロイを確認するには次の手順を行います。
root として管理ワークステーションに SSH 接続します。
gcloud compute ssh root@abm-ws --zone ${ZONE}
VM の更新に関するメッセージは無視して、このチュートリアルを完了してください。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。
KUBECONFIG
環境変数にクラスタの構成ファイルへのパスを設定し、クラスタでkubectl
コマンドを実行します。export clusterid=CLUSTER_NAME export KUBECONFIG=$HOME/bmctl-workspace/$clusterid/$clusterid-kubeconfig kubectl get nodes
現在のコンテキストを環境変数に設定します。
export CONTEXT="$(kubectl config current-context)"
次の
gcloud
コマンドを実行します。このコマンドは以下を行います。- ユーザー アカウントにクラスタに対する Kubernetes
clusterrole/cluster-admin
ロールを付与します。 - 管理ワークステーションに SSH 接続せずにローカル コンピュータで
kubectl
コマンドを実行できるようにクラスタを構成します。
GOOGLE_ACCOUNT_EMAIL
は、Google Cloud アカウントに関連付けられているメールアドレスに置き換えます。例:--users=alex@example.com
。gcloud container fleet memberships generate-gateway-rbac \ --membership=CLUSTER_NAME \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=$KUBECONFIG \ --context=$CONTEXT\ --apply
このコマンドの出力は次のようになります(読みやすくするために省略しています)。
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig, context: CLUSTER_NAME-admin@CLUSTER_NAME Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
- ユーザー アカウントにクラスタに対する Kubernetes
完了したら、「exit」と入力して管理ワークステーションからログアウトします。
Connect ゲートウェイを介して、クラスタにアクセスできる
kubeconfig
エントリを取得します。gcloud container fleet memberships get-credentials CLUSTER_NAME
出力は次のようになります。
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_CLUSTER_NAME" has been generated and set as the current context.
これで、Connect ゲートウェイを介して
kubectl
コマンドを実行できるようになりました。kubectl get nodes kubectl get namespaces
Google Cloud コンソールからクラスタにログインする
Google Cloud コンソールで Google Distributed Cloud のワークロードを確認するには、クラスタにログインする必要があります。コンソールに初めてログインする前に、認証方法を構成する必要があります。構成する最も簡単な認証方法は、Google ID です。この認証方法では、Google Cloud アカウントに関連付けられているメールアドレスを使用してログインできます。
前のセクションで実行した gcloud container fleet memberships generate-gateway-rbac
コマンドは、Google ID でログインできるようにクラスタを構成します。
Google Cloud コンソールで、[GKE クラスタ] ページに移動します。
登録済みクラスタの横にある
[アクション] をクリックし、[ログイン] をクリックします。[Google ID を使用してログインします] を選択します。
[ログイン] をクリックします。
クリーンアップ
管理ワークステーションに接続して、クラスタ VM をインストール前の状態にリセットし、Google Cloud プロジェクトからクラスタの登録を解除します。
gcloud compute ssh root@abm-ws --zone ${ZONE} << EOF set -x export clusterid=CLUSTER_NAME bmctl reset -c \$clusterid EOF
名前に
abm
を含むすべての VM を一覧表示します。gcloud compute instances list | grep 'abm'
名前に
abm
を含むすべての VM を削除しても問題がないことを確認します。確認後、次のコマンドを実行して
abm
VM を削除できます。gcloud compute instances list --format="value(name)" | grep 'abm' | xargs gcloud \ --quiet compute instances delete