gkectl
を使用して作成された Anthos clusters on VMware(GKE On-Prem)のユーザー クラスタは、GKE On-Prem API と連携するように構成されていません。これは、Google Cloud Console でユーザー クラスタを作成する時に、自動的に有効になるGoogle Cloud ホストの API です。コンソールを使用して、gkectl
を使用して作成されたユーザー クラスタのライフサイクルを管理するには、gkectl enroll cluster
コマンドを使用してクラスタを構成する必要があります。
要件
ユーザー クラスタは次の要件を満たす必要があります。
- バージョン 1.11 以降。
- バージョン 1.8 の時点で、クラスタが作成されたときに自動でフリートに登録されます。
Google API や他のアドレスからのトラフィックがプロキシ サーバーを通過できるよう組織が許可リストを設定している場合は、次を許可リストに追加します。
- gkeonprem.googleapis.com
- gkeonprem.mtls.googleapis.com
ユーザー クラスタを登録する
gkectl
にクラスタの登録を承認するサービス アカウントを作成します。gcloud iam service-accounts create SA_NAME \ --project SA_PROJECT_ID
以下を置き換えます。
- SA_NAME: サービス アカウントに付ける名前。サービス アカウントの目的を説明する名前を使用することをおすすめします(
enrollment-sa
など)。 - SA_PROJECT_ID: サービス アカウントの親プロジェクトの ID。サービス アカウントを作成するプロジェクトは、サービス アカウントを使用するプロジェクトと同じにすることも、別のプロジェクトにすることもできます。
- SA_NAME: サービス アカウントに付ける名前。サービス アカウントの目的を説明する名前を使用することをおすすめします(
サービス アカウントに JSON キーを作成する
gcloud iam service-accounts keys create SA_NAME-key.json \ --iam-account=SA_NAME@SA_PROJECT_ID.iam.gserviceaccount.com
サービス アカウントに
gkeonprem.admin
ロールを付与します。gcloud projects add-iam-policy-binding FLEET_PROJECT_ID \ --member "serviceAccount:SA_NAME@SA_PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/gkeonprem.admin"
FLEET_PROJECT_ID は、フリートホスト プロジェクトの ID に置き換えます。これは、管理クラスタが登録されている Cloud プロジェクトと同じである必要があります。
サービス アカウントを使用するためのアプリケーションのデフォルト認証情報を設定します。これにより、リクエストを行うときにコマンドがサービス アカウントを使用できるようになります。
export GOOGLE_APPLICATION_CREDENTIALS=SA_NAME-key.json
gkectl enroll cluster
コマンドを実行します。以下を置き換えます。- CLUSTER_NAME: ユーザー クラスタの名前。
- ADMIN_CLUSTER_KUBECONFIG は、管理クラスタの
kubeconfig
ファイルのパスで置き換えます。
gkectl enroll cluster --cluster-name=CLUSTER_NAME \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
登録するプロジェクトに複数のユーザー クラスタがある場合は、同じサービス アカウントとキーを使用して、クラスタごとに
gkectl enroll cluster
を実行できます。