AWS EKS中编辑默认view ClusterRole的修改未持久化如何解决?
EKS默认view ClusterRole修改后自动消失的解决方案
问题原因
默认view ClusterRole有两个特性导致手动修改被自动覆盖:
- 元数据携带
rbac.authorization.kubernetes.io/autoupdate: "true"注解和kubernetes.io/bootstrapping: rbac-defaults标签,EKS的控制面组件会定期重置这些内置默认RBAC角色的配置,手动修改的规则会被清空。 - 该角色使用了Kubernetes RBAC的聚合规则(
aggregationRule字段),本身的权限规则是自动聚合所有带rbac.authorization.k8s.io/aggregate-to-view: "true"标签的ClusterRole的规则,不需要直接修改它本身的rules字段。
正确添加自定义权限的步骤
1. 创建独立的聚合用ClusterRole
新建YAML文件(比如argocd-view-aggregate.yaml),内容如下:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: argocd-view-aggregate labels: # 该标签会让当前ClusterRole的规则自动聚合到默认view角色中 rbac.authorization.k8s.io/aggregate-to-view: "true" # 如需同时让edit、admin角色也继承该权限,可添加对应标签,不需要则删除 # rbac.authorization.k8s.io/aggregate-to-edit: "true" # rbac.authorization.k8s.io/aggregate-to-admin: "true" rules: - apiGroups: - argoproj.io resources: - applications # 注意:Argo CD的Application资源是复数形式,单数配置不会生效 verbs: - get - list - watch
2. 应用配置
执行命令创建资源:kubectl apply -f argocd-view-aggregate.yaml
3. 验证配置生效
执行命令查看view角色的权限,确认argoproj.io相关规则已经被自动聚合进去:kubectl describe clusterrole view
注意事项
- 不要直接修改EKS内置的默认RBAC角色,即使临时修改了autoupdate注解,在EKS版本升级时仍可能被覆盖,聚合规则是Kubernetes官方推荐的扩展默认角色的标准方案。
- 资源名称要核对正确,避免拼写错误导致权限不生效。
内容的提问来源于stack exchange,提问作者DmitrySemenov
相关产品推荐
相关产品推荐

