このドキュメントでは、Terraform を使用して Compute Engine に VM を設定し、Google Distributed Cloud を高可用性(HA)モードでインストールして試用する方法について説明します。この目的で Google Cloud CLI を使用する方法については、Compute Engine VM で Google Distributed Cloud を試すをご覧ください。
Google Distributed Cloud は、ハードウェアを準備することなく、すぐに試すことができます。用意されている Terraform スクリプトによって Compute Engine に VM のネットワークが作成され、それを使用して Google Distributed Cloud を実行できます。このチュートリアルでは、ハイブリッド クラスタ デプロイ モデルを使用します。
以下の手順でサンプル クラスタを実行します。
始める前に
デプロイに必要なリソースは次のとおりです。
- インターネットにアクセスでき、次のツールがインストールされているワークステーション 1 台: Git、Google Cloud CLI、Terraform (v0.15.5 以上 1.2 未満)。
Google Cloud プロジェクト
次の要件のいずれかを満たし、ワークステーションに鍵ファイルがダウンロードされているプロジェクトのサービス アカウント。
- サービス アカウントにオーナー権限がある。
- サービス アカウントに、編集者とプロジェクト IAM 管理者権限の両方がある。
Compute Engine に VM ネットワークを設定する
このセクションでは、anthos-samples リポジトリの Terraform スクリプトを使用します。このスクリプトは、次のリソースを使用して Compute Engine を構成します。
- ハイブリッド クラスタをデプロイする 6 個の VM。
- 1 個の管理 VM。他のマシンにハイブリッド クラスタをデプロイする際に使用します。
- 3 個の VM。ハイブリッド クラスタ コントロール プレーンの実行に必要な 3 つのコントロール プレーン ノードに使用します。
- 2 個の VM。ハイブリッド クラスタでワークロードを実行するために必要な 2 つのワーカーノードに使用します。
- すべてのノード間に、L2 接続をエミュレートする
VxLAN
オーバーレイ ネットワーク。 - 管理 VM からコントロール プレーンとワーカーノードへの SSH アクセス。
クラスタ内のノード数は、新しいノード名を instance_count
Terraform 変数に追加することで変更できます。
anthos-bm-gcp-terraform
サンプルの Terraform スクリプトをダウンロードします。git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-bm-gcp-terraform
terraform.tfvars.sample
ファイルを更新して、環境固有の変数を設定します。project_id = "PROJECT_ID" region = "GOOGLE_CLOUD_REGION" zone = "GOOGLE_CLOUD_ZONE" credentials_file = "PATH_TO_GOOGLE_CLOUD_SERVICE_ACCOUNT_KEY_FILE"
terraform.tfvars.sample
ファイルの名前を、Terraform で使用されるデフォルトの変数ファイル名に変更します。mv terraform.tfvars.sample terraform.tfvars
サンプル ディレクトリを Terraform 作業ディレクトリとして初期化します。これにより、必要な Terraform 状態管理の構成が
git init
と同じように設定されます。terraform init
Terraform 実行プランを作成します。このステップでは、リソースの状態を比較してスクリプトを検証し、実行プランを作成します。
terraform plan
Terraform スクリプトに記述された変更を適用します。このステップでは、指定されたプロバイダ(この場合は Google Cloud)でプランを実行して、リソースを望ましい状態にします。
terraform apply # when prompted to confirm the Terraform plan, type 'Yes' and enter
ハイブリッド クラスタをデプロイする
Terraform の実行が完了すると、ハイブリッド クラスタをデプロイする準備が完了します。
SSH を使用して管理ホストに接続します。
gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
VM の更新に関するメッセージは無視して、このチュートリアルを完了してください。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。
次のコードブロックを実行して、構成された Compute Engine VM で
cluster1
ハイブリッド クラスタを作成します。sudo ./run_initialization_checks.sh && \ sudo bmctl create config -c cluster1 && \ sudo cp ~/cluster1.yaml bmctl-workspace/cluster1 && \ sudo bmctl create cluster -c cluster1
bmctl
コマンドを実行すると、新しいハイブリッド クラスタの設定が開始します。ノードでのプリフライト チェック、管理クラスタとユーザー クラスタの作成、Connect を使用した Google Cloud へのクラスタの登録が行われます。設定全体で 15 分ほどかかります。クラスタの作成中は次の出力が表示されます。
Created config: bmctl-workspace/cluster1/cluster1.yaml
Creating bootstrap cluster... OK
Installing dependency components... OK
Waiting for preflight check job to finish... OK
- Validation Category: machines and network
- [PASSED] 10.200.0.3
- [PASSED] 10.200.0.4
- [PASSED] 10.200.0.5
- [PASSED] 10.200.0.6
- [PASSED] 10.200.0.7
- [PASSED] gcp
- [PASSED] node-network
Flushing logs... OK
Applying resources for new cluster
Waiting for cluster to become ready OK
Writing kubeconfig file
kubeconfig of created cluster is at bmctl-workspace/cluster1/cluster1-kubeconfig, please run
kubectl --kubeconfig bmctl-workspace/cluster1/cluster1-kubeconfig get nodes
to get cluster node status.
Please restrict access to this file as it contains authentication credentials of your cluster.
Waiting for node pools to become ready OK
Moving admin cluster resources to the created admin cluster
Flushing logs... OK
Deleting bootstrap cluster... OK
クラスタの確認と操作
クラスタの kubeconfig
ファイルは、管理マシンの bmctl-workspace
ディレクトリにあります。デプロイを確認するには、次の操作を行います。
管理ホストから切断している場合は、SSH を使用してホストに接続します。
# You can copy the command from the output of the Terraform execution above gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
KUBECONFIG
環境変数にクラスタの構成ファイルのパスを設定し、クラスタでkubectl
コマンドを実行します。export CLUSTER_ID=cluster1 export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig kubectl get nodes
クラスタのノードが次のように表示されます。
NAME STATUS ROLES AGE VERSION cluster1-abm-cp1-001 Ready master 17m v1.18.6-gke.6600 cluster1-abm-cp2-001 Ready master 16m v1.18.6-gke.6600 cluster1-abm-cp3-001 Ready master 16m v1.18.6-gke.6600 cluster1-abm-w1-001 Ready <none> 14m v1.18.6-gke.6600 cluster1-abm-w2-001 Ready <none> 14m v1.18.6-gke.6600
Google Cloud コンソールからクラスタにログインする
Google Cloud コンソールでワークロードをモニタリングするには、クラスタにログインする必要があります。
クラスタへのログインの手順と詳細については、Google Cloud コンソールからクラスタにログインするをご覧ください。
クリーンアップ
クラスタの設定をクリーンアップするには、2 つの方法があります。
コンソール
Terraform
- Terraform によって作成されたすべてのリソースを削除する前に、クラスタの登録を解除します。
# Use SSH to connect to the admin host
gcloud compute ssh tfadmin@cluster1-abm-ws0-001 --project=PROJECT_ID --zone=GOOGLE_CLOUD_ZONE
# Reset the cluster
export CLUSTER_ID=cluster1
export KUBECONFIG=$HOME/bmctl-workspace/$CLUSTER_ID/$CLUSTER_ID-kubeconfig
sudo bmctl reset --cluster $CLUSTER_ID
# log out of the admin host
exit
- Terraform を使用してすべてのリソースを削除します。
terraform destroy --auto-approve