kubernetes rabc 的sa創建並限制多個namespace

在實際k8s的應用中可能會限制用戶對namespace的訪問,一個賬號訪問多個namespaces 情況,經過測試後設置如下,

創建一個賬號,創建sa後系統會自動創建一個kubernetes.io/service-account-token類型的secret

kubectl create serviceaccount updateuser

綁定集羣權限,(分別綁定在兩個不通的namespaces,綁定哪個namesapce就有哪個namespace相應的權限)

kubectl create rolebinding updateuser --clusterrole=system:controller:deployment-controller --serviceaccount=default:updateuser --namespace=default
kubectl create rolebinding updateuser --clusterrole=system:controller:deployment-controller --serviceaccount=default:updateuser --namespace=kube-system

查看

[root@k8s-master01 rbac]# kubectl describe rolebinding updateuser
Name:         updateuser
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  system:controller:deployment-controller
Subjects:
  Kind            Name        Namespace
  ----            ----        ---------
  ServiceAccount  updateuser  default

查看建立的賬號

kubectl get secret
kubectl describe secret updateuser-token-jqxw7

創建一個集羣的配置文件

kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --server="https://192.168.0.16:6443" --embed-certs=true --kubeconfig=/tmp/updateuser.conf

查看創建賬號的token

D=$(kubectl get secret updateuser-token-jqxw7 -o jsonpath={.data.token}|base64 -d)

給配置文件def-ns-admin.conf添加token信息

kubectl config set-credentials updateuser --token=$D --kubeconfig=/tmp/updateuser.conf

給配置文件def-ns-admin.conf添加權限信息

kubectl config set-context updateuser@kubernetes --cluster=kubernetes --user=updateuser --kubeconfig=/tmp/updateuser.conf

給配置文件def-ns-admin.conf添加權限信息

kubectl config use-context updateuser@kubernetes --kubeconfig=/tmp/updateuser.conf

將文件拷貝到需要訪問的電腦上,進行測試即可

參考:https://www.cnblogs.com/kuku0223/p/10383063.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章