允许“bob”用户访问的步骤如下:
通过 openssl 创建新的 CSR
openssl req -new -newkey rsa:4096 -nodes -keyout bob-k8s.key -out bob-k8s.csr -subj "/CN=bob/O=devops"
创建 Kubernetes CertificateSigningRequest 对象
利用
kubectl create –edit -f k8s-csr.yaml
你应该输入以下内容
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
name: bob-k8s-access
spec:
groups:
- system:authenticated
request: # replace with output from shell command: cat bob-k8s.csr | base64 | tr -d '\n'
usages:
- client auth
验证您的 CSR 对象
kubectl get csr
批准您的证书
kubectl certificate approve bob-k8s-access
验证 Bob 的证书
kubectl get csr bob-k8s-access -o jsonpath='{.status.certificate}' | base64 --decode > bob-k8s-access.crt
检索集群 CA 证书
kubectl config view -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' --raw | base64 --decode - > k8s-ca.crt
设置 Bob 的 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=k8s-ca.crt --kubeconfig=bob-k8s-config --embed-certs
在这个命令之后,bob-k8s-config
应该使用 Bob 的 .kube 配置创建一个文件
设置 Bob 的凭证访问
kubectl config set-credentials bob --client-certificate=bob-k8s-access.crt --client-key=bob-k8s.key --embed-certs --kubeconfig=bob-k8s-config
在您的配置中创建上下文
kubectl config set-context bob --cluster=$(kubectl config view -o jsonpath='{.clusters[0].name}') --namespace=<ns-for-bob> --user=bob --kubeconfig=bob-k8s-config
在命名空间内分配角色
kubectl create rolebinding bob-admin --namespace=<ns-for-bob> --clusterrole=admin --user=bob
有关权限的更多信息,请查看Kubernetes 配置页面
我已经从更详尽的本指南开始编写了此说明!