Google Cloud にあるクラスタをフリートに登録する

このページでは、Google Cloud にある GKE クラスタをフリートに追加する方法について説明します。プロジェクトとユースケースに応じて、登録には、Google Cloud コンソール、Terraform、Config Connector、または Google Cloud CLI を使用できます。 Google Cloud CLI、Google Cloud コンソール、または Terraform を使用して、ワンステップで新しいクラスタを作成して登録することもできます。

始める前に

クラスタの登録に関する一般的な前提条件に沿って行っていることを確認します。

ユースケースによっては、Google Cloud にある GKE クラスタの登録で、以下も必要になる場合があります。

Google Cloud にある GKE クラスタを登録する

前提条件で確認したとおり、GKE 用フリート Workload Identity 連携を有効にした GKE クラスタを登録することをおすすめします。これにより、アプリケーションが Google Cloud APIs とサービスに対して一貫した認証を行うことができます。GKE 用フリート Workload Identity 連携を有効にする利点については、GKE 用フリート Workload Identity 連携を使用するをご覧ください。次のいずれかの方法を使用してクラスタを登録すると、必要に応じて GKE 用フリート Workload Identity 連携を有効にできます。

クラスタの作成時に新しいクラスタを登録するか、既存のクラスタを登録するかを選択できます。

新しいクラスタを登録する

GKE Enterprise を有効にしている場合は、クラスタの作成時に新しいエンタープライズ クラスタをフリートに登録することを強くおすすめします。このようにして「フリートで生成される」GKE Enterprise クラスタは、多くのエンタープライズ機能用に選択されているフリートレベルのデフォルト設定を使用し、推奨されるログと指標がすでに有効になった状態で作成されるためです。詳しくは、次のガイドをご覧ください。

この手順に沿ってクラスタの作成時に Standard ティアのクラスタを登録することもできますが、クラスタにはフリートレベルのデフォルト構成は適用されません。

Console

  1. Google Cloud コンソールで、関連するクラスタの作成ページに移動します。

    • Autopilot クラスタを作成するには、[Autopilot クラスタの作成] ページに移動します。

      Autopilot クラスタの作成

    • 標準リージョン クラスタまたは Standard ゾーンクラスタを作成するには、[Kubernetes クラスタの作成] ページに移動します。

      Kubernetes クラスタを作成する

  2. GKE のドキュメントの手順に沿って、Google Cloud コンソールから Autopilot標準リージョン、または標準ゾーンクラスタを作成するためのセクションを完了します。

  3. [フリート登録] セクションで、[フリートに登録する] チェックボックスをオンにします。デフォルトでは、フリート名はプロジェクト ID に基づいています。

  4. 残りのセクションに入力します。

  5. Standard クラスタの作成を選択し、登録済みのクラスタでフリートの Workload Identity 連携を使用するには(推奨)、ナビゲーション パネルの [セキュリティ] をクリックして、[GKE 用 Workload Identity 連携を有効にする] が選択されていることを確認します。Autopilot クラスタではこの機能がデフォルトで有効になっています。

  6. クラスタの詳細の確認が完了したら、[作成] をクリックし、クラスタを作成してフリートに登録します。

gcloud

以下のコマンドを使用するには gcloud CLI バージョン 450.0.0 以降が必要です。

Google Cloud CLI を使用してクラスタを登録すると、デフォルトで、クラスタはリージョン メンバーのロケーションになります。

  • 新しい GKE Autopilot クラスタを作成して登録するには、次のコマンドを実行します。

    gcloud container clusters create-auto CLUSTER_NAME --enable-fleet
    

    CLUSTER_NAME は、作成するクラスタの一意の名前に置き換えます。この名前はクラスタのメンバーシップ名にもなります。選択したフリートにこの名前のクラスタがすでに存在する場合、コマンドからエラーが返されます。

  • GKE 用 Workload Identity 連携を有効にして新しい GKE Standard クラスタを作成して登録するには、次のコマンドを実行します。

    gcloud container clusters create CLUSTER_NAME --enable-fleet \
    --workload-pool=PROJECT_ID.svc.id.goog
    

    次のように置き換えます。

    • CLUSTER_NAME: 作成するクラスタの一意の名前。この名前はクラスタのメンバーシップ名にもなります。選択したフリートにこの名前のクラスタがすでに存在する場合、コマンドからエラーが返されます。
    • PROJECT_ID: 新しいクラスタを所有するプロジェクトの Google Cloud プロジェクト ID。

    Standard クラスタを作成する場合は、GKE 用 Workload Identity 連携を有効にしてクラスタを作成することをおすすめします。これにより、登録済みのクラスタでフリート Workload Identity 連携が有効になるためです。ただし、この機能を使用しない場合は、--workload-pool フラグを省略できます。Autopilot クラスタでは、GKE 用 Workload Identity 連携がデフォルトで有効になっています。

作成するクラスタに応じて、Standard ゾーンStandard リージョンAutopilot のクラスタを作成するための他のオプションも指定できます。Google Cloud CLI のデフォルト ゾーンを構成していない場合は Compute Engine ゾーンを指定し、デフォルト プロジェクトを構成していない場合はクラスタを持つ Google Cloud プロジェクトを指定する必要があります。

