在掌舵升级时如何找到“从”图表版本?

时间:2020-08-01 20:55:57

标签: upgrade kubernetes-helm

我正在使用内置于对象'Release.isUpgrade'的头盔来确保init容器仅在升级时运行。

我只想在从特定的Chart版本升级时运行init容器。

是否可以通过头盔升级获得'from'Chart版本?

1 个答案:

答案 0 :(得分:0)

该信息看起来既不是发布在the .Release object上,也不是通过hook job可用的信息发布的。

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

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