返回

Kubernetes创建普通用户kubeconfig

Kubernetes创建普通用户kubeconfig

提供kubernetes集群管理权限的方式包括使用kubeconfig以及serviceaccount,其中kubeconfig常用于在集群外部使用kubectl对集群进行调用。

这里记录一下创建kubeconfig的方法。

创建私钥

这里以创建用户myuser为例

openssl genrsa -out myuser.key 2048
openssl req -new -key myuser.key -out myuser.csr

其中Organization Name表示用户所属的组,Common Name为用户

创建CertificateSigningRequest

需要使用kubectl创建证书签名请求

cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: myuser
spec:
  request: <CSR 文件内容的 base64 编码值。 要得到该值,可以执行命令 cat myuser.csr | base64 |>
  signerName: kubernetes.io/kube-apiserver-client
  usages:
  - client auth
EOF

通过kubectl创建了myuser用户的证书签发请求

批准证书

查看当前的证书签名请求

kubectl get csr

批准请求

kubectl certificate approve myuser

获取证书

将证书输出到myuser.crt中

kubectl get csr myuser -o jsonpath='{.status.certificate}'| base64 -d > myuser.crt

创建角色和角色绑定

如果是集群范围使用ClusterRole和ClusterRoleBinding,命名空间的使用Role和RoleBinding

将用户myuser和Role绑定。

添加到kubeconfig

# 添加用户凭据
kubectl config set-credentials myuser --client-key=myuser.key --client-certificate=myuser.crt --embed-certs=true
# 设置上下文
kubectl config set-context myuser --cluster=kubernetes --user=myuser
# 使用上下文
kubectl config use-context myuser

这里上下文的集群kubernetes需要替换成自己的集群