【问题标题】:Kubernetes cluster certificate authority on DigitalOceanDigitalOcean 上的 Kubernetes 集群证书颁发机构
【发布时间】:2019-12-24 16:47:04
【问题描述】:

我正在尝试配置 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 批准用户签名请求:

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

【问题讨论】:

标签: kubernetes openssl certificate digital-ocean rbac


【解决方案1】:

您可以使用集群中的内置 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”)

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

【讨论】:

    猜你喜欢
    • 2014-12-26
    • 2018-06-19
    • 2012-04-18
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    相关资源
    最近更新 更多