侧边栏壁纸
博主头像
小续的成长时光 博主等级

行动起来,活在当下

  • 累计撰写 21 篇文章
  • 累计创建 14 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

k8s kubeconfig配置及对普通用户进行权限配置

小续
2024-05-14 / 0 评论 / 2 点赞 / 67 阅读 / 0 字 / 正在检测是否收录...

k8s kubeconfig配置及对普通用户进行权限配置

1、给现有kubeconfig中添加集群

 # 设置集群信息
 ##注意:以下证书用的是k8s server的ca证书
 kubectl config  --kubeconfig=./config-test set-cluster {{clusterName}} --embed-certs=true --certificate-authority=/var/lib/rancher/k3s/server/tls/server-ca.crt
 
 # 设置user信息
 ##注意:以下证书用的都是客户端用户对应的证书及密钥
 kubectl config  --kubeconfig=./config-test  set-credentials {{userName}} --client-certificate=/var/lib/rancher/k3s/server/tls/client-admin.crt --client-key=/var/lib/rancher/k3s/server/tls/client-admin.key --embed-certs=true
 
 # 设置上下文
 kubectl config  --kubeconfig=./config-test set-context {{userName}}@{{clusterName}} --cluster={{clusterName}} --user=admin@{{userName}}

2、授权kubectl用户能查看所有名称空间的pod的权限

2.1、在k8s集群中添加用户及认证

  • 添加用户ssl认证文件
 # 生成私钥文件
 (umask 077; openssl genrsa -out getpod.key 2048) 
 ​
 # 生成证书请求文件
 ## 注意:这里的 CN 才是真正的用户名
 openssl req -new -key getpod.key -out getpod.csr -subj "/CN=getpod"
 ​
 # 生成证书文件
 openssl x509 -req -in getpod.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out getpod.crt -days 3650
 ​
   -CA     使用k8s集群server的ca证书文件
   -CAkey  使用k8s集群server ca证书的密钥文件
  • 使用以上授权文件添加新的kubeconfig配置文件
 # 设置集群信息
 ##注意:以下证书用的是k8s server的ca证书
 kubectl config  --kubeconfig=./config-test set-cluster kubernetes-128 --embed-certs=true --certificate-authority=/etc/kubernetes/pki/ca.crt
 ​
 # 设置user信息
 ##注意:以下证书用的都是客户端用户对应的证书及密钥
 ##注意:这里的username必须和上面证书请求时的 CN 相同
 kubectl config  --kubeconfig=./config-test set-credentials getpod --client-certificate=getpod.crt --client-key=getpod.key --embed-certs=true
 ​
 # 设置上下文
 kubectl config  --kubeconfig=./config-test set-context getpod@kubernetes-128 --cluster=kubernetes-128 --user=getpod
 ​
 # 编辑config-test文件
 [root@128-master tmp]# cat config-test 
 apiVersion: v1
 clusters:
 - cluster:
     certificate-authority-data: {省略}
     server: https://192.168.1.20:6443  #编辑这里,填写自己集群的apiserver地址
   name: kubernetes-128
 contexts:
 - context:
     cluster: kubernetes-128
     user: test
   name: test@kubernetes-128
 current-context: ""
 kind: Config
 preferences: {}
 users:
 - name: test
   user:
     client-certificate-data: {省略}
     client-key-data: {省略}

2.2、给新用户授权

 # 编辑配置文件,创建一个拥有所有名称空间下pod查看权限的clusterrole
 [root@xianchaomaster1 sa]# vim getpod-clusterrole.yaml
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRole
 metadata:
   name: getpod-clusterrole
 rules:
 - apiGroups: [""]
   resources: ["pods"]
   verbs: ["get", "list", "watch"]
 ​
 # 应用配置文件
 [root@xianchaomaster1]# kubectl apply -f getpod-clusterrole.yaml
 ​
 # 创建一个 clusterrolebinding 进行授权
 [root@xianchaomaster1]# kubectl create clusterrolebinding getpod --clusterrole=getpod-clusterrole --user=getpod

2.3、使用新的kubeconfig文件访问集群

 # 添加一个 getpod 的普通用户
 useradd getpod
 mkdir /home/getpod/.kube
 cp config-test /home/getpod/.kube/config
 chown -R getpod:getpod /home/getpod/.kube
   
 # 测试查看集群pod
 su  - getpod
 kubectl config use-context getpod@kubernetes-128
 kubectl get pods -A

3、在 test 名称空间下给用户授予管理员权限

3.1、在k8s集群中添加用户及认证

  • 添加用户ssl认证文件
 # 生成私钥文件
 (umask 077; openssl genrsa -out admin.key 2048) 
 
 # 生成证书请求文件
 ## 注意:这里的 CN 才是真正的用户名
 openssl req -new -key admin.key -out admin.csr -subj "/CN=admin"
 
 # 生成证书文件
 openssl x509 -req -in admin.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out admin.crt -days 3650
 
   -CA     使用k8s集群server的ca证书文件
   -CAkey  使用k8s集群server ca证书的密钥文件
  • 使用以上授权文件添加新的kubeconfig配置文件
 # 设置集群信息
 ##注意:以下证书用的是k8s server的ca证书
 kubectl config  --kubeconfig=./config-test set-cluster kubernetes-128 --embed-certs=true --certificate-authority=/etc/kubernetes/pki/ca.crt
 
 # 设置user信息
 ##注意:以下证书用的都是客户端用户对应的证书及密钥
 ##注意:这里的username要和上面证书请求时的 CN 相同
 kubectl config  --kubeconfig=./config-test set-credentials admin --client-certificate=admin.crt --client-key=admin.key --embed-certs=true
 
 # 设置上下文
 kubectl config  --kubeconfig=./config-test set-context admin@kubernetes-128 --cluster=kubernetes-128 --user=admin
 
 # 编辑config-test文件
 [root@128-master tmp]# cat config-test 
 apiVersion: v1
 clusters:
 - cluster:
     certificate-authority-data: {省略}
     server: https://192.168.1.20:6443  #编辑这里,填写自己集群的apiserver地址
   name: kubernetes-128
 contexts:
 - context:
     cluster: kubernetes-128
     user: test
   name: test@kubernetes-128
 current-context: ""
 kind: Config
 preferences: {}
 users:
 - name: test
   user:
     client-certificate-data: {省略}
     client-key-data: {省略}

3.2、给新用户授权

 # 创建一个 clusterrolebinding 进行授权
 [root@128-master tmp]# kubectl create ns test
 [root@128-master tmp]# kubectl -n test create rolebinding admin --clusterrole=cluster-admin --user=admin

3.3、使用新的kubeconfig文件访问集群

 # 添加一个 admin的普通用户
 useradd admin
 mkdir /home/admin/.kube
 cp config-test /home/admin/.kube/config
 chown -R admin:admin /home/admin/.kube
   
 # 测试
 su  - admin
 kubectl config use-context admin@kubernetes-128
 kubectl get rolebinding -n test
2

评论区