无需停机即可从普通 kubernetes 迁移到 helm

Migrate from plain kubernetes to helm without downtime

我将几个应用程序部署到 kubernetes 集群中。我有收据等作为 yaml 文件,我使用 kubectl.

部署和应用所有内容

我决定迁移到 helm 是因为它的特性并避免在 dev 和 prod 之间复制代码(我可以使用变量等)。

问题是:我的服务是 AWS ELB,据我所知,要将已经用 kubectl 部署的东西迁移到 helm,我需要删除它并用 helm 重新安装——这会破坏和重新创建我的 ELB,因此我需要更改 DNS 记录等。最重要的是,我会有停机时间——这并不是我真正想要的。

我想过重命名旧的东西并用正确的名称创建新的东西,保留一个公共标签以在服务中使用 - 这样我就可以创建新的东西,更改 DNS 记录,然后删除旧东西 - 但显然 kubernetes 不允许重命名。

另一个策略是启动一个新的集群——我真的不想这样做。

还有其他选择吗?

设计得当的图表应按 .Release.Name 命名部署的资源。这样您就可以将图表与现有软件并排部署。您很可能能够并行创建大部分堆栈,然后更新图表外服务以指向图表上 pods,这样您就可以同时定义图表上和图表外服务并使用两个不同的 ELB,如果你想摆脱 off-charts,只需编辑 DNS 并让它传播,然后,在一天、一周或一个月后你可以废弃它并只留下图表。