Compute Engine 仮想マシン(VM)にデモクラスタを作成して、Google Distributed Cloud について学習します。このガイドでは、管理クラスタとユーザー クラスタの作成に 40 分から 1 時間ほどかかります。このガイドで作成するデモクラスタは、Google Distributed Cloud クラスタのプロビジョニングと運用のプロセスを評価するうえで役立ちますが、本番環境での使用を目的としたものではありません。
このドキュメントでは、次のスクリプトを実行するプロセスについて説明します。
- デモクラスタのインストール用に 5 台の Compute Engine VM をプロビジョニングする
- クラスタ接続を提供する VPC ネットワークを設定する
スクリプトによって必要なリソースがプロビジョニングされたら、bmctl
、Google Cloud コンソール、Google Cloud CLI、または Terraform のいずれかを使用して、管理クラスタと、ワークロードをホストできるユーザー クラスタを作成します。
手順の概要
このガイドでは、次の主なステップについて説明します。
スクリプトに必要な環境変数があり、コマンドの実行に必要な基本情報を収集できるように、ローカル環境を準備します。
ダウンロードしたスクリプトを使用して、VM とネットワークを作成します。
サポートされているいずれかのクライアントを使用して管理クラスタを作成します。
サポートされているいずれかのクライアントを使用してユーザー クラスタを作成します。
クリーンアップして、このガイドで作成したクラスタと VM を削除します。
1. ローカルの環境を準備する
このガイドでは、ネットワークを設定するためのスクリプトを使用するため、多くの情報を収集したり、計画を立てる必要はありません。次の手順では、ローカル環境を設定し、ガイドの以降のセクションで必要となる基本情報を収集します。
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- このページのスクリプトとコマンドで使用される環境変数を設定する際に必要となるため、プロジェクト ID をメモしておきます。既存のプロジェクトを選択した場合は、ご自身がプロジェクト オーナーまたはプロジェクト編集者であることを確認します。
-
このスクリプトは、Cloud Shell で実行できます。また、Linux あるいは macOS が実行されているローカルマシンで実行できます。Cloud Shell を使用しない場合:
- 最新の Google Cloud CLI(Google Cloud とやり取りするためのコマンドライン ツール)がインストールされていることを確認します。必要に応じて gcloud CLI コンポーネントを更新します。
gcloud components update
gcloud CLI のインストール方法によっては、次のメッセージが表示されることがあります。
You cannot perform this action because the Google Cloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation:
手順に沿ってコマンドをコピーして貼り付け、コンポーネントを更新します。
kubectl
がインストールされていることを確認します。kubectl
をインストールする必要がある場合は、次のコマンドを実行します。gcloud components install kubectl
- 最新の Google Cloud CLI(Google Cloud とやり取りするためのコマンドライン ツール)がインストールされていることを確認します。必要に応じて gcloud CLI コンポーネントを更新します。
- 環境変数を設定します。
export PROJECT_ID=PROJECT_ID export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME export ON_PREM_API_REGION=ON_PREM_API_REGION export ZONE=ZONE
ADMIN_CLUSTER_NAME
: 管理クラスタに付ける名前。ON_PREM_API_REGION
: GKE On-Prem API が稼働し、メタデータを保存する Google Cloud リージョン。us-central1
または別のサポートされているリージョンを指定します。ZONE
: Compute Engine VM が作成される Google Cloud ゾーン。us-central1-a
または他の Compute Engine ゾーンを使用できます。
- デフォルトのプロジェクトとゾーンを設定するには、次のコマンドを実行します。
gcloud config set project $PROJECT_ID gcloud config set compute/zone $ZONE
PERMISSION_DENIED
エラーが発生した場合は、入力したプロジェクト ID を再確認してください。プロジェクト ID が正しい場合は、gcloud auth login
を実行して、プロジェクトにアクセスできるアカウントで gcloud CLI にログインします。 - インストールできるサポート対象バージョンのリストを取得します。
gcloud container bare-metal admin-clusters query-version-config \ --location=ON_PREM_API_REGION
- 前のコマンドの出力からバージョンを選択し、環境変数に設定します。
export BMCTL_VERSION=BMCTL_VERSION
Google Distributed Cloud の最新の機能と修正を取得するには、互換性が最も高いバージョンを選択することをおすすめします。
2. VM とネットワークを作成する
このセクションでは、install_admin_cluster.sh
スクリプトをダウンロードして実行します。
anthos-samples
リポジトリのクローンを作成し、スクリプトを配置するディレクトリに移動します。git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-bm-gcp-bash
スクリプトを実行します。
bash install_admin_cluster.sh
プロンプトで「
2
」と入力して Compute Engine インフラストラクチャのみを設定します。プロンプトが表示されたら、選択内容を確認します。このスクリプトにより、Compute Engine VM と VXLAN ネットワークが作成され、管理ワークステーションとクラスタノードが設定されます。この設定は 5 分ほどで完了します。
スクリプトについて詳しくは、次のリンクをクリックしてください。
スクリプトについて
スクリプトは、anthos-samples GitHub リポジトリの
anthos-bm-gcp-bash
フォルダにあります。このスクリプトは、次の手動手順を自動化します。-
次の Google Cloud APIs を有効にします。
anthos.googleapis.com anthosaudit.googleapis.com anthosgke.googleapis.com cloudresourcemanager.googleapis.com connectgateway.googleapis.com container.googleapis.com compute.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com gkeonprem.googleapis.com serviceusage.googleapis.com stackdriver.googleapis.com monitoring.googleapis.com logging.googleapis.com kubernetesmetadata.googleapis.com iam.googleapis.com opsconfigmonitoring.googleapis.com
-
このスクリプトは、さまざまな API とサービスに対して複数のサービス アカウントを作成する代わりに、
baremetal-gcr
という単一のサービス アカウントを作成し、それに次の IAM ロールを付与します。roles/gkehub.admin
roles/gkehub.connect
roles/logging.logWriter
roles/monitoring.dashboardEditor
roles/monitoring.metricWriter
roles/monitoring.viewer
roles/opsconfigmonitoring.resourceMetadata.writer
roles/serviceusage.serviceUsageViewer
roles/stackdriver.resourceMetadata.writer
- 次の VM を作成します。
- 管理ワークステーション用の 1 つの VM。
- 1 台の VM(管理クラスタのコントロール プレーン ノード用)。
- 2 台の VM(ユーザー クラスタのワーカーノード用)。
- 1 台の VM(ユーザー クラスタのコントロール プレーン ノード用)。
- すべての VM で SSH が有効になっていることと、管理ワークステーションに、クラスタノード用に作成された他のすべての VM への SSH アクセス権があることを確認します。
-
VM 間のレイヤ 2 接続用に Virtual Extensible LAN(VXLAN)オーバーレイ ネットワークを作成します。VXLAN は永続的ではないため、VM インスタンスを再起動するとネットワークは破棄されます。ネットワークは、
10.200.0.0/24
サブネット上に設定されます。レイヤ 2 接続は、バンドルされたロードバランサの要件です。 -
管理ワークステーションに次のツールをインストールします。
bmctl
kubectl
- Docker
また、このスクリプトは、
baremetal-gcr
サービス アカウントのサービス アカウント キーも管理ワークステーションにダウンロードします。 - 次のタスクを行い、管理ワークステーションからの
root@10.200.0.x
が機能するようにします。- 管理ワークステーションで新しい SSH 認証鍵を生成します。
- その公開鍵を、デプロイメント内の他のすべての VM に追加します。
このスクリプトは、実行された各コマンドとステータスを出力します。完了すると、スクリプトから次が出力されます。
✅ Successfully set up SSH access from admin workstation to cluster node VMs. ✅ GCE Infrastructure setup complete. Please check the logs for any errors!!! ✅ If you do not see any errors in the output log, then you now have the following setup: |---------------------------------------------------------------------------------------------------------| | VM Name | L2 Network IP (VxLAN) | INFO | |---------------------------------------------------------------------------------------------------------| | abm-admin-cluster-cp | 10.200.0.3 | 🌟 Ready for use as control plane for the admin cluster | | abm-user-cluster-cp | 10.200.0.4 | 🌟 Ready for use as control plane for the user cluster | | abm-user-cluster-w1 | 10.200.0.5 | 🌟 Ready for use as worker for the user cluster | | abm-user-cluster-w2 | 10.200.0.6 | 🌟 Ready for use as worker for the user cluster | |---------------------------------------------------------------------------------------------------------|
-
次の Google Cloud APIs を有効にします。
3. 管理クラスタを作成する
bmctl
bmctl
を使用して管理クラスタを作成するには、ターミナル ウィンドウで管理ワークステーション VM にアクセスし、そこからコマンドを実行します。
SSH を使用して、root として管理ワークステーション VM(
abm-ws
)にアクセスします。gcloud compute ssh root@abm-ws --zone ZONE
ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。
gcloud auth application-default login
画面の指示に沿って、ADC 用の Google アカウントを選択します。
クラスタ構成ファイルを生成します。
bmctl create config -c ADMIN_CLUSTER_NAME --project-id=PROJECT_ID
管理クラスタの構成ファイルを確認します。
次のクラスタ構成ファイルには、前述の値が入力されています。入力した値に加え、生成された構成ファイルとは次の違いがあります。
- 読みやすくするために、このサンプルではコメントを削除しています。
- このスクリプトは、必要な権限をすべて備えた単一のサービス アカウントを作成し、構成ファイルで参照されている
bm-gcr.json
キーをダウンロードします。
gcrKeyPath: /root/bm-gcr.json sshPrivateKeyPath: /root/.ssh/id_rsa gkeConnectAgentServiceAccountKeyPath: /root/bm-gcr.json gkeConnectRegisterServiceAccountKeyPath: /root/bm-gcr.json cloudOperationsServiceAccountKeyPath: /root/bm-gcr.json --- apiVersion: v1 kind: Namespace metadata: name: cluster-ADMIN_CLUSTER_NAME --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: ADMIN_CLUSTER_NAME namespace: cluster-ADMIN_CLUSTER_NAME spec: type: admin profile: default anthosBareMetalVersion: BMCTL_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: 10.200.0.3 clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: 10.200.0.48 clusterOperations: projectID: PROJECT_ID location: us-central1 storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 110
管理ワークステーションで生成された構成ファイルの内容を、上記サンプルの内容に置き換えます。
生成された
bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME.yaml
ファイルを開き、その内容を前の手順で確認したサンプルの内容に置き換えます。管理クラスタを作成します。
bmctl create cluster -c ADMIN_CLUSTER_NAME
bmctl
コマンドは、プリフライト チェックを実行し、クラスタを作成するときに出力を画面に表示します。詳細情報は、管理ワークステーションのbaremetal/bmctl-workspace/abm-user-cluster-metallb/log
フォルダのログに書き込まれます。クラスタの作成が完了するまでに数分かかる場合があります。
コンソールで [GKE クラスタ] ページに移動します。
ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタがリストに表示されます。
管理クラスタにログインします。
クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。
[Google ID を使用してログインします] を選択します。
[ログイン] をクリックします。
管理クラスタを確認する
管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace
ディレクトリにあります。デプロイを確認するには、次の操作を行います。
SSH を使用して、root として管理ワークステーションにアクセスします。
gcloud compute ssh root@abm-ws --zone ZONE
管理クラスタが作成され、動作していることを確認します。
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
出力は次のようになります。
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m v1.27.4-gke.1600
確認が完了したら、「
exit
」と入力して管理ワークステーションから切断します。
コンソール
コンソールで管理クラスタを作成するには、管理ワークステーション VM から bmctl
register bootstrap
を実行してブートストラップ クラスタを作成する必要があります。bmctl register bootstrap
コマンドが実行されている間に、コンソールで管理クラスタを作成します。
ブートストラップ環境の基本情報を入力する
Google Cloud コンソールで、[GKE クラスタ] ページに移動します。
[作成] をクリックします。
[クラスタを作成] ダイアログで [オンプレミス] を選択し、ベアメタルの [構成] をクリックします。
プロジェクト リストから
PROJECT_ID
を選択してください。左側のナビゲーション バーで、[ブートストラップ環境のインストール] をクリックします。
管理クラスタ名として「
ADMIN_CLUSTER_NAME
」と入力します。管理クラスタのバージョンとして
BMCTL_VERSION
を選択します。スクリプトにより、このバージョンのbmctl
コマンドライン ツールが管理ワークステーションにダウンロードされます。インストールする Google Distributed Cloud のバージョンは、bmctl
バージョンと一致する必要があります。[Google Cloud API のロケーション] フィールドで、リストから ON_PREM_API_REGION を選択します。この設定では、GKE On-Prem API が実行されるリージョンと、以下のデータが保存されるリージョンを指定します。
- クラスタのライフサイクルを管理する際に GKE On-Prem API が必要とするクラスタ メタデータ
- システム コンポーネントの Cloud Logging データと Cloud Monitoring データ
- Cloud Audit Logs によって作成された管理監査ログ
クラスタ名、プロジェクト、ロケーションにより、Google Cloud でクラスタが一意に識別されます。
コンソールに表示される手順ではなく、次のセクションの手順を使用して、ブートストラップ クラスタを作成します。管理クラスタを作成するときに戻るため、コンソール ページを表示したままにします。
ブートストラップ クラスタを作成する
コンソールなどの GKE On-Prem API クライアントを使用して管理クラスタを作成する場合は、管理ワークステーションにブートストラップ クラスタを作成する必要があります。このブートストラップ クラスタは、管理クラスタの作成に必要な Kubernetes コントローラをホストします。
コマンドラインから SSH を使用して、root として管理ワークステーション VM にアクセスします。
gcloud compute ssh root@abm-ws --zone ZONE
VM の更新に関するメッセージを無視して、このチュートリアルを完了して問題ありません。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。
ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。
gcloud auth application-default login
画面の指示に沿って、ADC 用の Google アカウントを選択します。
baremetal/
ディレクトリに移動し、次のコマンドを実行してブートストラップ クラスタを作成します。ブートストラップ クラスタ名は、管理クラスタ名の前に
bootstrap-
を付けて生成されます。bmctl register bootstrap \ --ssh-key=/root/.ssh/id_rsa \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID
bmctl
がブートストラップ クラスタの作成に成功すると、次のような出力が表示されます。[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
管理クラスタを作成する
[管理ワークステーションからの環境のブートストラップ] セクションの [ブートストラップ環境のインストール] ページで、[接続を確認] をクリックします。
成功すると、コンソールに [
接続が確立されました] と表示されます。続行する前に、ブートストラップ クラスタへの接続が確立されている必要があります。接続が確立されていない場合は、
bmctl register bootstrap
コマンドに指定した引数を確認します。--name
の値が、[ブートストラップ環境の基本] セクションに表示された生成されたブートストラップ名と一致していることを確認します。--project-id
の値がコンソールで選択したプロジェクトの ID と一致していることを確認します。
ブートストラップ クラスタ名またはプロジェクト ID を変更する必要がある場合は、「
Ctrl-C
」と入力してbmctl register bootstrap
を終了し、コマンドを再実行します。
ネットワーキング
左側のナビゲーション バーで [ネットワーキング] をクリックします。
[コントロール プレーン] セクションで、[コントロール プレーン ノード IP 1] フィールドに次のように入力します。
10.200.0.3
これは、スクリプトによって作成された VXLAN にある abm-admin-cluster-cp VM の IP アドレスです。
[ロードバランサ] セクションで、[バンドル] が選択されていることを確認します。
[仮想 IP(VIP)] セクションで、[コントロール プレーン VIP] フィールドに次のように入力します。
10.200.0.48
次のステップは、ブートストラップ クラスタの可用性に依存します。ブートストラップ クラスタが登録済みメンバーとして表示されるまで、ターミナル ウィンドウで
bmctl register bootstrap
コマンドを数分間実行する必要があります。数分経っても使用できない場合は、使用したブートストラップ クラスタ名とプロジェクト ID を確認します。ブートストラップ クラスタ名またはプロジェクト ID を変更する必要がある場合は、別のターミナル ウィンドウで「Ctrl-C
」と入力してbmctl register bootstrap
を終了し、コマンドを再実行します。[確認して作成] をクリックします。
コンソールには、設定を確認しクラスタを作成するときにステータス メッセージが表示されます。
管理クラスタが作成されると、管理ワークステーションのブートストラップ クラスタは削除されます。別のターミナル ウィンドウで
bmctl register bootstrap
コマンドを実行すると、出力は次のようになります。... [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK [2024-04-15 23:16:38+0000] Please run [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes [2024-04-15 23:16:38+0000] to get cluster nodes status. [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK [2024-04-15 23:24:30+0000] Flushing logs... OK [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster. [2024-04-15 23:24:30+0000] Deleting membership... OK [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
管理クラスタを確認する
管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace
ディレクトリにあります。デプロイを確認するには、次の操作を行います。
SSH を使用して、root として管理ワークステーションにアクセスします。
gcloud compute ssh root@abm-ws --zone ZONE
管理クラスタが作成され、動作していることを確認します。
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
出力は次のようになります。
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m v1.27.4-gke.1600
確認が完了したら、「
exit
」と入力して管理ワークステーションから切断します。
gcloud CLI
以下の手順では、2 つのターミナル ウィンドウが必要です。1 つのターミナル ウィンドウで bmctl register bootstrap
を実行して、ブートストラップ クラスタを作成します。bmctl register bootstrap
コマンドが実行されている間に、別のターミナル ウィンドウで gcloud container
bare-metal admin-clusters create
を実行して、管理クラスタを作成します。
ブートストラップ クラスタを作成する
gcloud CLI などの GKE On-Prem API クライアントを使用して管理クラスタを作成する場合は、管理ワークステーションにブートストラップ クラスタを作成する必要があります。このブートストラップ クラスタは、管理クラスタの作成に必要な Kubernetes コントローラをホストします。
コマンドラインから SSH を使用して、root として管理ワークステーション VM にアクセスします。
gcloud compute ssh root@abm-ws --zone ZONE
VM の更新に関するメッセージを無視して、このチュートリアルを完了して問題ありません。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。
ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。
gcloud auth application-default login
画面の指示に沿って、ADC 用の Google アカウントを選択します。
baremetal/
ディレクトリに移動し、次のコマンドを実行してブートストラップ クラスタを作成します。ブートストラップ クラスタ名は、管理クラスタ名の前に
bootstrap-
を付けて生成されます。bmctl register bootstrap \ --ssh-key=/root/.ssh/id_rsa \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID
bmctl
がブートストラップ クラスタの作成に成功すると、次のような出力が表示されます。[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
管理クラスタを作成する
新しいターミナル ウィンドウで、ブートストラップ クラスタがフリートのメンバーとして登録されていることを確認します。
gcloud container fleet memberships list \ --project=PROJECT_ID
次のステップの
gcloud container bare-metal admin-clusters create
コマンドは、ブートストラップ クラスタの可用性によって異なります。ブートストラップ クラスタが登録メンバーとして表示されるまで、もう一方のターミナル ウィンドウでbmctl register bootstrap
コマンドを数分間実行する必要があります。数分経ってもリストに表示されない場合は、使用したブートストラップ クラスタ名とプロジェクト ID を確認してください。ブートストラップ クラスタ名またはプロジェクト ID を変更する必要がある場合は、別のターミナル ウィンドウで「Ctrl-C
」と入力してbmctl register bootstrap
を終了し、コマンドを再実行します。バンドルされたロードバランサを使用して管理クラスタを作成します。
指定する値が、スクリプト用に指定した環境変数と一致していることを確認します。
gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --version=BMCTL_VERSION \ --max-pods-per-node=110 \ --control-plane-vip=10.200.0.48 \ --control-plane-load-balancer-port=443 \ --control-plane-node-configs node-ip=10.200.0.3 \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
コマンドの内容:
--control-plane-vip
は10.200.0.48
に設定されています。これは、クラスタの Kubernetes API サーバー用のロードバランサの仮想 IP(VIP)です。--control-plane-node-configs
:node-ip
は10.200.0.3
に設定されています。これは、スクリプトによって作成された VXLAN にあるabm-admin-cluster-cp
VM の IP アドレスです。
フラグとそれらの説明の全一覧については、gcloud CLI リファレンスをご覧ください。
このコマンドからの出力は、次のようになります。
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
この出力例で、
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
という文字列は長時間実行オペレーションのOPERATION_ID
です。 オペレーションのステータスを確認するには、別のターミナル ウィンドウで次のコマンドを実行します。gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
gcloud container bare-metal admin-clusters create
が正常に完了すると、出力は次のようになります。Created Anthos on bare metal Admin Cluster [https://gkeonprem.googleapis.com/v1/projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-gcloud-001]. NAME LOCATION VERSION MEMBERSHIP STATE abm-cluster-1 us-central1 1.28.300-gke.131 abm-cluster-1 RUNNING
管理クラスタが作成されると、管理ワークステーションのブートストラップ クラスタは削除されます。別のターミナル ウィンドウで
bmctl register bootstrap
コマンドを実行すると、出力は次のようになります。... [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK [2024-04-15 23:16:38+0000] Please run [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes [2024-04-15 23:16:38+0000] to get cluster nodes status. [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK [2024-04-15 23:24:30+0000] Flushing logs... OK [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster. [2024-04-15 23:24:30+0000] Deleting membership... OK [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
管理クラスタを確認する
管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace
ディレクトリにあります。デプロイを確認するには、次の操作を行います。
SSH を使用して、root として管理ワークステーションにアクセスします。
gcloud compute ssh root@abm-ws --zone ZONE
管理クラスタが作成され、動作していることを確認します。
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
出力は次のようになります。
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m v1.27.4-gke.1600
確認が完了したら、「
exit
」と入力して管理ワークステーションから切断します。
Terraform
以下の手順では、2 つのターミナル ウィンドウが必要です。1 つのターミナル ウィンドウで bmctl register bootstrap
を実行して、ブートストラップ クラスタを作成します。bmctl register bootstrap
コマンドが実行されている間に、別のターミナル ウィンドウで Terraform コマンドを実行して、管理クラスタを作成します。
管理クラスタで機能するようにユーザー クラスタのサンプル ファイルを変更する
anthos-samples
リポジトリには、Google Distributed Cloud 管理クラスタの作成専用のサンプルは含まれていません。次の手順では、既存のユーザー クラスタの Terraform サンプルを変更して、管理クラスタの作成方法を示します。
anthos-samples
のクローンを作成したディレクトリで、次のコマンドを実行して、MetalLB ユーザー クラスタのサンプル ファイルを管理クラスタの新しいフォルダにコピーします。cp -r anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb \ anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
abm_admin_cluster_basic
ディレクトリに移動します。cd anthos-samples/anthos-onprem-terraform/abm_admin_cluster_basic
Terraform ファイルを編集します。
variables.tf
:コントロール プレーン ノードの IP アドレスの変数を定義します(このデモでは 1 つだけ使用します)。この変数は
variable "control_plane_ips" { ... }
エントリに似ています。コントロール プレーンの VIP アドレスの変数を定義します。この変数は
variable "control_plane_vip" { ... }
エントリに似ています。
terraform.tfvars
:次の管理クラスタの設定に変数値を割り当てます。
コントロール プレーン ノードの IP アドレス:
10.200.0.3
コントロール プレーン VIP アドレス:
10.200.0.48
main.tf
:google_gkeonprem_bare_metal_cluster
リソースをgoogle_gkeonprem_bare_metal_admin_cluster
リソースに置き換えます。google_gkeonprem_bare_metal_node_pool
リソースと関連するlifecycle
セクションを削除します。新しく定義した変数を使用するようにリソースを更新します。
以下に、管理クラスタを作成するように編集された
main.tf
ファイルの例を示します。/** * Copyright 2023 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #[START anthos_onprem_terraform_bare_metal_admin_cluster_basic_main] module "enable_google_apis_primary" { source = "terraform-google-modules/project-factory/google//modules/project_services" version = "~> 14.0" project_id = var.project_id activate_apis = [ "anthos.googleapis.com", "anthosaudit.googleapis.com", "anthosgke.googleapis.com", "cloudresourcemanager.googleapis.com", "compute.googleapis.com", "connectgateway.googleapis.com", "container.googleapis.com", "file.googleapis.com", "gkehub.googleapis.com", "iam.googleapis.com", "kubernetesmetadata.googleapis.com", "logging.googleapis.com", "monitoring.googleapis.com", "opsconfigmonitoring.googleapis.com", "serviceusage.googleapis.com", "stackdriver.googleapis.com" ] disable_services_on_destroy = false } # Enable GKE OnPrem API resource "google_project_service" "default" { project = var.project_id service = "gkeonprem.googleapis.com" disable_on_destroy = false } # Create an anthos baremetal admin cluster and enroll it with the gkeonprem API resource "google_gkeonprem_bare_metal_admin_cluster" "admin-cluster-basic" { name = var.admin_cluster_name description = "Anthos bare metal admin cluster" provider = google depends_on = [google_project_service.default] location = var.region bare_metal_version = var.bare_metal_version network_config { island_mode_cidr { service_address_cidr_blocks = ["0.96.0.0/20"] pod_address_cidr_blocks = ["192.168.0.0/16"] } } node_config { max_pods_per_node = 250 } control_plane { control_plane_node_pool_config { node_pool_config { operating_system = "LINUX" dynamic "node_configs" { for_each = var.admin_cp_ips content { node_ip = node_configs.value } } } } } load_balancer { port_config { control_plane_load_balancer_port = 443 } vip_config { control_plane_vip = var.admin_cp_vip } } storage { lvp_share_config { lvp_config { path = "/mnt/localpv-share" storage_class = "local-shared" } shared_path_pv_count = 5 } lvp_node_mounts_config { path = "/mnt/localpv-disk" storage_class = "local-disks" } } dynamic "security_config" { for_each = length(var.admin_user_emails) == 0 ? [] : [1] content { authorization { dynamic "admin_users" { for_each = var.admin_user_emails content { username = admin_users.value } } } } } lifecycle { ignore_changes = [ annotations["onprem.cluster.gke.io/user-cluster-resource-link"], annotations["alpha.baremetal.cluster.gke.io/cluster-metrics-webhook"], annotations["baremetal.cluster.gke.io/operation"], annotations["baremetal.cluster.gke.io/operation-id"], annotations["baremetal.cluster.gke.io/start-time"], annotations["baremetal.cluster.gke.io/upgrade-from-version"] ] } } #[END anthos_onprem_terraform_bare_metal_admin_cluster_basic_main]
管理クラスタの Terraform リソースの詳細については、Terraform レジストリの google_gkeonprem_bare_metal_admin_cluster をご覧ください。
ブートストラップ クラスタを作成する
Terraform などの GKE On-Prem API クライアントを使用して管理クラスタを作成する場合は、管理ワークステーションにブートストラップ クラスタを作成する必要があります。このブートストラップ クラスタは、管理クラスタの作成に必要な Kubernetes コントローラをホストします。
コマンドラインから SSH を使用して、root として管理ワークステーション VM にアクセスします。
gcloud compute ssh root@abm-ws --zone ZONE
VM の更新に関するメッセージを無視して、このチュートリアルを完了して問題ありません。VM をテスト環境として維持する場合は、Ubuntu のドキュメントに記載されているように、OS を更新するか次のリリースにアップグレードすることをおすすめします。
ユーザー認証情報をアプリケーションのデフォルト認証情報(ADC)として設定します。
gcloud auth application-default login
画面の指示に沿って、ADC 用の Google アカウントを選択します。
baremetal/
ディレクトリに移動し、次のコマンドを実行してブートストラップ クラスタを作成します。ブートストラップ クラスタ名は、管理クラスタ名の前に
bootstrap-
を付けて生成されます。bmctl register bootstrap \ --ssh-key=/root/.ssh/id_rsa \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID
bmctl
がブートストラップ クラスタの作成に成功すると、次のような出力が表示されます。[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
管理クラスタを作成する
Terraform プランを初期化して作成します。
terraform init
Terraform によって、Google Cloud プロバイダなどの必要なライブラリがインストールされます。
構成を確認し、必要に応じて変更を加えます。
terraform plan
Terraform プランを適用して、管理クラスタを作成します。
terraform apply
管理クラスタの作成には 15 分以上かかります。クラスタの作成が完了すると、次のようなメッセージが表示されます。
... google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Still creating... [20m10s elapsed] google_gkeonprem_bare_metal_admin_cluster.admin-cluster-basic: Creation complete after 20m11s [id=projects/anonuser-anonproject/locations/us-central1/bareMetalAdminClusters/gce-admin-terra002] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
管理クラスタが作成されると、管理ワークステーションのブートストラップ クラスタは削除されます。別のターミナル ウィンドウで
bmctl register bootstrap
コマンドを実行すると、出力は次のようになります。... [2024-04-15 23:10:48+0000] Waiting for cluster to become ready OK [2024-04-15 23:16:38+0000] Please run [2024-04-15 23:16:38+0000] kubectl --kubeconfig bmctl-workspace/gce-admin-gcloud-001/gce-admin-gcloud-001-kubeconfig get nodes [2024-04-15 23:16:38+0000] to get cluster nodes status. [2024-04-15 23:16:38+0000] Waiting for node pools to become ready OK [2024-04-15 23:16:58+0000] Waiting for metrics to become ready in GCP OK [2024-04-15 23:21:58+0000] Waiting for cluster API provider to install in the created admin cluster OK [2024-04-15 23:22:08+0000] Moving admin cluster resources to the created admin cluster [2024-04-15 23:22:10+0000] Waiting for node update jobs to finish OK [2024-04-15 23:24:30+0000] Flushing logs... OK [2024-04-15 23:24:30+0000] Unregistering bootstrap cluster. [2024-04-15 23:24:30+0000] Deleting membership... OK [2024-04-15 23:24:32+0000] Deleting bootstrap cluster.
コンソールで [GKE クラスタ] ページに移動します。
ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタがリストに表示されます。
管理クラスタにログインします。
クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。
[Google ID を使用してログインします] を選択します。
[ログイン] をクリックします。
管理クラスタを確認する
管理ワークステーションにある管理クラスタの kubeconfig ファイルは、root アカウントの bmctl-workspace
ディレクトリにあります。デプロイを確認するには、次の操作を行います。
SSH を使用して、root として管理ワークステーションにアクセスします。
gcloud compute ssh root@abm-ws --zone ZONE
管理クラスタが作成され、動作していることを確認します。
kubectl --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig get nodes
出力は次のようになります。
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane 94m v1.27.4-gke.1600
確認が完了したら、「
exit
」と入力して管理ワークステーションから切断します。
4. ユーザー クラスタを作成する
Google Cloud コンソール、Google Cloud CLI、または Terraform を使用してユーザー クラスタを作成できます。わかりやすくするため、Terraform スクリプトにハードコードされた名前と一致するように、ユーザー クラスタ名に abm-user-cluster-metallb
を使用します。
bmctl
SSH を使用して、root として管理ワークステーション VM(
abm-ws
)にアクセスします。gcloud compute ssh root@abm-ws --zone ZONE
クラスタ構成ファイルを生成します。
bmctl create config -c abm-user-cluster-metallb \ --project-id=PROJECT_ID
次のユーザー クラスタの構成ファイルで、
clusterSecurity
セクションにメールアドレスを設定し、残りの設定を確認します。次のクラスタ構成ファイルには、前述の計画テーブルに入力した値が入力されています。入力した値に加え、生成された構成ファイルとは次の違いがあります。
- 読みやすくするために、このサンプルではコメントを削除しています。
- ユーザー クラスタの場合と同様に、[認証情報] セクションを削除しています。
- クラスタタイプ
spec.type
がuser
に設定されています。 clusterrole/cluster-admin
がアカウントに付与されるように、spec.clusterSecurity.authorization.clusterAdmin.gcpAccounts
フィールドが追加されています。このフィールドを使用すると、Google Cloud コンソールでクラスタにログインして、クラスタの詳細を表示できます。
--- apiVersion: v1 kind: Namespace metadata: name: cluster-abm-user-cluster-metallb --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: abm-user-cluster-metallb namespace: cluster-abm-user-cluster-metallb spec: type: user profile: default anthosBareMetalVersion: BMCTL_VERSION gkeConnect: projectID: PROJECT_ID controlPlane: nodePoolSpec: nodes: - address: 10.200.0.4 clusterNetwork: pods: cidrBlocks: - 192.168.0.0/16 services: cidrBlocks: - 10.96.0.0/20 loadBalancer: mode: bundled ports: controlPlaneLBPort: 443 vips: controlPlaneVIP: 10.200.0.50 ingressVIP: 10.200.0.51 addressPools: - name: pool1 addresses: - 10.200.0.51-10.200.0.70 clusterOperations: projectID: PROJECT_ID location: us-central1 clusterSecurity: authorization: clusterAdmin: gcpAccounts: - YOUR_EMAIL_ADDRESS storage: lvpNodeMounts: path: /mnt/localpv-disk storageClassName: local-disks lvpShare: path: /mnt/localpv-share storageClassName: local-shared numPVUnderSharedPath: 5 nodeConfig: podDensity: maxPodsPerNode: 250 --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: node-pool-1 namespace: cluster-abm-user-cluster-metallb spec: clusterName: abm-user-cluster-metallb nodes: - address: 10.200.0.5
管理ワークステーションで生成された構成ファイルの内容を、上記サンプルの内容に置き換えます。
生成された
bmctl-workspace/abm-user-cluster-metallb/abm-user-cluster-metallb.yaml
ファイルを開き、その内容を前の手順で確認したサンプルの内容に置き換えます。ユーザー クラスタを作成します。
bmctl create cluster -c abm-user-cluster-metallb \ --kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
bmctl
コマンドは、プリフライト チェックを実行し、クラスタを作成するときに出力を画面に表示します。詳細情報は、管理ワークステーションのbaremetal/bmctl-workspace/abm-user-cluster-metallb/log
フォルダのログに書き込まれます。クラスタの作成が完了するまでに数分かかる場合があります。
Google Cloud コンソールで、[GKE クラスタ] ページに移動します。
ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタとユーザー クラスタの両方がリストに表示されます。
ユーザー クラスタにログインします。
クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。
[Google ID を使用してログインします] を選択します。
[ログイン] をクリックします。
同じ手順を繰り返して、管理クラスタにログインします。
コンソール
次の手順に沿って、コンソールでユーザー クラスタを作成します。
コンソールで、ベアメタル クラスタの作成ページに移動します。
管理クラスタを作成した Google Cloud プロジェクトが選択されていることを確認します。
[クラスタを作成] をクリックします。
ダイアログで [オンプレミス] をクリックします。
[ベアメタル] の横にある [構成] をクリックします。[前提条件] ページが表示されます。
[クラスタタイプの選択] で、[既存の管理クラスタ用のユーザー クラスタを作成する] を選択します。
[次へ] をクリックします。
クラスタの基本
ユーザー クラスタの名前を入力するか、デフォルトを使用します。
新しく作成した管理クラスタが選択されていることを確認します。このページの残りの設定には、デフォルト値を使用できます。
左側のナビゲーション バーで [ネットワーキング] をクリックします。
ネットワーキング
VM と管理クラスタの作成に使用したスクリプトによって、10.200.0.0/24
サブネットに IP アドレスを持つレイヤ 2 VXLAN が作成されています。
[コントロール プレーン] セクションで、[コントロール プレーン ノード IP 1] フィールドに次のように入力します。
10.200.0.4
これは、スクリプトによって作成された VXLAN にある
abm-user-cluster-cp1
VM の IP アドレスです。[ロードバランサ] セクションで、デフォルトのロードバランサ [バンドルされた MetalLB] を使用します。
[新しいアドレスプール] セクションで、[IP アドレス範囲 1] フィールドに次の IP アドレス範囲を入力します。
10.200.0.51-10.200.0.70
[完了] をクリックします。
[仮想 IP] セクションで、[コントロール プレーン VIP] フィールドに次の IP アドレスを入力します。
10.200.0.50
[Ingress VIP] に、次の IP アドレスを入力します。
10.200.0.51
[サービスと Pod の CIDR] セクションで、デフォルトの IP アドレスを使用します。
左側のナビゲーション バーで [デフォルト プール] をクリックします。
ノードプールを作成する
ユーザー クラスタには、ワーカーノード用のノードプールが少なくとも 1 つ必要です。
[ノードアドレス 1] フィールドに、次の IP アドレスを入力します。
10.200.0.5
これは、スクリプトによって作成された VXLAN にある abm-user-cluster-w1 VM の IP アドレスです。
クラスタを作成する
[確認して作成] をクリックしてユーザー クラスタを作成します。
ユーザー クラスタの作成には 15 分以上かかります。コンソールには、設定を確認しクラスタを作成するときにステータス メッセージが表示されます。
構成に問題がある場合は、構成の問題を修正してクラスタの作成を再試行できる十分な量のエラー メッセージがコンソールに表示されます。
作成プロセスに関する追加情報を表示するには、[詳細を表示] をクリックしてサイドパネルを表示します。[
] をクリックすると、詳細パネルが閉じます。クラスタが作成されると、「クラスタ ステータス: 実行中」と表示されます。
クラスタが作成されたら、
[クラスタ] をクリックして [クラスタ] ページに戻ります。ユーザー クラスタにログインします。
クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。
[Google ID を使用してログインします] を選択します。
[ログイン] をクリックします。
同じ手順を繰り返して、管理クラスタにログインします。
gcloud CLI
ユーザー クラスタを作成するには:
次のコマンドを実行して、ユーザー クラスタを作成します。
gcloud container bare-metal clusters create abm-user-cluster-metallb \ --project=PROJECT_ID \ --admin-cluster-membership=projects/PROJECT_ID/locations/ON_PREM_API_REGION/memberships/ADMIN_CLUSTER_NAME \ --location=ON_PREM_API_REGION \ --version=BMCTL_VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \ --control-plane-node-configs='node-ip=10.200.0.4' \ --control-plane-vip=10.200.0.50 \ --control-plane-load-balancer-port=443 \ --ingress-vip=10.200.0.51 \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
コマンドを実行すると、次のような出力が表示されます。
Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...
この出力例では、
operation-1678304606537-5f668bde5c57e-341effde-b612ff8a
という文字列は長時間実行オペレーションのOPERATION_ID
です。オペレーションのステータスを確認するには、別のターミナル ウィンドウを開いてコマンドを実行します。
gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
OPERATION_ID
は、前の手順の出力で対応する文字列に置き換えます。クラスタの作成には 15 分以上かかります。クラスタが作成されている間、上記のコマンドを繰り返し実行することで現在のステータスを取得できます。
クラスタが作成されると、次のような出力が表示されます。
Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb].
gcloud container bare-metal clusters create
コマンドの詳細(各フラグの説明など)については、gcloud CLI リファレンスのクラスタ リソースの container bare-metal clusters create ページをご覧ください。
ノードプールを作成する
クラスタが正常に作成されたら、クラスタのノードプールを作成できます。
ノードプールを作成するには:
次のコマンドを実行してノードプールを作成します。
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=abm-user-cluster-metallb \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --node-configs='node-ip=10.200.0.5'
NODE_POOL_NAME
は、ノードプールの名前に置き換えます。コマンドを実行すると、次のような出力が表示されます。
Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...
ノードプールは、およそ 5 分以内で作成されます。ノードプールが作成されると、次のような出力が表示されます。
Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/abm-user-cluster-metallb/bareMetalNodePools/NODE_POOL_NAME].
コンソールで、[Create a bare metal cluster] ページに移動します。
[Create a bare metal cluster] ページに移動
ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタとユーザー クラスタの両方がリストに表示されます。
ユーザー クラスタにログインします。
クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。
[Google ID を使用してログインします] を選択します。
[ログイン] をクリックします。
同じ手順を繰り返して、管理クラスタにログインします。
Terraform
バンドルされた MetalLB ロードバランサを使用してユーザー クラスタを作成するには、次の基本的な構成サンプルを使用できます。詳細については、google_gkeonprem_bare_metal_cluster
リファレンス ドキュメントをご覧ください。
anthos-samples
のクローンを作成したディレクトリで、Terraform のサンプルがあるディレクトリに移動します。cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
このサンプルには、
main.tf
に渡すサンプル変数が用意されています。terraform.tfvars.sample
ファイルのコピーを作成します。cp terraform.tfvars.sample terraform.tfvars
次のサンプルの値を確認します。
次の Terraform 変数ファイル(
terraform.tfvars.sample
)には、このガイドの前のセクションで入力した IP アドレスと値が事前に入力されています。ADMIN_2_EMAIL_ADDRESS
は、Google Cloud アカウントに関連付けられているメールアドレスに置き換えるか、変数ファイルを編集するときに削除します。このサンプルで変数を設定する引数の詳細については、Terraform ドキュメントの引数リファレンスで Google Distributed Cloud ユーザー クラスタの説明をご覧ください。
変数ファイルのコピーの内容を、上記のサンプルの内容に置き換えます。
Terraform プランを初期化して作成します。
terraform init
Terraform によって、Google Cloud プロバイダなどの必要なライブラリがインストールされます。
構成を確認し、必要に応じて変更を加えます。
terraform plan
Terraform プランを適用して、ユーザー クラスタを作成します。
terraform apply
ユーザー クラスタの作成には 15 分以上かかります。Google Cloud コンソールの [GKE クラスタ] ページでクラスタを表示できます。
Google Cloud コンソールで、[GKE クラスタ] ページに移動します。
ユーザー クラスタを作成したプロジェクトが選択されていることを確認します。管理クラスタとユーザー クラスタの両方がリストに表示されます。
ユーザー クラスタにログインします。
クラスタ名のリンクをクリックして、サイドパネルで [ログイン] をクリックします。
[Google ID を使用してログインします] を選択します。
[ログイン] をクリックします。
同じ手順を繰り返して、管理クラスタにログインします。
5. クリーンアップ
このガイドで作成したクラスタと VM を削除するには、次の操作を行います。
ユーザー クラスタを削除する
bmctl
bmctl
でユーザー クラスタを削除するには、管理ワークステーション VM のabm-ws
から次のコマンドを実行します。bmctl reset \ --cluster abm-user-cluster-metallb \ --admin-kubeconfig bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig
コンソール
コンソールで [GKE クラスタ] ページに移動します。
クラスタのリストで、ユーザー クラスタをクリックします。
[詳細] パネルで、[詳細を表示] をクリックします。
ウィンドウの上部にある
(削除)をクリックします。確認の入力を求められたら、クラスタ名を入力して [削除] をクリックします。
右上隅にある
をクリックして、削除のステータスを表示します。クラスタリストを更新するには、ページの更新が必要になる場合があります。
gcloud CLI
次のコマンドを実行してクラスタを削除します。
gcloud container bare-metal clusters delete abm-user-cluster-metallb \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --force
--force
フラグを使用すると、ノードプールを持つクラスタを削除できます。--force
フラグを使用せずに、まず ノードプールを削除 してから、クラスタを削除する必要があります。
その他のフラグの詳細については、gcloud container bare-metal clusters delete をご覧ください。
Terraform
terraform destroy
コマンドは、terraform apply
を実行してユーザー クラスタを作成したときに作成されたリソースを終了します。
Terraform ユーザー クラスタのサンプル ファイル(
main.tf
など)が配置されているディレクトリから次のコマンドを実行します。terraform destroy
ユーザー クラスタが削除されるのを待ってから、管理クラスタと VM を削除します。
管理クラスタと VM を削除する
GKE On-Prem API から管理クラスタの登録を解除します。
gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
管理ワークステーションに接続します。
gcloud compute ssh root@abm-ws --zone ZONE
管理クラスタを削除します。
bmctl reset -c ADMIN_CLUSTER_NAME
bmctl
は、フリートからクラスタの登録を解除し、クラスタを削除します。クラスタが削除されるのを待ってから、VM を削除します。管理ワークステーションを終了します。
exit
名前に
abm
を含むすべての VM を一覧取得します。gcloud compute instances list | grep 'abm'
名前に
abm
を含むすべての VM を削除しても問題がないことを確認します。確認後、次のコマンドを実行して
abm
VM を削除できます。gcloud compute instances list --format="value(name)" | \ grep 'abm' | \ xargs gcloud compute instances delete --quiet --zone ZONE
次のコマンドを実行してサービス アカウントを削除し、プロンプトが表示されたら「
y
」を入力します。gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
次のステップ
独自のハードウェアにクラスタを作成する。ハードウェアでの基本的なインストールを計画するとハードウェアに基本的なクラスタを作成するをご覧ください。
インストールの詳細な要件については、インストールの前提条件の概要をご覧ください。
インストールの詳細については、クラスタの作成の概要をご覧ください。
クラスタへのデプロイ手順については、アプリケーションをデプロイするをご覧ください。