ユーザー クラスタを GKE On-Prem API で管理されるように構成する

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

ユーザー クラスタを登録する

管理ワークステーションで次の手順を行います。

  1. ご自分の Google アカウントでログインします。

    gcloud auth login --no-browser
    
  2. gkectl にクラスタの登録を承認するサービス アカウントを作成します。

    gcloud iam service-accounts create SA_NAME \
        --project SA_PROJECT_ID
    

    以下を置き換えます。

    • SA_NAME: サービス アカウントに付ける名前。サービス アカウントの目的を説明する名前を使用することをおすすめします(enrollment-sa など)。
    • SA_PROJECT_ID: サービス アカウントの親プロジェクトの ID。サービス アカウントを作成するプロジェクトは、サービス アカウントを使用するプロジェクトと同じにすることも、別のプロジェクトにすることもできます。
  3. サービス アカウントに JSON キーを作成する

    gcloud iam service-accounts keys create SA_NAME-key.json \
       --iam-account=SA_NAME@SA_PROJECT_ID.iam.gserviceaccount.com
    
  4. フリートホスト プロジェクトで GKE On-Prem API を有効にします。

    gcloud services enable \
        --project FLEET_PROJECT_ID \
        gkeonprem.googleapis.com
    

    FLEET_PROJECT_ID は、フリートホスト プロジェクトの ID に置き換えます。 これは、管理クラスタとユーザー クラスタが登録されている Cloud プロジェクトと同じであることが必要です。これは、クラスタ構成ファイルの gkeConnect.projectID フィールドで指定します。

  5. サービス アカウントに 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"
    
  6. サービス アカウントを使用するためのアプリケーションのデフォルト認証情報を設定します。これにより、先ほど作成したサービス アカウントが gcloud CLI で使用されます。

    export GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_SA_KEY/SA_NAME-key.json
    
  7. gkectl enroll cluster コマンドを実行します。以下を置き換えます。

    • CLUSTER_NAME: ユーザー クラスタの名前。
    • ADMIN_CLUSTER_KUBECONFIG は、管理クラスタの kubeconfig ファイルのパスで置き換えます。
    gkectl enroll cluster --cluster-name=CLUSTER_NAME \
      --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    登録するプロジェクトに複数のユーザー クラスタがある場合は、同じサービス アカウントとキーを使用して、クラスタごとに gkectl enroll cluster を実行できます。