DigitalOcean 上的 Kubernetes 集群证书颁发机构

Kubernetes cluster certificate authority on DigitalOcean

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

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

Locate your Kubernetes cluster certificate authority (CA). This will be responsible for approving the request and generating the necessary certificate to access the cluster API. Its location is normally /etc/kubernetes/pki/. In the case of Minikube, it would be ~/.minikube/. Check that the files ca.crt and ca.key exist in the location.

所以我需要运行命令:

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 批准证书签名请求?

您可以在集群中使用内置 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. 您现在可以使用客户端-key.pem和client.pem构建一个 kubeconfig
  8. 然后您可以在分配给您的集群上创建 RBAC 角色绑定 –user=example-user 或 –group=example-user(假设您使用 “O”:本例中定义了“example-user”)

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