GKE で Workload Identity のみを使用する: Workload Identity を構成する
ステップ 6: オーバーライドを作成するで、GKE で Workload Identity を使用するためのオーバーライド ファイルを設定する場合は次の操作を行います。
GKE で Workload Identity を使用しない場合は、パート 3、ステップ 1: Apigee Ingress ゲートウェイを公開するに進みます。
Google Cloud サービス アカウントと Kubernetes サービス アカウント
Google Cloud サービス アカウントは特別なタイプのアカウントで、サービス アカウント自体として認証することで、承認済みの API 呼び出しを行うことができます。Google Cloud サービス アカウントには、個々のユーザーと同様にロールと権限を付与できます。アプリケーションがサービス アカウントとして認証されると、アプリケーションはサービス アカウントにアクセス権が付与されているすべてのリソースにアクセスできます。Google Cloud サービス アカウントの詳細については、サービス アカウントの概要をご覧ください。
ステップ 4: サービス アカウントを作成するで、Apigee ハイブリッド インストール用に Google Cloud サービス アカウントを作成しました。Apigee は、これらのサービス アカウントを使用してハイブリッド コンポーネントを認証します。
Kubernetes サービス アカウントは Google Cloud サービス アカウントに似ています。Kubernetes サービス アカウントは Pod で実行されるプロセスの ID を提供し、ユーザーと同様に API サーバーに対して認証できるようにします。Kubernetes サービス アカウントの詳細については、Configure Service Accounts for Pods をご覧ください。
オーバーライド ファイルで gcp.workloadIdentity.enabled
を true
に設定している場合、各ハイブリッド コンポーネントの Helm チャートが、コンポーネントをインストールまたはアップグレードするときに、ステップ 11: Helm チャートを使用して Apigee ハイブリッドをインストールするで行ったように、コンポーネントの Kubernetes サービス アカウントを作成します。
GKE で Workload Identity を構成する場合は、Google Cloud サービス アカウントを Kubernetes クラスタ内の Kubernetes サービス アカウントに関連付けます。これにより、Kubernetes サービス アカウントは Google Cloud サービス アカウントの権限を借用し、割り当てられたロールと権限を使用してハイブリッド コンポーネントを認証できます。
プロジェクトの Workload Identity を構成する手順は次のとおりです。
Workload Identity の構成を準備する
- オーバーライド ファイルで Workload Identity が有効になっていることを確認します。オーバーライド ファイルの次のプロパティで有効にする必要があります。
namespace
は必須です。次に例を示します。instanceID: "hybrid-instance-1" namespace: "apigee"
- Workload Identity を有効にする構文は、Helm と
apigeectl
で異なります。Helm では、gcp.workloadIdentityEnabled
がgcp.workloadIdentity.enabled
に置き換えられました。 - すべてのコンポーネントに 1 つのサービス アカウント(非本番環境)を使用する場合は、
gcp.workloadIdentity.gsa
で指定します。次に例を示します。gcp: workloadIdentity: enabled: true gsa: "apigee-non-prod@my-hybrid-project.iam.gserviceaccount.com"
- コンポーネント(本番環境)ごとに個別のサービス アカウントを使用する場合は、コンポーネントの
gsa
プロパティでサービス アカウントを指定します。次に例を示します。logger: gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
詳しくは、
gcp.workloadIdentity.enabled
を参照してください。 - 次のコマンドを使用して、Google Cloud プロジェクト ID に設定されている現在の
gcloud
構成を確認します。gcloud config get project
- GKE クラスタで Workload Identity が有効になっていることを確認します。ステップ 1: クラスタを作成するでクラスタを作成したとき、ステップ 6 で Workload Identity を有効にしました。次のコマンドを実行して、Workload Identity が有効になっているかどうかを確認できます。
リージョン クラスタ
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
ゾーンクラスタ
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
出力は次のようになります。
--- workloadPool: PROJECT_ID.svc.id.goog
結果に
null
が表示された場合は、次のコマンドを実行してクラスタで Workload Identity を有効にします。リージョン クラスタ
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
ゾーンクラスタ
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
-
次のコマンドを使用して、各ノードプールで Workload Identity を有効にします。このオペレーションは、ノードごとに最大 30 分かかることがあります。
リージョン クラスタ
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
ゾーンクラスタ
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
ここで、NODE_POOL_NAME は各ノードプールの名前です。ほとんどの Apigee ハイブリッド インストールでは、2 つのデフォルト ノードプールは
apigee-data
とapigee-runtime
という名前になっています。 - 次のコマンドを使用して、ノードプールで Workload Identity が有効になっていることを確認します。
リージョン クラスタ
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
ゾーンクラスタ
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
出力は次のようになります。
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATA
必要に応じて、現在の gcloud
構成を設定します。
gcloud config set project $PROJECT_ID
Workload Identity を構成する
次のハイブリッド コンポーネントに対して Workload Identity を有効にする手順は次のとおりです。
apigee-datastore
apigee-telemetry
apigee-org
apigee-env
apigee-datastore
、apigee-env
、apigee-org
、apigee-telemetry
チャートに対して --dry-run
フラグを指定して helm upgrade
を実行すると、正しい GSA 名と KSA 名で Workload Identity を構成する際に必要になるコマンドが出力に含まれます。
次に例を示します。
helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
NAME: datastore ... For C* backup GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective kubernetes SA (KSA). gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-backup-sa]" \ --project :my-project
apigee-datastore
の Workload Identity を設定するコマンドを取得し、出力のNOTES:
でコマンドを実行します。helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
apigee-telemetry
の Workload Identity を設定するコマンドを取得し、出力のNOTES:
でコマンドを実行します。helm upgrade telemetry apigee-telemetry/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
apigee-org
の Workload Identity を設定するコマンドを取得し、出力のNOTES:
でコマンドを実行します。helm upgrade $ORG_NAME apigee-org/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
apigee-env
の Workload Identity を設定するコマンドを取得し、出力のNOTES:
でコマンドを実行します。helm upgrade $ENV_NAME apigee-env/ \ --namespace $NAMESPACE \ --set env=ENV_NAME \ -f overrides.yaml \ --dry-run
この手順をインストール環境ごとに繰り返します。
- (省略可)Kubernetes サービス アカウントのステータスは、Google Cloud コンソールの Kubernetes のワークロードの概要ページで確認できます。
次のステップ
次のステップでは、Apigee Ingress ゲートウェイを構成し、プロキシをデプロイしてインストールをテストします。
次のステップ
(次)ステップ 1: Apigee ingress を公開する 2