K8S集群创建用户并赋权访问特定namespace
说明
具体参考K8S集群创建用户并赋权访问特定namespace
这里主要提供脚本。
创建用户以及配置环境
在任意目录编辑create.sh
# 创建wcuser1的key
openssl genrsa -out wcuser1.key 2048
openssl req -new -key wcuser1.key -out wcuser1.csr -subj "/CN=wcuser1"
openssl x509 -req -in wcuser1.csr -CA /opt/cluster/ssl/rootca/rootca.pem -CAkey /opt/cluster/ssl/rootca/rootca-key.pem -CAcreateserial -out wcuser1.crt -days 365
openssl x509 -in wcuser1.crt -text -noout
# 更改集群配置和用户上下文环境
## 设置集群
kubectl config set-cluster wecloud-dev-cluster --server=https://xxx.xxx.xxx.xxx:6443 --certificate-authority=/opt/cluster/ssl/rootca/rootca.pem --embed-certs=true
## 为wcuser1用户项设置基础认证选项
kubectl config set-credentials wcuser1 --client-certificate=/opt/wecloud/dev/config/user/wcuser1.crt --client-key=/opt/wecloud/dev/config/user/wcuser1.key --embed-certs=true
## 设置上下文
kubectl config set-context wcuser@wecloud-dev --cluster=wecloud-dev-cluster --user=wcuser1 --namespace=wecloud-dev
## 切换到wcuser@wecloud-dev环境
kubectl config use-context wcuser@wecloud-dev
执行该脚本之前需要先创建wecloud-dev命名空间。
执行完脚本后,k8s的上下文环境已经切换到wcuser@wecloud-dev,可以使用kubectl get pods,svc等命令去验证。
没赋权状态下,pod、service等信息都无法获取,需要进行授权。
授权
k8s需要先切换回到管理员身份,编辑wecloud-dev.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: wecloud-dev
name: wecloud-dev-role
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: wecloud-dev-rolebinding
namespace: wecloud-dev
subjects:
- kind: User
name: wcuser1
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: wecloud-dev-role
apiGroup: rbac.authorization.k8s.i
这里对该namespace下所有的资源都可以进行操作。
执行kubectl apply -f wecloud-dev.yaml即可完成授权。
导出config配置文件
如果需要提供给外部使用该namespace的配置文件,可以执行以下脚本
server=https://xxx.xxx.xxx.xxx:6443
namespace=wecloud-dev
cluster_ca=$(cat /opt/cluster/ssl/rootca/rootca.pem |base64 -w 0)
user_ca=$(cat wcuser1.crt | base64 -w 0)
token=$(cat wcuser1.key | base64 -w 0)
echo "apiVersion: v1
kind: Config
clusters:
- name: wecloud-dev-cluster
cluster:
certificate-authority-data: ${cluster_ca}
server: ${server}
contexts:
- name: wcuser@wecloud-dev
context:
cluster: wecloud-dev-cluster
namespace: ${namespace}
user: wcuser1
current-context: wcuser@wecloud-dev
users:
- name: wcuser1
user:
client-certificate-data: ${user_ca}
client-key-data: ${token}
"> wecloud-dev.kubeconfig
wecloud-dev.kubeconfig文件就是提供操作该namespace的配置文件。

浙公网安备 33010602011771号