You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨集群部署含Sealed Secret的Chart的方案及控制器密钥统一方法咨询

跨Kubernetes集群部署含Sealed Secret的Chart方案

一、跨集群部署的通用方法

  • 为每个集群单独加密Secret:这是最直接的解决方案。针对每个集群的Sealed Secrets Controller公钥,用kubeseal分别加密原始Secret,生成对应集群的Sealed Secret文件。在Chart里可以通过values参数或者条件渲染来区分不同集群的资源,比如给每个集群配置独立的Sealed Secret内容,部署时指定对应集群的values文件即可。
    示例操作命令:

    # 导出集群A的Controller公钥
    kubeseal --fetch-cert --controller-name=sealed-secrets --controller-namespace=kube-system > clusterA-pub.pem
    # 用集群A公钥加密原始Secret,生成适配集群A的Sealed Secret
    kubeseal --cert=clusterA-pub.pem --format=yaml < original-secret.yaml > sealed-secret-clusterA.yaml
    
    # 用同样流程处理集群B
    kubeseal --fetch-cert --controller-name=sealed-secrets --controller-namespace=kube-system > clusterB-pub.pem
    kubeseal --cert=clusterB-pub.pem --format=yaml < original-secret.yaml > sealed-secret-clusterB.yaml
    

    在Chart的templates目录中,你可以通过if-else判断或者集群标识匹配,选择加载对应集群的Sealed Secret模板,也可以直接把不同集群的Sealed Secret内容作为values参数传入部署。

  • 借助外部密钥管理系统(KMS)绕开Sealed Secret限制:如果有统一的KMS服务(比如HashiCorp Vault),可以不在Chart里嵌入Sealed Secret,而是让应用启动时从KMS拉取敏感数据,动态生成Secret。这种方式完全避开了多集群密钥不一致的问题,更适合大规模多集群场景。

二、让多集群Sealed Secrets Controller共用密钥

可以通过导出源集群的Controller密钥,再导入到其他集群来实现:

  1. 导出源集群的密钥:
    源集群中,Sealed Secrets Controller的密钥默认存在kube-system命名空间的sealed-secrets-key Secret里(如果自定义过Controller配置,对应修改名称)。执行命令导出:

    kubectl get secret sealed-secrets-key -n kube-system -o yaml > sealed-secrets-key.yaml
    
  2. 导入密钥到目标集群:
    在目标集群部署Sealed Secrets Controller之前,先导入这个密钥Secret:

    kubectl apply -f sealed-secrets-key.yaml -n kube-system
    

    之后部署Controller时,它会自动使用已存在的密钥,不会再生成新的。

    注意事项:

    • 这个密钥是敏感数据,传输和存储时一定要加密,绝对不能泄露。
    • 如果目标集群已经部署过Controller并生成了自己的密钥,需要先删除原有的sealed-secrets-key Secret,再导入新密钥,最后重启Controller Pod让它加载新密钥。

内容的提问来源于stack exchange,提问作者beatrice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 07:47:35