事象
Pod(TektonTrigger)を起動した際に以下ログが出力して権限エラーのリスタートが起きている。
$ kubectl get pod NAME READY STATUS RESTARTS AGE tt-test-664dcbd49d-jd2wx 0/1 Running 3 Xs
尚Podのログを確認するとServiceAccountに付与している権限が不足しているエラーメッセージが表示された。
$ kubectl logs tt-test-664dcbd49d-jd2wx ... E0711 02:02:03.779401 1 reflector.go:127] runtime/asm_amd64.s:1371: Failed to watch *v1alpha1.ClusterInterceptor: failed to list *v1alpha1.ClusterInterceptor: clusterinterceptors.triggers.tekton.dev is forbidden: User "system:serviceaccount:default:test-sa" cannot list resource "clusterinterceptors" in API group "triggers.tekton.dev" at the cluster scope E0711 02:02:03.779545 1 reflector.go:127] runtime/asm_amd64.s:1371: Failed to watch *v1alpha1.ClusterTriggerBinding: failed to list *v1alpha1.ClusterTriggerBinding: clustertriggerbindings.triggers.tekton.dev is forbidden: User"system:serviceaccount:default:test-sa" cannot list resource "clustertriggerbindings" in API group "triggers.tekton.dev" at the cluster scope ...
環境情報
- v1.20.8+IKS
- tektoncd/triggers/cmd/interceptors:v0.14.2
対応策
上記メッセージから同Podに対して以下のビュー権限が不足している。
- clustertriggerbindings.triggers.tekton.dev
- clusterinterceptors.triggers.tekton.dev
Podにはtest-saというServiceAccountを付与しているので新たに以下のClusterRoleを作成し
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: tt-clusterrole rules: - apiGroups: ["triggers.tekton.dev"] resources: ["clustertriggerbindings", "clusterinterceptors"] verbs: ["get", "list", "watch"]
元々存在するServiceAccountに紐付けるClusterRoleBindingを生成した。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: tt-clusterbinding subjects: - kind: ServiceAccount name: test-sa namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: tt-clusterrole
以下、補足です。
補足
TektonのEventListenersはclustertriggerbindings等の情報を取得する必要があるのか同Podの起動時に上記エラーが出ていました。しかしPodに付与しているServiceAccountに解決策の更新をかけるとPodは展開されてEventListnerも確認できました。
$ kubectl get eventlistener NAME ADDRESS AVAILABLE REASON READY REASON build-deploy-pipeline-listener http://tt-test-664dcbd49d-jd2wx.default.svc.cluster.local:8080 True MinimumReplicasAvailable True
以上、権限エラーの対応としてご参考になれば幸いです。