在Helm升级期间,有一种方法可以访问我要从中升级的版本

时间:2020-07-31 11:41:37

标签: kubernetes kubernetes-helm

示例:当前版本为1.2.3,我执行了头盔升级到1.2.4版本,在statefulset升级期间,有一种方法可以访问“ from”版本,例如1.2.3

2 个答案:

答案 0 :(得分:0)

不确定在升级过程中是否可以访问“ from”版本,但是可以在使用helm list命令进行升级之前获得它

helm list --filter 'your-release' -n your-namespace -o json | jq '.[0]'
{
  "name": "your-release",
  "namespace": "your-namespace",
  "revision": "549",
  "updated": "2020-07-31 14:54:44.168919115 +0000 UTC",
  "status": "failed",
  "chart": "your-chart-0.1.0",
  "app_version": "0.2.1"
}

helm docs

中所述

存储库中的软件包由名称和版本标识。

您可以从返回的chart键中剪切版本

PREVIOUS_VERSION=$(helm list --filter 'your-release' -n your-namespace -o json | jq '.[0].chart' | grep -Po '(?<=your-chart-)[^;]+' | sed 's/.$//')
echo $PREVIOUS_VERSION
0.1.0

答案 1 :(得分:0)

我不了解内置功能,也没有简单的方法来访问以前的版本,但是可能有解决方法。

您可以使用 edbighead 提及的方法来获取先前版本,并通过--set传递它,如下所示:

helm upgrade --set previousVersion=$PREVIOUS_VERSION

,然后在图表中使用以下条件语句:

{{- $var := semver .Values.previousVersion | (semver "1.2.4" ).Compare }}
{{- if ne $var 1 }}
  ...
{{- end }}

仅当previousVersion大于或等于1.2.4时,if语句才为true。

有关semantic version function (semver) in helm的更多信息。