首页 > 解决方案 > DigitalOcean 上的 Kubernetes 集群证书颁发机构

问题描述

我正在尝试配置 RBAC 以添加具有有限访问权限的新用户。我正在关注本教程:https ://docs.bitnami.com/kubernetes/how-to/configure-rbac-in-your-kubernetes-cluster/#use-case-1-create-user-with-limited-命名空间访问

它要求我使用 Kubernetes CA 批准用户签名请求:

找到您的 Kubernetes 集群证书颁发机构 (CA)。这将负责批准请求并生成访问集群 API 所需的证书。它的位置通常是 /etc/kubernetes/pki/。对于 Minikube,它将是 ~/.minikube/。检查文件 ca.crt 和 ca.key 是否存在于该位置。

所以我需要运行命令:

openssl x509 -req -in employee.csr -CA CA_LOCATION/ca.crt -CAkey CA_LOCATION/ca.key -CAcreateserial -out employee.crt -days 500

但在 DigitalOcean 中,我无法访问 Kubernetes 内部(无法触摸节点液滴)。

是否可以使用 DigitalOcean 批准证书签名请求?

标签: kubernetesopensslcertificatedigital-oceanrbac

解决方案


您可以使用集群中的内置 CA 来创建客户端证书。

有关如何使用 CA 的背景信息:cluster-administration-certificates

重现步骤:

  1. 确保您已创建 JSON 用户配置文件

示例 JSON 文件:

{
    "CN": "example-user",
    "key": {
        "algo": "rsa",
        "size": 4096
    },
    "names": [{
        "O": "example-user",
        "email": "some@email"
    }]
}
  1. 为其生成 CSR
  2. 使用 kubectl 命令提交 CSR
  3. 请求字段是您的 csr 文件的 base64 编码版本
  4. 查看您的 CSR,执行命令:kubectl get csr
  5. 批准 CSR,执行命令:kubectl certificate approve example-user
  6. 解码证书,执行命令:kubectl get csr example-user -o jsonpath='{.status.certificate}' | base64 -d > client.pem
  7. 您现在可以使用 client-key.pem 和 client.pem 来构建 kubeconfig
  8. 然后,您可以在集群上创建 RBAC 角色绑定,分配给 –user=example-user 或 –group=example-user(假设您使用“O”:本示例中定义了“example-user”)

在这里您可以找到更多信息:证书


推荐阅读