kubernetes rabc 的sa创建并限制多个namespace

    技术2022-07-12  75

    在实际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

    Processed: 0.010, SQL: 9