首页 > 解决方案 > 在 Kubernetes 中使用应用程序部署 ConfigMap 更改而不改变现有应用程序的行为的典型策略是什么?

问题描述

我有一个更新的应用程序要部署到 Kubernetes,其中包含一个新图像和ConfigMap. 配置可能是更新的值、删除的内容或全新的配置键。

我的问题是,我应该如何隔离对新版本的更改而不将配置应用于任何现有版本?

我已经阅读了有关不可变配置映射的信息,它建议我ConfigMap在每次部署或每次配置更改时创建一个新映射,这是一个可能的选择。我不确定它们是否打算以这种方式使用。或者,一旦没有其他人使用它,如何最好地安全地删除前一个。

另外,如何在 Pod 滚动更新开始之前保证配置可用?

标签: kubernetesazure-aksconfigmap

解决方案


如果您部署的每个修订版都将应用一些自定义配置,那么将其单独/新建ConfigMap是正确的方法。

您可以考虑使用helm chart部署您的应用程序,它们只是将 yaml 文件组合到单个包中。很容易对它们进行版本化并与其他人共享,因为一旦正确完成,它们的目标就是可重用。这意味着可以在不重写模板的情况下更改清单的公共部分的值。Helm 具有将发布回滚任何先前版本的本机功能。

根据您的需求和用例,Kustomize 可以选择生成新的 ConfigMap 或 Secret,称为generatorOptions


推荐阅读