• 开发
  • 怎么添加预制的集群角色?

KubeSphere版本信息: v3.3.1

最近接到个需求,需要精细化kubesphere的权限管理,具体是要添加下面两个角色:
**运维人员:**对所有命名空间下控制台可见资源的读写权限,对集群节点、存储卷、命名空间、配额的只读权限。

**SDE 开发:**对所有命名空间 Pod/Service/cluster.kubesphere.io/v1alpha1 以及 vela-system 命名空间下的 Secret 读权限

我参考了cluster-admin的定义,创建了一个basic-developer的role-template和集群角色

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  annotations:
    iam.kubesphere.io/module: Access Control
    iam.kubesphere.io/role-template-rules: '{"customresources": "view"}'
    kubesphere.io/alias-name: Cluster Developer
  labels:
    iam.kubesphere.io/role-template: "true"
  name: role-template-cluster-basic-developer
rules:
- apiGroups: [""]
  resources: ["pods", "services","secrets"]
  verbs: ["get", "list", "watch"]
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-basic-developer
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  annotations:
    iam.kubesphere.io/aggregation-roles: >
      ["role-template-cluster-basic-developer"]
    kubesphere.io/creator: system
    rbac.authorization.kubernetes.io/autoupdate: "true"
rules: []

然后在页面可以看到可配置的权限选项:

但是配置完了并没有按照预期的结果控制权限,除了service之外所有资源都是不可见的。

问题:

  1. 我的配置方式是正确的吗?看了下相关的帖子,权限是通过role- template聚合的,这个template能自己定义吗?

  2. iam.kubesphere.io/role-template-rules: '{"customresources": "view"}'

    这个配置有什么作用?我不加这个,好像就看不到集群管理的界面

  3. role-template是怎么实现权限控制的?我看了下已经存在的template,发现他们的rules字段都是null,具体的权限控制是在哪实现的呢?

       apiVersion: rbac.authorization.k8s.io/v1
       kind: ClusterRole
       metadata:
         annotations:
           iam.kubesphere.io/dependencies: '["role-template-view-nodes"]'
           iam.kubesphere.io/module: Cluster Resources Management
           kubesphere.io/alias-name: Nodes Management
           iam.kubesphere.io/role-template-rules: '{"nodes": "manage"}'
         labels:
           iam.kubesphere.io/role-template: "true"
         name: role-template-manage-nodes
       rules: []

配置界面点确认,就会出现这个错误,role-template-view-basic not found,这个又是什么问题?