Terraform を使用して k8s クラスターをデプロイしようとしています。k8s クラスターのデプロイは正常に機能しますが、terraform が構成のポッド セキュリティ ポリシー部分を実行しようとすると、次のようなエラーが返されます。
clusterroles.rbac.authorization.k8s.io "clusterrole" is forbidden: user "<ServiceAccountID>" (groups=["system:authenticated"]) is attempting to grant RBAC permissions not currently held:
│ {APIGroups:["policy"], Resources:["podsecuritypolicies"], ResourceNames:["vseca-psp"], Verbs:["use" "get" "list" "watch" "create" "update" "patch" "delete"]}
ServiceAccountID
上記のエラーで使用されているサービス アカウントを知っています。ただし、ポッド セキュリティ ポリシーとその他の k8s リソースを作成する権限を持つ別のサービス アカウントを作成しました。impersonate_service_account
ブロックへのアクセス許可を持つ新しく作成されたサービス アカウントを使用しようとしていmodule gke
ます。
module "gke" {
...
impersonate_service_account = "<ServiceAccountEmail>"
...
これは、なりすましを依頼したサービス アカウントを使用していないようです。代わりに、上記のエラーで返されたサービス アカウントを使用し続けます。
注:ここに示すように、terraform kubernetes エンジン モジュールを使用しています。