我想使用 GitOps(ArgoCD) 在 k8s 中重新部署一个应用程序,以防只有配置映射发生变化,ArgoCD 如何理解重启容器,正如我们都知道的那样,不重启容器新的配置映射不会生效。
场景 - 如果一个容器从 ArgoCD 运行,我必须在 GitHub 中修改 configmap yaml 文件,ArgoCD 将自动理解并同步更新的值,但容器不会重新启动,因为我们没有在部署 Yaml 文件中进行修改,所以配置映射将如何容器中的效果
我想使用 GitOps(ArgoCD) 在 k8s 中重新部署一个应用程序,以防只有配置映射发生变化,ArgoCD 如何理解重启容器,正如我们都知道的那样,不重启容器新的配置映射不会生效。
场景 - 如果一个容器从 ArgoCD 运行,我必须在 GitHub 中修改 configmap yaml 文件,ArgoCD 将自动理解并同步更新的值,但容器不会重新启动,因为我们没有在部署 Yaml 文件中进行修改,所以配置映射将如何容器中的效果
为上述问题找到了解决方法,我们可以在部署配置中包含一个参数(Jenkins 内部版本号)作为环境变量,它将在 CI 管道的每个构建中更新,因此如果 Git 存储库中只有配置更改,部署将也将推出,因为内部版本号参数将在运行管道后更改,并且众所周知,一旦在连接到 ArgoCD 的 Git 存储库中完成任何更改,ArgoCD 将自动触发
ArgoCD 本身不能处理这个问题,但是其他工具可以。使用 Helm,这通常通过将配置内容散列到 pod 模板中的注释中来在图表内部处理。Kustomize 提供了 configmap 和秘密生成器,它们在对象名称中放置一个哈希并重写 pod 模板以包含它。还有像Reloader这样的运营商解决方案,它与 Helm 有类似的技巧,但通过运营商。