DigitalOcean Kubernetes 如何添加CA证书到Secret连接托管数据库
你当前的Secret写法不正确,具体问题和修改方案如下:
存在的核心问题
kubernetes.io/tls类型的Secret标准必填字段为tls.crt和tls.key,没有默认的.tls.ca字段,要么去掉字段开头的点改为tls.ca,要么直接使用兼容性更高的Opaque类型自定义CA证书的字段名。data字段下的base64编码内容不能包裹引号,否则挂载到Pod后证书内容会额外携带引号,导致验证失败。- 若不想手动对证书做base64编码,可以直接用
stringData字段替换data,直接写入证书原文即可,Kubernetes会自动完成编码。
正确写法参考
方案1:Opaque类型自定义字段(适配托管数据库连接场景的最优选择)
apiVersion: v1 kind: Secret metadata: name: secret-db-ca type: Opaque data: # 直接填写.cer文件的base64编码结果,不需要加引号 db-ca.cer: <base64 encoded ~/.digitalocean-db.cer>
方案2:保留TLS类型Secret写法
apiVersion: v1 kind: Secret metadata: name: secret-db-ca type: kubernetes.io/tls data: # TLS类型必填的两个字段,若无客户端证书可填空白内容的base64编码值Ig== tls.crt: Ig== tls.key: Ig== tls.ca: <base64 encoded ~/.digitalocean-db.cer>
方案3:stringData免手动编码写法
apiVersion: v1 kind: Secret metadata: name: secret-db-ca type: Opaque stringData: db-ca.cer: | -----BEGIN CERTIFICATE----- 直接粘贴.cer文件的全文内容即可 -----END CERTIFICATE-----
内容的提问来源于stack exchange,提问作者agusgambina
相关产品推荐
相关产品推荐

