网站开发常用软件是什么,中国建设行业峰会网站,能做wordpress的网站,杭州网站推广服务需求#xff1a;
我作为Kubernetes的集群管理员#xff0c;前一段时间有收到一个需求#xff0c;需要我创建一个受限访问的用户kubeconfig#xff0c;提供给跳板机的某用户。 该kubeconfig需要在非Kubernetes节点的某跳板机上由指定的非root用户使用#xff0c;该用户仅能…需求
我作为Kubernetes的集群管理员前一段时间有收到一个需求需要我创建一个受限访问的用户kubeconfig提供给跳板机的某用户。 该kubeconfig需要在非Kubernetes节点的某跳板机上由指定的非root用户使用该用户仅能访问kubernetes集群中的某一个namespace下的资源仅对该namespace下的资源有完整的权限。
实现
前置条件登录到kubernetes的主节点上在主节点上做以下步骤。 第一步准备kubeconfig的模板文件命名为config-template以下有一些占位符等请注意
apiVersion: v1
clusters:
- cluster:certificate-authority-data: LS0tLS1CRUdJTiBDRVJ....server: http://your-addr-or-delegate-ip:6443name: kubernetes
contexts:
- context:cluster: kubernetesuser: $USERnamespace: $NAMESPACEname: $USERkubernetes
current-context: $USERkubernetes
kind: Config
preferences: {}
users:
- name: $USERuser:client-certificate-data: $USER_CERT client-key-data: $USER_KEY注意关于certificate-authority-data这部分此处为集群使用的CA证书不用做修改保持不变。
第二步准备用于限制权限的RBAC模板文件命名为rb-template同样有占位符请注意
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: $USER_NAME-adminnamespace: $NAMESPACE
subjects:- kind: Username: $USER_NAMEapiGroup: rbac.authorization.k8s.io
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: admin第三步准备用于生成kubeconfig的脚本该脚本会使用openssl结合主节点的CA证书和key生成签发kubeconfig所需的certificate和key替换第一步中的占位符等请仔细阅读后用root权限执行
#! /bin/bash
USER_NAMEyour_jumpserver_username #请手动更改此处
NAMESPACEyour_namespace #请手动更改此处openssl genrsa -out $USER_NAME.key 2048
openssl req -new -key $USER_NAME.key -out $USER_NAME.csr -subj /CN$USER_NAME
openssl x509 -req -in $USER_NAME.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out $USER_NAME.crt -days 3650yes | cp config-template config-$USER_NAME
yes | cp rb-template rb-$USER_NAME.yaml
USER_CERTopenssl base64 -A -in $USER_NAME.crt
USER_KEYopenssl base64 -A -in $USER_NAME.key#USER_CERT$(echo $USER_CERT)
#USER_KEY$(echo $USER_KEY)echo $USER_CERT | base64 -d
echo $USER_KEY | base64 -dsed -i s/\$USER_CERT/$USER_CERT/g config-$USER_NAME
sed -i s/\$USER_KEY/$USER_KEY/g config-$USER_NAME
sed -i s/\$USER/$USER_NAME/g config-$USER_NAME
sed -i s/\$NAMESPACE/$NAMESPACE/g config-$USER_NAME
sed -i s/\$USER/$USER_NAME/g rb-$USER_NAME.yaml
sed -i s/\$NAMESPACE/$NAMESPACE/g rb-$USER_NAME.yaml第四步经过以上三步会得到rb-xxx.yaml和config-xxx两个文件执行以下命令用于添加rolebinding的权限
kubectl apply -f rb-xxx.yaml第五步将config-xxx的文件拷贝到跳板机的指定用户的家目录下并放在.kube目录下改名为config以上四步均在kubernetes的主节点上执行该步骤需要在跳板机执行举例如下
mkdir -p /home/$USER_NAME/.kube
cp config-$USER_NAME /home/$USER_NAME/.kube/config上一篇K8S相关小技巧《三》 下一篇K8S相关小技巧《五》