如何创建自定义权限的kubeconfig
- 人工智能
- 2025-09-02 13:00:02

如何创建自定义权限的kubeconfig 有些小伙伴问如何做自定义权限的kubeconfig首先看下我们怎么了解我们控制的权限的api以及涉及的资源和动作权限从哪里可以轻松查看了解了上面的,接下来就简单了,和简单的授权流程一致1、创建一个账户2、创建想要的角色或集群角色3、将账户绑定到创建的角色或集群级别角色4、创建这个账户的kubeconfig 有些小伙伴问如何做自定义权限的kubeconfig
这里就用通俗的语言简单描述下如何做一个符合自己权限需求的kubeconfig方便权限控制等等。
首先看下我们怎么了解我们控制的权限的api以及涉及的资源和动作权限从哪里可以轻松查看使用命令kubectl api-resources -o wide
# kubectl api-resources -o wide NAME SHORTNAMES APIVERSION NAMESPACED KIND VERBS CATEGORIES bindings v1 true Binding create componentstatuses cs v1 false ComponentStatus get,list configmaps cm v1 true ConfigMap create,delete,deletecollection,get,list,patch,update,watch上面的输出中: NAME字段就是对应的resources,如configmaps,对应权限设置中就是resources:configmaps APIVERSION字段就对应我们权限设置中apiGroups,如v1对应的就是apiGroups:“”,如果是apps/v1就对应apiGroups:“apps”,v1不写 NAMESPACED字段如果是true,做非全局的权限就需要注意 VERBS字段就对应了相应的动作权限,如输出内容的configmaps的VERBS就对应create,delete,deletecollection,get,list,patch,update,watch这些动作
了解了上面的,接下来就简单了,和简单的授权流程一致1、创建一个账户 2、创建一个又特定权限集的角色或集群级别角色 3、将账户绑定到创建的角色或集群级别角色 4、创建这个账户的kubeconfig
下面一步一步来实现
1、创建一个账户在你需要的ns创建你定义的名字的serviceaccounts
kubectl create sa xxxxx -n xxxxx这里注意1.24后需要自己给sa手动创建token,如果是1.24前的版本会自动生成,这里针对1.24后的给个yaml样例
apiVersion: v1 kind: Secret type: kubernetes.io/service-account-token metadata: name: my-sa-token namespace: xxxxx annotations: kubernetes.io/service-account.name: "my-sa"使用kubectl去apply下手动建sa的token
2、创建想要的角色或集群角色这里给个集群角色的yaml样例
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: myclusterrole annotations: labels: rules: - apiGroups: - "*" #如果*就是所有 resources: - "*" #如果*就是所有 verbs: - list - get - watch - apiGroups: - apps resources: - deployments verbs: - list - get - watch - patch这个文件apply后就是创建了一个叫myclusterrole的集群角色对所有资源都有list get watch的权限,对deployments还额外拥有patch权限。 其实你这里如果少给了权限,在你使用创建的kubecong去执行相应命令时也会有具体的提示。
3、将账户绑定到创建的角色或集群级别角色这里也给出一个将sa绑定到集群级别角色的yaml样例
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: myclusterrolebinding annotations: labels: subjects: - kind: ServiceAccount name: xxx namespace: xxxxx roleRef: kind: ClusterRole name: myclusterrole apiGroup: rbac.authorization.k8s.io 4、创建这个账户的kubeconfig #获取集群ca证书 kubectl get secret my-sa-token -n xxxx -oyaml |grep ca.crt: | awk '{print $2}' |base64 -d > ca.crt #给kubeconfig设置访问集群 kubectl config set-cluster xxxxxx --server= xxxxxx:6443 --certificate-authority=ca.crt --embed-certs=true --kubeconfig=xxxxx.config #获取所创sa的token,或者用第二条命令直接把值赋给变量token kubectl describe secret my-sa-token -n xxxxxx | awk '/token:/{print $2}' token=$(kubectl describe secret my-sa-token -n xxxxx | awk '/token:/{print $2}') #给kubeconfig设置用户 kubectl config set-credentials sa的名字 --token=$token --kubeconfig=xxxxx.config #给kubeconfig设置上下文 kubectl config set-context sa的名字@集群名 --cluster=集群名 --user=sa的名字 --kubeconfig=xxxxx.config #给kubeconfig设置当前上下文 kubectl config use-context sa的名字@集群名 --kubeconfig=xxxxxconfig #好了可以拿着xxxxxconfig去测试权限是否符合你需求了如何创建自定义权限的kubeconfig由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“如何创建自定义权限的kubeconfig”