gpt4 book ai didi

ssl - 将 cert-manager 证书移动到另一个 Kubernetes 集群

转载 作者:行者123 更新时间:2023-12-04 22:35:59 26 4
gpt4 key购买 nike

我正在将 Web 服务从一个 Kubernetes 集群转移到另一个集群。目标是在不中断服务的情况下做到这一点。

这对于 cert-manager 和 HTTP 挑战来说很困难,因为新集群上的 cert-manager 只能在 DNS 条目指向该集群时检索证书。但是,如果我将 DNS 条目切换到新集群,客户端可能会在生成有效证书之前与新集群通信。这就像先有鸡还是先有蛋的问题。

如何将 cert-manager 证书移动到新集群,以便在我进行 DNS 切换后它已经拥有证书?

最佳答案

证书存储在 Kubernetes secret 中。如果 secret 与入口对象匹配,证书管理器将获取现有 secret 而不是创建新 secret 。

所以假设 ingress 对象在两个集群上看起来相同,并且使用相同的命名空间,复制 secret 就这么简单:

kubectl --context OLD_CLUSTER -n NAMESPACE get secret SECRET_NAME --output yaml \
| kubectl --context NEW_CLUSTER -n NAMESPACE apply -f -
  • OLD_CLUSTERNEW_CLUSTER 替换为各个集群的 kubectl 上下文名称(请参阅 kubectl config get-contexts)。
  • SECRET_NAME 替换为存储证书的 key 的名称。可以在入口中找到此名称。
  • NAMESPACE 替换为您正在使用的实际命名空间。

该命令只是以 YAML 格式导出 key ,然后使用 kubectl apply -f 在新集群中创建相同的资源。

在新集群上设置好入口后,您可以使用 openssl s_client 验证证书是否有效:

openssl s_client -connect CLUSTER_IP:443 -servername SERVICE_DNS_NAME 

同样,相应地替换 CLUSTER_IPSERVICE_DNS_NAME

关于ssl - 将 cert-manager 证书移动到另一个 Kubernetes 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65302295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com