用户管理

用户管理

创建用户

要在 Kubernetes 上创建一个用户,我们需要为该用户生成一个 CSR(证书签名请求)。我们要使用的用户是 linuxtips 作为例子。

$ openssl req -new -newkey rsa:4096 -nodes -keyout linuxtips.key -out linuxtips.csr -subj "/CN=linuxtips"

$ cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
  name: linuxtips-csr
spec:
  groups:
  - system:authenticated
  request: $(cat linuxtips.csr | base64 | tr -d '\n')
  usages:
  - client auth
EOF

要查看创建的 CSR,请使用以下命令。

$ kubectl get csr

# The CSR must have the status Pending, we will approve it
$ kubectl certificate approve linuxtips-csr

现在证书已经被集群的证书颁发机构(CA)签署,我们将使用下面的命令来获取签署的证书。

$ kubectl get csr linuxtips-csr -o jsonpath='{.status.certificate}' | base64 --decode > linuxtips.crt

这将是必要的配置 kubeconfig 的文件指的是集群的 CA,为了获得它,我们将提取它从 kubeconf 当前我们正在使用的。

$ kubectl config view -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' --raw | base64 --decode - > ca.crt

一旦完成,我们将为新用户设置我们的 kubeconfig。

$ kubectl config set-cluster $(kubectl config view -o jsonpath='{.clusters[0].name}') --server=$(kubectl config view -o jsonpath='{.clusters[0].cluster.server}') --certificate-authority=ca.crt --kubeconfig=linuxtips-config --embed-certs

# Now setting the confs of user key:
$ kubectl config set-credentials linuxtips --client-certificate=linuxtips.crt --client-key=linuxtips.key --embed-certs --kubeconfig=linuxtips-config

# Now let's define context linuxtipsand then we will use it:
$ kubectl config set-context linuxtips --cluster=$(kubectl config view -o jsonpath='{.clusters[0].name}')  --user=linuxtips --kubeconfig=linuxtips-config
$ kubectl config use-context linuxtips --kubeconfig=linuxtips-config

# test
$ kubectl version --kubeconfig=linuxtips-config