Digital Ocean Kubernetes 秘密证书与托管数据库连接

Digital Ocean Kubernetes secrets certificate connect with Managed Database

我正在尝试将 Digital Ocean 中的 Kubernetes 集群与托管数据库连接起来。

我需要添加扩展名为 cer 的文件 CA CERTIFICATE。这是将此 file/certificate 添加到机密的正确方法吗?

apiVersion: v1
kind: Secret
metadata:
  name: secret-db-ca
type: kubernetes.io/tls
data:
  .tls.ca: |
        "<base64 encoded ~/.digitalocean-db.cer>"

如何从证书创建秘密


最简单和最快的方法是从命令行创建秘密:

kubectl create secret generic secret-db-ca --from-file=.tls.ca=digitalocean-db.cer

请注意,此机密的类型是 generic,而不是 kubernetes.io/tls,因为 tls 需要提供两个密钥:tls.keytls.crt

也可以从清单中创建密钥,但是您需要向数据字段提供完整的 base64 encoded 字符串并再次使用清单中的类型 Opaque(这与从命令行通用)。

它看起来像:

apiVersion: v1
kind: Secret
metadata:
  name: secret-db-ca
type: Opaque
data:
  .tls.ca: |
     LS0tLS1CRUdJTiBDRVJ..........

您尝试使用的选项用于 docker config 个文件。请参阅 Docker config - secrets


注意! 我用 cer 证书测试了上面的内容。

DER(可分辨编码规则)是 X.509 证书和私钥的二进制编码,它们不包含纯文本(扩展名 .cer 和 .der)。 Secret 保存在 etcd(一般来说是 kubernetes 集群的数据库),但是基于此类 secret 的 secret 的可操作性可能存在问题。

有可能应该使用不同的 type/extension 证书(Digital Ocean 有很多有用和好的文档)。


请参考secrets in kubernetes page