さまざまなタイプの GKE クラスタの作成方法については、GKE のドキュメントをご覧ください。

Terraform

Terraform で GKE クラスタを作成して登録するには、google プロバイダを使用します。GKE クラスタの管理に使用される google_container_cluster リソースの完全なリファレンスは、Terraform レジストリにあります。

以下の手順を行う前に、前提条件に記載のとおり、Terraform で使用するサービス アカウントが作成されていることを確認してください。

新しいクラスタを作成して登録するには、Terraform 構成に次のブロックを追加します。

  1. google プロバイダを必須プロバイダとして指定します。

    terraform {
      required_providers {
        google = {
          source = "hashicorp/google"
          version = "VERSION"
        }
      }
    }
    

    VERSION は 5.6.0 以降に置き換えます。

  2. 新しいクラスタを作成して登録します。

    resource "google_container_cluster" "TF_CLUSTER_RESOURCE_NAME" {
      provider = google
      name               = "CLUSTER_NAME"
      location           = "ZONE"
      initial_node_count = 1
      fleet {
        project = "FLEET_HOST_PROJECT"
      }
    }
    

    次のように置き換えます。

    • TF_CLUSTER_RESOURCE_NAME: 作成する新しい google_container_cluster リソースの一意の名前。
    • CLUSTER_NAME: 作成して登録する新しい GKE クラスタの一意の名前。
    • ZONE: GKE クラスタ リソースのゾーン。例: us-central1-a
    • FLEET_HOST_PROJECT: クラスタを作成して登録する Google Cloud プロジェクト ID。設定しない場合、クラスタはフリートに登録されません。クラスタを別のプロジェクトのフリートに登録する場合は、別のプロジェクト ID を指定します。

既存のクラスタを登録

次のオプションのうちの任意のものを使用して、既存のクラスタを同じプロジェクトのフリートまたは別のプロジェクトのフリートに登録します(Google Cloud コンソール以外のすべてのオプション)。GKE Enterprise へのアップグレード中に、既存クラスタの一部または全部を登録することもできます。

既存の GKE クラスタを登録する手順は次のとおりです。

コンソール

クラスタでフリート Workload Identity 連携を使用する場合は(推奨)、以下の手順で操作する前に、クラスタで GKE 用 Workload Identity 連携が有効になっていることを確認します。Autopilot クラスタでは、GKE 用 Workload Identity 連携がデフォルトで有効になっています。GKE 用 Workload Identity 連携があるクラスタでは、Google Cloud コンソールから登録するときに、フリート Workload Identity 連携が自動的に有効になります。

  1. Google Cloud コンソールで、[GKE クラスタ] ページに移動します。

    [GKE クラスタ] ページに移動

  2. フリートに追加する未登録クラスタの横にある [登録] をクリックします。

  3. 表示される確認ダイアログで、再度 [登録] をクリックします。

gcloud

以下のコマンドを使用するには gcloud CLI バージョン 450.0.0 以降が必要です。

Google Cloud CLI を使用してクラスタを登録すると、デフォルトで、クラスタはリージョン メンバーのロケーションになります。

クラスタで GKE 用 Workload Identity 連携がすでに有効になっている場合、どちらのコマンドでもクラスタのフリート Workload Identity 連携が有効になります。

  • Google Cloud にある既存の GKE クラスタを同じプロジェクトのフリートに登録するには、次のコマンドを実行します。

    gcloud container clusters update CLUSTER_NAME --enable-fleet
    

    CLUSTER_NAME は、登録するクラスタの名前に置き換えます。この名前はクラスタのメンバーシップ名にもなります。

  • 別のプロジェクトのフリートにクラスタを登録するには、次のように --fleet-project フラグを使用します。次のコマンドを実行する前に、プロジェクト間の登録に必要な権限を設定していることを確認してください。

    gcloud container clusters update CLUSTER_NAME --fleet-project=PROJECT_ID_OR_NUMBER
    
    • CLUSTER_NAME は、登録するクラスタの名前に置き換えます。この名前はクラスタのメンバーシップ名にもなります。
    • PROJECT_ID_OR_NUMBER は、選択したフリートのホスト プロジェクトのプロジェクト ID または番号に置き換えます。

Terraform

google プロバイダを使用する Terraform で GKE クラスタを登録できます。GKE クラスタの管理に使用される google_container_cluster リソースの完全なリファレンスは、Terraform レジストリにあります。

以下の手順を行う前に、前提条件に記載のとおり、Terraform で使用するサービス アカウントが作成されていることを確認してください。

既存のクラスタを登録

既存のクラスタを登録するには、クラスタの google_container_cluster リソース構成に次のブロックを追加します。

fleet {
        project = "FLEET_HOST_PROJECT"
      }

FLEET_HOST_PROJECT は、クラスタが属する Google Cloud プロジェクト ID に置き換えます。また、クラスタを別のプロジェクトのフリートに登録する場合は、別のプロジェクト ID に置き換えます。

