質問: kubernetesとgcloud:サービスアカウントの使用を停止する方法は? 私は多くのgooglecloudservicesを使用しています。私が働いているクラウドストレージバケットのいくつかは、自分のアカウントからアクセスできるプロジェクトaにあり、いくつかは、サービスアカウントでのみアクセスできるプロジェクトbにあります。適切なサービスアカウントを有効にしましたgcloud auth activate-service-account --key-file mykey.jsonその後のログイン時に使用したgcloud config set account service_accountまた、コマンドを使用したアクティブなプロジェクトを切り替える必要がありましたgcloud config set project project-bサービスアカウントは完全に機能し、google cloud storageに保存されている特定のビットバケットにアクセスできましたが、その後、argoを使用してkubernetesワークフローを送信する必要があったため、アカウントに戻ってコマンドを使用してプロジェクトを作成しましたgcloud config set account my_account gcloud config set project project-a 「gcloudauthlist」を使用すると、my_accountがアクティブであることがわかりますactive account service_account.iam.gserviceaccount.com * my_account しかし、「kubectl -n default get services」を実行して送信しようとすると、次のエラーが発生しました。error from server (forbidden): services is forbidden: user "service_account.iam.gserviceaccount.com" cannot list resource "services" in api group "" in the namespace "default": required "container.services.list" permission. デフォルトではなくmy_namespaceを使用すると、同じエラーが発生します。 「gsutills」のようなgcloudコマンドは、正しいアカウントとプロジェクトにいるかのように機能するため、これにはかなり混乱しています。 kubernetesがまだサービスアカウントを使用していると見なすのはなぜですか。また、kubernetesで必要なことを再度実行できるように、サービスアカウントの使用を停止するにはどうすればよいですか。私が実行しようとしているコマンドとパイプラインは、サービスアカウントをアクティブ化する前に完全に正常に機能しました。
回答: 実行する必要があったことがわかりましたgcloud container clusters get-credentials mycluster当初、~/.kube/configでkubeconfigファイルを削除してからget-credentialsコマンドを実行することでこれを修正する必要があると思いましたが、コメントで指摘されているように、get-credentialsコマンドがすべてであることがわかりました必要でした。この問題は、gcloudサービスアカウントがアクティブなときにargoコマンドを実行すると明らかになります。コマンドは最初に失敗し、その後のすべてのkubectlコマンドはこの権限エラーを返します。サービスアカウントに切り替えてgcloudコマンドを実行してからアカウントに戻した場合、kubectlの動作には影響しません。