このページでは、Google Cloud にある GKE クラスタをフリートに追加する方法について説明します。プロジェクトとユースケースに応じて、登録には、Google Cloud コンソール、Terraform、Config Connector、または Google Cloud CLI を使用できます。 また、Google Cloud CLI を使用して、1 ステップで新しいクラスタを作成して登録することもできます。
準備
クラスタの登録に関する一般的な前提条件に沿って行っていることを確認します。
ユースケースによっては、Google Cloud 登録の GKE クラスタでも次の処理が必要になる場合があります。
- 登録済みクラスタでフリート Workload Identity を有効にする(推奨)場合は、クラスタで GKE Workload Identity が有効になっていることを確認します。Autopilot クラスタでは、デフォルトで Workload Identity が有効になっています。
- 別のプロジェクトのフリートに登録する(クロス プロジェクト登録とも呼ばれる)場合は、必要な権限が設定されていることを確認します。 プロジェクト間の登録済みクラスタで GKE Enterprise 機能を使用する場合は、選択したフリートホスト プロジェクトで GKE Enterprise を有効にする必要があります。クラスタのプロジェクトで有効にしても効果はありません。
- Terraform または Config Connector を使用してクラスタを登録する場合は、ツールに Google Cloud サービス アカウントが設定され、ツールが Google Cloud で認証できるように構成されていることを確認します。
Google Cloud に GKE クラスタを登録する
前提条件で確認したとおり、フリートの Workload Identity を有効にした GKE クラスタを登録することをおすすめします。これにより、アプリケーションが Google Cloud API とサービスに対して一貫した認証を行うことができます。フリートの Workload Identity を有効にする利点については、フリートの Workload Identity を使用するをご覧ください。
次のいずれかの方法を使用してクラスタを登録すると、必要に応じてフリートの Workload Identity を有効にできます。
GKE Enterprise を有効にしている場合は、Google Cloud コンソールから同じプロジェクトで既存のクラスタを登録できます。これは、GKE クラスタを登録する最も簡単で早い方法です。この方法を使用すると、すぐにクラスタをフリートの一部としてコンソールに表示し、フリート対応機能(Config Sync など)を使用できますGKE Enterprise へのアップグレード中に、既存のクラスタの一部またはすべてを登録することもできます。
Google Cloud CLI を使用して、新規または既存の GKE クラスタを登録できます(GKE Enterprise が有効かどうかは関係ありません)。
GKE クラスタは、Terraform か Config Connector を使用して作成および登録できます(GKE Enterprise は有効でも無効でも構いません)。
GKE クラスタを登録するには、次のようにします。
コンソール
既存のクラスタを登録
クラスタでフリートの Workload Identity(推奨)を使用する場合は、以下の手順を行う前に、クラスタの GKE Workload Identity が有効になっていることを確認します。Autopilot クラスタでは、デフォルトで GKE Workload Identity が有効になっています。GKE Workload Identity を備えたクラスタでは、Google Cloud コンソールから登録するときに、フリートの Workload Identity が自動的に有効になります。
Google Cloud コンソールで、[GKE クラスタ] ページに移動します。
フリートに追加する未登録クラスタの横にある [登録] をクリックします。
表示される確認ダイアログで、再度 [登録] をクリックします。
gcloud
Google Cloud CLI を使用して、新規または既存のクラスタを登録できます。このコマンドを使用するには、gcloud CLI バージョン 450.0.0 以降が必要です。
Google Cloud CLI を使用してクラスタを登録すると、デフォルトで、クラスタはリージョン メンバーのロケーションになります。
新しいクラスタを作成して登録
新しい GKE Autopilot クラスタを作成して登録するには、次のコマンドを実行します。
gcloud container clusters create-auto CLUSTER_NAME --enable-fleet
CLUSTER_NAME
は、作成するクラスタの一意の名前に置き換えます。これはクラスタのメンバーシップ名にもなります。選択したフリートにこの名前のクラスタがすでに存在する場合は、エラーが返されます。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 クラスタを作成する場合は、登録済みクラスタのフリート Workload Identity を有効にするため、GKE Workload Identity を有効にしたクラスタを作成することをおすすめします。ただし、この機能を使用しない場合は、
--workload-pool
フラグを省略できます。Autopilot クラスタでは、デフォルトで Workload Identity が有効になっています。
作成するクラスタに応じて、Standard ゾーン、Standard リージョン、Autopilot のクラスタを作成するための他のオプションも指定できます。Google Cloud CLI のデフォルト ゾーンを構成していない場合は Compute Engine ゾーンを指定し、デフォルト プロジェクトを構成していない場合はクラスタを持つ Google Cloud プロジェクトを指定する必要があります。
さまざまなタイプの GKE クラスタの作成方法については、GKE のドキュメントをご覧ください。
既存のクラスタを登録
クラスタで 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 --enable-fleet --fleet-project=PROJECT_ID_OR_NUMBER
CLUSTER_NAME
は、登録するクラスタの名前に置き換えます。これはクラスタのメンバーシップ名にもなります。PROJECT_ID_OR_NUMBER
は、選択したフリート ホスト プロジェクトのプロジェクト ID または番号に置き換えます。
Terraform
google-beta
プロバイダを使用する Terraform で GKE クラスタを登録できます。GKE クラスタの管理に使用される google_container_cluster
リソースの完全なリファレンスは、Terraform レジストリにあります。
以下の手順を行う前に、前提条件に記載のとおり、Terraform で使用するサービス アカウントが作成されていることを確認してください。
新しいクラスタを作成して登録
新しいクラスタを作成して登録するには、Terraform 構成に次のブロックを追加します。
google-beta
プロバイダを必須プロバイダとして指定します。terraform { required_providers { google-beta = { source = "hashicorp/google-beta" version = "VERSION" } } }
VERSION
を 5.6.0 以降に置き換えます。プロバイダに次のデフォルト値を設定します。
provider "google-beta" { credentials = file("SERVICE_ACCOUNT_KEY_PATH") project = "PROJECT_ID" }
次のように置き換えます。
SERVICE_ACCOUNT_KEY_PATH
: 前提条件の一部としてダウンロードしたサービス アカウントの秘密鍵の JSON ファイルへのローカルパス。このサービス アカウント キーは、creds-gcp
という名前の Secret としてgke-connect
Namespace に保存されます。このサービス アカウント キーにより、Terraform が Google Cloud アカウントにアクセスできるようになります。PROJECT_ID
: Terraform リソースをプロビジョニングする Google Cloud プロジェクト ID。
新しいクラスタを作成して登録します。
resource "google_container_cluster" "TF_CLUSTER_RESOURCE_NAME" { provider = google-beta 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_container_cluster
リソース構成に次のブロックを追加します。
fleet {
project = "FLEET_HOST_PROJECT"
}
FLEET_HOST_PROJECT
は、クラスタが属する Google Cloud プロジェクト ID に置き換えます。クラスタを別のプロジェクトのフリートに登録する場合は、別のプロジェクト ID に置き換えます。
登録済みの GKE クラスタで Workload Identity を有効にする
Terraform を使用して、クラスタの Workload Identity を有効にできます。
新規または既存のクラスタに対して Workload Identity を有効にするには、関連するクラスタの google_container_cluster
リソース構成に次のブロックを追加します。
workload_identity_config {
workload_pool = "PROJECT_ID.svc.id.goog"
}
PROJECT_ID
は、Terraform リソースの Google Cloud プロジェクト ID に置き換えます。
Config Connector
Config Connector アドオンがインストールされている場合は、Config Connector を使用して GKE クラスタを登録できます。Config Connector のバージョンが 1.47.0 以降であることと、前提条件に記載のとおり、サービス アカウントが作成されていることを確認してください。
GKEHubMembership
リソースの完全なリファレンスについては、Config Connector リファレンス ドキュメントをご覧ください。
GKE クラスタを登録する
クラスタを登録するには、まず Config Connector ガイドの手順に沿って、リソースを作成する場所を指定します。つづいて、以下のように、YAML ファイルを作成して登録し、必要に応じてクラスタを作成します。
GKE クラスタの作成と登録
次の簡単な例に示すように、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 のドキュメントをご覧ください。
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 を有効にする
Workload Identity を有効にする場合、クラスタの登録と同じ構成を使用しますが、次の追加手順が適用されます。
ContainerCluster
リソースのspec
フィールドに次の記述を追加して、GKE Workload Identity を有効にします。これは、新しいクラスタと既存のクラスタの両方で行う必要があります。spec: workloadIdentityConfig: workloadPool: PROJECT_ID.svc.id.goog
以下を置き換えます。
- PROJECT_ID: GKE クラスタ リソースを作成するために名前空間アノテーションによって選択したデフォルトのプロジェクト。
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: 作成したクラスタを一意に表すために使用する名前。
トラブルシューティング
この設定中に問題が発生した場合は、トラブルシューティング ガイドをご覧ください。
次のステップ
- フリート メンバーシップのステータスを取得するで説明されているように、クラスタの登録が成功したことを確認し、他のフリート メンバーシップの詳細を取得する。
- 登録済みクラスタに対して認証を設定する。
- Google Cloud コンソールからクラスタにログインする