You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置K8s ServiceAccount读取ClusterRoles?部署ingress-nginx遇权限问题

解决Jenkins部署ingress-nginx Helm chart的ClusterRole权限问题

我在容器中运行Jenkins,尝试向Kubernetes 1.25.4集群部署ingress-nginx Helm chart。已经为Jenkins创建了ServiceAccount,目前能通过其token列出所有命名空间的Pod,但部署Helm chart时触发权限错误:

Error from server (Forbidden): clusterroles.rbac.authorization.k8s.io is forbidden: User "system:serviceaccount:devops-tools:jenkins-admin" cannot list resource "clusterroles" in API group "rbac.authorization.k8s.io" at the cluster scope

当前使用的RBAC配置

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: jenkins-admin
rules:
  - apiGroups: [""]
    resources: ["*"]
    verbs: ["*"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-admin
  namespace: devops-tools

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: jenkins-admin
subjects:
- kind: ServiceAccount
  name: jenkins-admin
  namespace: devops-tools

解决方案

当前ClusterRole仅覆盖了核心API组("")的所有权限,缺少rbac.authorization.k8s.io API组中clusterroles资源的操作权限。需要扩展ClusterRole规则,添加对应权限:

修改后的完整RBAC配置:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: jenkins-admin
rules:
  # 保留原核心API组的全权限
  - apiGroups: [""]
    resources: ["*"]
    verbs: ["*"]
  # 新增rbac API组的clusterroles资源权限,verbs可根据实际需求调整
  - apiGroups: ["rbac.authorization.k8s.io"]
    resources: ["clusterroles"]
    verbs: ["list", "get", "watch"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-admin
  namespace: devops-tools

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: jenkins-admin
subjects:
- kind: ServiceAccount
  name: jenkins-admin
  namespace: devops-tools

权限验证

执行以下命令确认权限是否配置成功:

kubectl auth can-i get clusterroles --as=system:serviceaccount:devops-tools:jenkins-admin -A

返回yes即表示权限生效,可重新尝试部署Helm chart。

内容的提问来源于stack exchange,提问作者mr.Gray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:45:47