kubernetes - 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 批准证书签名请求?
解决方案
您可以使用集群中的内置 CA 来创建客户端证书。
有关如何使用 CA 的背景信息:cluster-administration-certificates。
重现步骤:
- 确保您已创建 JSON 用户配置文件
示例 JSON 文件:
{
"CN": "example-user",
"key": {
"algo": "rsa",
"size": 4096
},
"names": [{
"O": "example-user",
"email": "some@email"
}]
}
- 为其生成 CSR
- 使用 kubectl 命令提交 CSR
- 请求字段是您的 csr 文件的 base64 编码版本
- 查看您的 CSR,执行命令:
kubectl get csr
- 批准 CSR,执行命令:
kubectl certificate approve example-user
- 解码证书,执行命令:
kubectl get csr example-user -o jsonpath='{.status.certificate}' | base64 -d > client.pem
- 您现在可以使用 client-key.pem 和 client.pem 来构建 kubeconfig
- 然后,您可以在集群上创建 RBAC 角色绑定,分配给 –user=example-user 或 –group=example-user(假设您使用“O”:本示例中定义了“example-user”)
在这里您可以找到更多信息:证书。
推荐阅读
- excel - 根据从另一个工作表转置的公式中的值自动隐藏/取消隐藏列
- javascript - 如何将一个大字符串编码为一个小字符串,然后在 JavaScript 中再次解码?
- javascript - 如何获取 role="presentation" 元素?
- python - 列表索引必须是整数或切片,而不是 str - 将 JSON 文件添加到 MongoDB
- android - camera2 如何从图像读取器侦听器中的 YUV_420_888 图像中获取 Exif 数据
- google-cloud-firestore - 如何使用 Cloud Functions 写入 Firestore 集合中的所有文档?
- java - 尤里卡客户端无法向尤里卡服务器注册服务
- java - OpenCV 无法正确识别使用 hog 和 svm
- push-notification - 如何在 ionic 4 中自定义 firebase 推送通知?
- php - 删除数组中的重复值