このページでは、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 では、このドキュメントのコマンドを実行できない場合があります。
- アクセスする Google Cloud API が、Workload Identity Federation for GKE でサポートされていることを確認します。サポートされている API のリストについては、サポートされているプロダクトと制限事項をご覧ください。API がサポートされていない場合、またはサービスの Workload Identity 連携の制限によってユースケースがブロックされている場合は、このページの代替方法: Kubernetes ServiceAccounts を IAM にリンクするをご覧ください。
IAM Service Account Credentials API が有効になっているかを確認します。
次の IAM ロールがあることを確認します。
roles/container.adminroles/iam.serviceAccountAdmin
Workload Identity Federation for GKE の制限事項を理解しておいてください。
既存の Autopilot クラスタまたは Standard クラスタがあることを確認します。新しいクラスタを作成するには、Autopilot クラスタの作成をご覧ください。
クラスタとノードプールで 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
-
Google Cloud コンソールで Cloud Shell をアクティブにします。
Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
既存のクラスタで 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-central1やus-central1-aなど)。PROJECT_ID: 実際の Google Cloud プロジェクト ID。
コンソール
既存のクラスタで Workload Identity Federation for GKE を有効にするには、次の操作を行います。
Google Cloud コンソールで Google Kubernetes Engine のページに移動します。
クラスタのリストで、変更するクラスタの名前をクリックします。
クラスタの詳細ページの [セキュリティ] セクションで、 [Workload Identity の編集] をクリックします。
[Workload Identity の編集] ダイアログで、[Workload Identity を有効にする] チェックボックスをオンにします。
[変更を保存] をクリックします。
既存のワークロードを 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-central1やus-central1-aなど)。
--workload-metadata=GKE_METADATA フラグにより、GKE メタデータ サーバーを使用するようにノードプールが構成されます。
Workload Identity Federation for GKE がクラスタで有効になっていない場合にノードプールの作成が失敗するように、このフラグを含めます。
既存のノードプールを更新する
クラスタで Workload Identity Federation for GKE を有効にした後、既存のノードプールで Workload Identity Federation for GKE を手動で有効にできます。
gcloud
-
Google Cloud コンソールで Cloud Shell をアクティブにします。
Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。
Workload Identity Federation for GKE を使用するように既存のノードプールを変更するには、次のコマンドを実行します。
gcloud container node-pools update