AWS EKS集群部署GitLab Runner遇Events资源权限报错求助
GitLab Runner在EKS集群中的RBAC权限问题解决
问题描述
在AWS EKS集群部署GitLab Runner后,触发CI/CD流水线时出现如下权限错误:
ERROR: Error retrieving events list: events is forbidden: User "system:serviceaccount:gitlab-runner:default" cannot list resource "events" in API group "" in the namespace "gitlab-runner"
错误原因分析
从你提供的gitlab-runner-role.yaml文件来看,存在两个关键问题:
- 文件开头的
piVersion是拼写错误,正确写法应为apiVersion。这个错误会导致Kubernetes无法正确识别并创建Role资源,绑定的ServiceAccount自然无法获得对应权限。 - 需确认是否存在RoleBinding资源,将
gitlab-runner命名空间下的defaultServiceAccount与该Role绑定——即使Role配置正确,没有绑定关系的话,ServiceAccount依然无法获取权限。
解决步骤
修复Role配置文件的拼写错误
修改gitlab-runner-role.yaml,将piVersion改为apiVersion,修正后的文件内容如下:apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: gitlab-runner namespace: gitlab-runner rules: - apiGroups: [""] resources: ["pods", "pods/exec", "pods/log", "pods/attach", "secrets", "events"] verbs: ["list", "get", "watch", "create", "delete", "update"]重新应用Role配置
执行命令更新Role资源:kubectl apply -f gitlab-runner-role.yaml -n gitlab-runner创建或验证RoleBinding
如果还未创建RoleBinding,新建gitlab-runner-rolebinding.yaml文件,内容如下:apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: gitlab-runner namespace: gitlab-runner subjects: - kind: ServiceAccount name: default namespace: gitlab-runner roleRef: kind: Role name: gitlab-runner apiGroup: rbac.authorization.k8s.io执行命令应用配置:
kubectl apply -f gitlab-runner-rolebinding.yaml -n gitlab-runner验证权限是否生效
执行以下命令检查ServiceAccount是否拥有events的list权限:kubectl auth can-i list events -n gitlab-runner --as=system:serviceaccount:gitlab-runner:default返回
yes则说明权限配置正确,重新触发流水线即可。
内容的提问来源于stack exchange,提问作者M B
相关产品推荐
相关产品推荐