登録済みのクラスタで GKE 用 Workload Identity 連携を有効にする

Terraform を使用すると、クラスタで GKE 用 Workload Identity 連携を有効にできます。

新規または既存のクラスタで GKE 用 Workload Identity 連携を有効にするには、関連するクラスタの google_container_cluster リソース構成に次のブロックを追加します。

  workload_identity_config {
    workload_pool = "PROJECT_ID.svc.id.goog"
  }
  ```

 Replace <code><var>PROJECT_ID</var></code> with the Google Cloud project ID for your Terraform resources.

Config Connector

Config Connector アドオンがインストールされている場合は、Config Connector を使用して GKE クラスタを登録できます。Config Connector のバージョンが 1.47.0 以降であることと、前提条件に記載のとおり、サービス アカウントが作成されていることを確認してください。

GKEHubMembership リソースの完全なリファレンスについては、Config Connector リファレンス ドキュメントをご覧ください。

GKE クラスタを登録する

クラスタを登録するには、まず Config Connector ガイドの手順に沿って、リソースを作成する場所を指定します。つづいて、以下のように、YAML ファイルを作成して登録し、必要に応じてクラスタを作成します。

GKE クラスタの作成と登録

  1. 次の簡単な例に示すように、GKE クラスタを作成します。

    apiVersion: container.cnrm.cloud.google.com/v1beta1
    kind: ContainerCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      location: LOCATION
      initialNodeCount: 1
    

    以下を置き換えます。

    • CLUSTER_NAME: Config Connector で作成したクラスタを一意に表すために使用する名前。
    • LOCATION: GKE クラスタ リソースのプロビジョニングに選択したゾーンまたはリージョン。例: us-central1-a

    Config Connector を使用して GKE クラスタを作成する際のオプションの一覧については、Config Connector のドキュメントをご覧ください。

  2. GKE クラスタのメンバーシップを登録します。

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubMembership
    metadata:
      name: MEMBERSHIP_NAME
    spec:
      location: MEMBERSHIP_LOCATION
      endpoint:
        gkeCluster:
          resourceRef:
            name: CLUSTER_NAME
    

    以下を置き換えます。

    • MEMBERSHIP_NAME: フリートに登録されているクラスタを一意に表すために使用するメンバーシップ名。
    • MEMBERSHIP_LOCATION: クラスタのメンバーシップを管理するフリート サービスのロケーション。これは、クラスタ自身のロケーション(推奨)または global のいずれかです。詳細については、フリートのメンバーシップ ロケーションをご覧ください。クラスタのロケーションと異なるロケーションは指定できません。指定すると、登録は失敗します。
    • CLUSTER_NAME: Config Connector で作成したクラスタを一意に表すために使用する名前。

別のプロジェクトにクラスタを登録する

次のコードを GKEHubMembership リソースの metadata フィールドに追加して、クラスタを別プロジェクトのフリートに登録します。

   metadata:
     annotations:
       cnrm.cloud.google.com/project-id: FLEET_PROJECT_ID

以下を置き換えます。

  • FLEET_PROJECT_ID: GKE クラスタの登録に選択したフリート ホスト プロジェクト。

既存のクラスタを登録

既存のクラスタを登録する場合は、作成された方法に関係なく、次の構成を使用します。この場合、Config Connector が見つけられるように、クラスタの完全なリソース名を指定する必要があります。GKEHubMembership リソースの resourceRef フィールドは、次のように置き換えます。

   resourceRef:
     external: //container.googleapis.com/CLUSTER_RESOURCE_NAME

以下を置き換えます。

  • CLUSTER_RESOURCE_NAME: GKE クラスタの Google Cloud リソース名。例: projects/my-project/zones/us-west1-a/clusters/my-cluster

クラスタを Config Connector で作成した場合、完全修飾クラスタ名を指定する必要はありません。

登録済みのクラスタで GKE 用 Workload Identity 連携を有効にする

GKE 用 Workload Identity 連携を有効にする場合、クラスタの登録と同じ構成を使用しますが、次の追加手順があります。

  1. ContainerCluster リソースの spec フィールドに次の記述を追加して、GKE 用 Workload Identity 連携を有効にします。これは、新しいクラスタと既存のクラスタの両方で行う必要があります。

    spec:
      workloadIdentityConfig:
        workloadPool: PROJECT_ID.svc.id.goog
    

    以下を置き換えます。

  2. GKEHubMembership リソース ブロックの spec フィールドに次の記述を追加して、フリートの Workload Identity 連携を有効にします。

    spec:
      authority:
        issuer: https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME
    }
    

    次のように置き換えます。

    • PROJECT_ID: GKE クラスタ リソースを作成するために名前空間アノテーションによって選択したデフォルトのプロジェクト。
    • LOCATION: GKE クラスタ リソースのプロビジョニングに選択したゾーンまたはリージョン。例: us-central1-a
    • CLUSTER_NAME: 作成したクラスタを一意に表すために使用する名前。

トラブルシューティング

この設定中に問題が発生した場合は、トラブルシューティング ガイドをご覧ください。

次のステップ