首页 > 解决方案 > 如何在掌舵升级时找到“来自”图表版本?

问题描述

我正在使用内置对象“Release.isUpgrade”的 helm 来确保 init-container 仅在升级时运行。

我只想在从特定 Chart 版本升级时运行 init-container。

是否有可能在掌舵升级中获得“来自”图表版本?

标签: upgradekubernetes-helm

解决方案


看起来此信息既不是在对象中发布的,也不是通过.Release钩子作业可用的信息发布

你可能想要一个升级前的钩子而不是一个 init 容器。如果您的部署中有多个副本,则 init 容器将在所有副本上运行;即使你只有一个,如果它所在的节点发生故障并被替换,替换将重新运行 init 容器。无论如何配置相应的部署,升级前挂钩只会运行一次。

该钩子将是一个单独的 pod(并且需要编写代码),因此您可以在其中做任何您想做的事情。例如,您可以授予它对 Kubernetes API 的读取权限以获取现有部署的定义,然后查看其标签或容器映像标签以找出当前正在运行的图表/应用程序的版本。(有一些标准标签可以帮助解决这个问题。)您也可以让升级步骤只查找它自己的输出:如果对象 X 应该存在,如果它不存在则创建它,而不关注特定版本。


推荐阅读