
GCP プロジェクトであらゆる操作を実行する権限を持つ ServiceAccount と、夜間に実行され GKE 環境の 1 つをシャットダウンする Jenkins パイプラインがあります。
数日前から、同じパイプラインを再度実行すると機能するにもかかわらず、クラスターの認証情報の取得でランダムな失敗が発生することに気付き始めました。
次のコードブロックがあります:
gcloud auth activate-service-account --key-file=****
gcloud container clusters get-credentials integration-cluster --zone europe-west1-c --project integration-project
問題は、失敗した夜に次のエラーが表示されることです。
00:00:45 Activated service account credentials for: [[email protected]]
00:00:46 Fetching cluster endpoint and auth data.
00:00:46 ERROR: (gcloud.container.clusters.get-credentials) ResponseError: code=403, message=Required "container.clusters.get" permission(s) for "projects/integration-project/zones/europe-west1-c/clusters/integration-cluster".
プロジェクトに対する権限が不足している場合の serviceAccount などですが、何も変更されておらず、再実行は機能します。
原因は何でしょうか? バグのように見えますが...どこでしょうか? 現在、Google Cloud SDK 319.0.0 を使用しています。
10倍
答え1
エラー メッセージはmessage=Required "container.clusters.get" permission(s)
、サービス アカウントに権限がないことを意味しますcontainer.clusters.get
。
文書によれば役割を理解するセクションKubernetes Engine のロールロールがありroles/container.clusterViewer
、roles/container.clusterAdmin
この権限が含まれています。
この問題を解決するには権限 を含むロールをサービスアカウントに付与できますcontainer.clusters.get
。この権限を提供する最小権限の IAM ロールは ですroles/container.clusterViewer
。詳細については、ドキュメントをご覧ください。サービス アカウントを理解するセクションサービスアカウントへのアクセスを許可する。
サービスアカウントに必要な権限がすべてある場合あなたは問題レポートでGoogle パブリック問題トラッカーまたは到達するGoogle Cloud サポート。