GKE ワークロードから Google Cloud API に対する認証を行う

このページでは、Workload Identity Federation for GKE を使用して、Google Kubernetes Engine(GKE)クラスタで実行されているワークロードから Google Cloud API に安全にアクセスする方法について説明します。

このページは、ユーザー権限に関連するポリシーを作成、管理する ID とアカウントの管理者、オペレーター、デベロッパーを対象としています。 Google Cloud のコンテンツで使用されている一般的なロールとタスクの例の詳細については、一般的な GKE ユーザーのロールとタスクをご覧ください。

このページを読む前に、Workload Identity Federation for GKE のコンセプトを理解しておく必要があります。

始める前に

作業を始める前に、次のタスクが完了していることを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API を有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化します。gcloud CLI をインストール済みの場合は、gcloud components update コマンドを実行して最新のバージョンを取得します。以前のバージョンの gcloud CLI では、このドキュメントのコマンドを実行できない場合があります。

クラスタとノードプールで Workload Identity Federation for GKE を有効にする

Autopilot では、Workload Identity Federation for GKE が常に有効になっています。Workload Identity Federation for GKE を使用するようアプリケーションを構成するセクションに進みます。

Standard では、Google Cloud CLI または Google Cloud コンソールを使用して、クラスタとノードプールで Workload Identity Federation for GKE を有効にします。ノードプールで Workload Identity Federation for GKE を有効にするには、クラスタレベルで Workload Identity Federation for GKE を有効にする必要があります

既存の Standard クラスタで Workload Identity Federation for GKE を有効にするには、gcloud CLI または Google Cloud コンソールを使用します。既存のノードプールは影響を受けませんが、クラスタ内の新しいノードプールでは Workload Identity Federation for GKE が使用されます。

gcloud

  1. Google Cloud コンソールで Cloud Shell をアクティブにします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 既存のクラスタで Workload Identity Federation for GKE を有効にするには、次のコマンドを実行します。

    gcloud container clusters update CLUSTER_NAME \
        --location=LOCATION \
        --workload-pool=PROJECT_ID.svc.id.goog
    

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

    • CLUSTER_NAME: 既存のクラスタの名前。
    • LOCATION: クラスタ コントロール プレーンの Compute Engine のリージョンまたはゾーンus-central1us-central1-a など)。
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。

コンソール

既存のクラスタで Workload Identity Federation for GKE を有効にするには、次の操作を行います。

  1. Google Cloud コンソールで Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. クラスタのリストで、変更するクラスタの名前をクリックします。

  3. クラスタの詳細ページの [セキュリティ] セクションで、 [Workload Identity の編集] をクリックします。

  4. [Workload Identity の編集] ダイアログで、[Workload Identity を有効にする] チェックボックスをオンにします。

  5. [変更を保存] をクリックします。

既存のワークロードを Workload Identity Federation for GKE に移行する

既存のクラスタで Workload Identity Federation for GKE を有効にした後、GKE 用 Workload Identity 連携を使用するように実行中のワークロードを移行することをおすすめします。ご使用の環境に適した移行方法を選択します。Workload Identity Federation for GKE を有効にして新しいノードプールを作成することも、既存のノードプールを更新して GKE 用 Workload Identity 連携を有効にすることもできます。

クラスタで Workload Identity Federation for GKE が有効になっている場合にのみ、ノードプールで Workload Identity Federation for GKE を有効にできます。

ベスト プラクティス:

Workload Identity Federation for GKE に対応するためにアプリケーションの変更も必要な場合は、新しいノードプールを作成します。

クラスタで Workload Identity Federation for GKE が有効になっている場合、新しいノードプールを作成すると、そのプールではデフォルトで Workload Identity Federation for GKE が使用されます。Workload Identity Federation for GKE を有効にした新しいノードプールを作成するには、次のコマンドを実行します。

gcloud container node-pools create NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --workload-metadata=GKE_METADATA

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

  • NODEPOOL_NAME: 新しいノードプールの名前。
  • CLUSTER_NAME: Workload Identity Federation for GKE が有効になっている既存のクラスタの名前。
  • CONTROL_PLANE_LOCATION: クラスタ コントロール プレーンの Compute Engine のリージョンまたはゾーンus-central1us-central1-a など)。

--workload-metadata=GKE_METADATA フラグにより、GKE メタデータ サーバーを使用するようにノードプールが構成されます。

ベスト プラクティス:

Workload Identity Federation for GKE がクラスタで有効になっていない場合にノードプールの作成が失敗するように、このフラグを含めます。

既存のノードプールを更新する

クラスタで Workload Identity Federation for GKE を有効にした後、既存のノードプールで Workload Identity Federation for GKE を手動で有効にできます。

gcloud

  1. Google Cloud コンソールで Cloud Shell をアクティブにします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. Workload Identity Federation for GKE を使用するように既存のノードプールを変更するには、次のコマンドを実行します。

    gcloud container node-pools update