0

我想访问在私有云中运行的外部 k8s 集群。你知道我怎样才能得到这些参数吗?我应该怎么做才能生成它们?

${CLIENT_CERTIFICATE_DATA} 假证书文件 假密钥文件

apiVersion: v1
kind: Config
clusters:
- cluster:
    certificate-authority-data: ${CLUSTER_CA}
    server: ${CLUSTER_ENDPOINT}
  name: ${CLUSTER_NAME}
users:
- name: ${USER}
  user:
    client-certificate-data: $**{CLIENT_CERTIFICATE_DATA}**
contexts:
- context:
    cluster: ${CLUSTER_NAME}
  user:
    client-certificate: **fake-cert-file**
    client-key: **fake-key-file**
  name: ${USER}-${CLUSTER_NAME}
current-context: ${USER}-${CLUSTER_NAME}
4

1 回答 1

1

允许“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 配置页面


我已经从更详尽的本指南开始编写了此说明!

于 2021-01-08T14:52:55.390 回答