k8s创建kubeconfig文件用于认证

这里有个需求在jenins做cd的时候需要用helm进行发布,但是默认的权限比较大,可以控制整个集群如果将默认权限配置到jenkins上,那么jenkins将拥有全部的集群权限,而jenkins的管理员又并非仅掌握在自己手里,这样就会有很大的漏洞,如果有人蓄意破坏的话,可以瞬间搞挂整个集群,所以这里创建了仅用于单个namespace环境的kubeconfig权限,供jenkins使用,这样可以将损失降低

1,创建一个sa账户

kubectl create serviceaccount helm-test-bmsk-admin -n test-bmsk

2,通过rolebinding给账户绑定一个admin的权限

kubectl create rolebinding helm-test-bmsk-admin --clusterrole=admin --serviceaccount=test-bmsk:helm-test-bmsk-admin -n test-bmsk

3,创建集群认证的kubeconfig文件

设置集群参数
 export KUBE_APISERVER="https://10.88.10.17:60002"
 kubectl config set-cluster kubernetes \
 --certificate-authority=/etc/kubernetes/ca.crt \
 --embed-certs=true \
 --server=https://10.88.10.17:60002 \
 --kubeconfig=./helm-test-bmsk-admin.kubeconfig

 设置客户端认证参数
 ADMIN_TOKEN=$(kubectl get secret helm-test-bmsk-admin-token-84gd6 -n test-bmsk -o jsonpath={.data.token} |base64 -d)
 kubectl config set-credentials helm-test-bmsk-admin \
 --token= ${ADMIN_TOKEN}\
 --kubeconfig=./helm-test-bmsk-admin.kubeconfig

 设置上下文参数
 kubectl config set-context helm-test-bmsk-admin \
 --cluster=kubernetes \
 --user=helm-test-bmsk-admin \
 --namespace=test-bmsk \
 --kubeconfig=./helm-test-bmsk-admin.kubeconfig

 设置默认上下文
 kubectl config use-context helm-test-bmsk-admin --kubeconfig=./helm-test-bmsk-admin.kubeconfig

4,测试kubeconfig,会发现仅能看到自己权限以内的pod信息

kubectl --kubeconfig helm-test-bmsk-admin.kubeconfig get pod
此条目发表在kubernetes分类目录。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。