如何为 Cockroachdb 创建 Kubernetes 客户端证书签名请求
How to create a Kubernetes client certificate signing request for Cockroachdb
我正在使用的环境是一个安全集群运行cockroach/gke。
我有一个已批准的 default.client.root 证书,允许我使用 root 访问数据库,但我不明白如何为其他用户生成新的证书请求。我一遍又一遍地阅读了 cockroachDB 文档,它解释了如何在 ca.key 位置可访问的独立配置中手动生成用户证书,但没有具体说明如何在 Kubernetes 的上下文中执行此操作。
我认为图像 cockroachdb/cockroach-k8s-request-cert:0.3 是起点,但我不知道如何使用它。
任何指点将不胜感激。最终,我希望能够在使用 pg 客户端的同一个 Kubernetes 集群中使用来自 API 的证书。目前,它处于不安全模式,仅使用用户名和密码。
request-cert
作业用作 pod 的初始容器。它将使用 K8S CSR API.
请求客户端或服务器证书(服务器证书由 CockroachDB 节点请求)
您可以在 client-secure.yaml 中看到请求客户端证书然后由作业使用的示例。初始容器在您的普通容器之前 运行:
initContainers:
# The init-certs container sends a certificate signing request to the
# kubernetes cluster.
# You can see pending requests using: kubectl get csr
# CSRs can be approved using: kubectl certificate approve <csr name>
#
# In addition to the client certificate and key, the init-certs entrypoint will symlink
# the cluster CA to the certs directory.
- name: init-certs
image: cockroachdb/cockroach-k8s-request-cert:0.3
imagePullPolicy: IfNotPresent
command:
- "/bin/ash"
- "-ecx"
- "/request-cert -namespace=${POD_NAMESPACE} -certs-dir=/cockroach-certs -type=client -user=root -symlink-ca-from=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: client-certs
mountPath: /cockroach-certs
这将使用 K8S API 发送 CSR,等待批准,并将所有结果文件(客户端证书、客户端证书密钥、CA 证书)放入 /cockroach-certs
。如果证书已经作为 K8S 秘密存在,它会直接获取它。
您只需将 --user=root
更改为您要使用的用户名即可为任何用户申请证书。
我正在使用的环境是一个安全集群运行cockroach/gke。
我有一个已批准的 default.client.root 证书,允许我使用 root 访问数据库,但我不明白如何为其他用户生成新的证书请求。我一遍又一遍地阅读了 cockroachDB 文档,它解释了如何在 ca.key 位置可访问的独立配置中手动生成用户证书,但没有具体说明如何在 Kubernetes 的上下文中执行此操作。
我认为图像 cockroachdb/cockroach-k8s-request-cert:0.3 是起点,但我不知道如何使用它。
任何指点将不胜感激。最终,我希望能够在使用 pg 客户端的同一个 Kubernetes 集群中使用来自 API 的证书。目前,它处于不安全模式,仅使用用户名和密码。
request-cert
作业用作 pod 的初始容器。它将使用 K8S CSR API.
您可以在 client-secure.yaml 中看到请求客户端证书然后由作业使用的示例。初始容器在您的普通容器之前 运行:
initContainers:
# The init-certs container sends a certificate signing request to the
# kubernetes cluster.
# You can see pending requests using: kubectl get csr
# CSRs can be approved using: kubectl certificate approve <csr name>
#
# In addition to the client certificate and key, the init-certs entrypoint will symlink
# the cluster CA to the certs directory.
- name: init-certs
image: cockroachdb/cockroach-k8s-request-cert:0.3
imagePullPolicy: IfNotPresent
command:
- "/bin/ash"
- "-ecx"
- "/request-cert -namespace=${POD_NAMESPACE} -certs-dir=/cockroach-certs -type=client -user=root -symlink-ca-from=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
volumeMounts:
- name: client-certs
mountPath: /cockroach-certs
这将使用 K8S API 发送 CSR,等待批准,并将所有结果文件(客户端证书、客户端证书密钥、CA 证书)放入 /cockroach-certs
。如果证书已经作为 K8S 秘密存在,它会直接获取它。
您只需将 --user=root
更改为您要使用的用户名即可为任何用户申请证书。