配置自定义 CA 证书
当你的连接器需要访问那些提供由内部或私有证书颁发机构(CA)签名的 TLS 证书的工具时,你可以配置平台信任这些 CA,而无需完全禁用证书验证。
本指南涵盖以下内容:
- 启用自定义 CA 证书功能开关
- 配置适用于所有连接器的全局 CA 证书
- 配置按连接器生效的 CA 证书
- 通过
CACertReadycondition 验证配置
目录
前提条件第 1 步:启用功能开关第 2 步:配置全局 CA 证书第 3 步:配置按连接器生效的 CA 证书(可选)第 4 步:验证配置常见问题Connector status 显示CACertReady=False, reason=SecretNotFoundConnector status 显示 CACertReady=False, reason=InvalidPEM启用功能开关后仍未出现 CACertReady condition配置 CA 后工具仍然拒绝连接刚更改 CA Secret 后连接仍然失败更多内容前提条件
- 正在运行的 Connectors 部署(controller、proxy 和可选的 extensions)。
- 对 Connectors 组件运行所在的系统 namespace 具有 cluster admin 访问权限(通常是
connectors-system)。 - 一个或多个 PEM 编码的 CA 证书,这些证书用于签署你的工具的 server 证书。
第 1 步:启用功能开关
自定义 CA 证书支持由 enable-custom-ca-certs 功能开关控制,该开关默认禁用,以保持向后兼容性。
编辑系统 namespace 中的 connectors-config ConfigMap,并将该开关设置为 true:
使用以下命令应用:
切换功能开关会立即生效——该设置会在请求时被读取。当该开关为 false 时,CACertReady condition 不会添加到 Connector status 中,组件会保留旧版 TLS 行为以兼容旧版本。
第 2 步:配置全局 CA 证书
全局 CA 证书适用于集群中的所有连接器。系统会通过为系统 namespace 中的 Secret 添加标签自动发现这些证书。
在系统 namespace 中创建一个 Secret,添加标签 connectors.cpaas.io/ca-cert: "true",并在 data 键中放入一个或多个 PEM 编码证书。仅会加载以 .crt 或 .pem 结尾的键,或值中包含 PEM header 的键;其他键会被忽略。
使用以下命令应用:
注意: 更新带有全局标签的 Secret 后,reverse proxy 最多可能需要 5 分钟才能获取新的 CA pool——连接器 reverse-proxy transports 会按连接器缓存,TTL 为 5 分钟。若要立即刷新,请重启
connectors-proxyDeployment。
你可以创建多个带标签的 Secret——它们包含的所有证书都会聚合到全局 CA pool 中。添加或删除带标签的 Secret 会触发受影响连接器的自动重新协调。
第 3 步:配置按连接器生效的 CA 证书(可选)
对于需要使用不与其他连接器共享的特定 CA 的工具,你可以从 Connector 资源本身引用一个 CA Secret。该 Secret 必须位于 Connector 的相同 namespace 中(不允许跨 namespace 引用)。
首先,在连接器的 namespace 中创建 CA Secret:
然后在 Connector 中引用它:
按连接器生效的 CA 是附加式的——它会被追加到全局 CA pool 中(system CAs + 全局带标签的 Secrets + 按连接器的 Secret)。
第 4 步:验证配置
检查 Connector status 上的 CACertReady condition:
有效配置的预期输出:
CACertReady condition 仅用于信息提示——其状态不会影响顶层 Ready condition。这意味着,配置错误的 CA Secret 会以警告形式显现,但不会阻止连接器重新协调。有关完整状态参考,请参阅 Connector 概念页面中的 CA Certificate Status。
如果 CA Secret 缺失或包含无效的 PEM 数据,controller 会在 Connector 对象上发出 Kubernetes Warning Event。使用以下命令查看事件:
常见问题
Connector status 显示 CACertReady=False, reason=SecretNotFound
spec.caCertSecretRef.name 中指定的 Secret 不存在于连接器的 namespace 中。请验证 Secret 名称和 namespace:
Connector status 显示 CACertReady=False, reason=InvalidPEM
Secret 存在,但其数据不包含有效的 PEM 编码证书。请验证 Secret 内容:
输出应以 -----BEGIN CERTIFICATE----- 开头,并以 -----END CERTIFICATE----- 结尾。
启用功能开关后仍未出现 CACertReady condition
请确保在切换功能开关后已重启 controller、proxy 和 API deployments。CA pool 会在组件启动时加载。
配置 CA 后工具仍然拒绝连接
CA pool 以附加层方式构建:system CAs + 全局带标签的 Secrets + 按连接器的 Secret。请确保为工具 server 证书签名的 CA 至少存在于这些层中的一个。你可以通过列出带标签的 Secret 来验证全局 pool 是否已填充:
刚更改 CA Secret 后连接仍然失败
reverse-proxy 会将 CA pool 缓存 5 分钟。如果你刚刚更新了全局带标签的 Secret 或按连接器的 Secret,请等待 TTL 过期,或者重启 connectors-proxy 以立即获取新的 pool: