升级版本时所有部署的参数发生变化

问题描述 投票:0回答:1

我对 Helm 模板有疑问。 我正在制作一个用于部署和使用的通用模板:

{{- range $index, $service := .Values.services}}

从values.yaml 文件中枚举参数。 我想在运行时交互式地更改部署版本参数:

helm upgrade ... --set appVersion=<my version>

但是出现了一个问题,我的部署参数位于values.yaml中的服务内部,而appVersion参数不在那里。

values.yaml:

services:
   firstservice:
     name: firstservice
     productCode: product-code
     imageRegistryHost: myregistry
   ...
   secondservice:
     name: secondservice
     productCode: product-code
     imageRegistryHost: myregistry
   ...

部署.yml:

{{- range $index, $service := .Values.services}}
---
...
    spec:
       containers:
       - name: productcontainer
         image: {{ $service.imageRegistryHost }}/{{ $service.productCode }}/{{ $service.name }}:{{ $service.appVersion }}
...
{{- end }}

升级部署时如何设置appVersion参数?

devops kubernetes-helm
1个回答
0
投票

对于您所描述的设置,您需要将

appVersion
作为顶级参数包含在 Helm 值中。

{{ $appVersion := .Values.appVersion }}
helm install --set-string appVersion=...

range
循环重新绑定特殊变量
.
,因此您需要确保在循环之外设置该变量。

{{ $appVersion := .Values.appVersion }}
{{- range $index, $service := .Values.services}}
image: .../{{ $service.name }}:{{ $appVersion }}
{{- end }}

如果您想允许每个服务版本,但有全局默认值,您可以使用

default

...:{{ $service.appVersion | default $appVersion }}
© www.soinside.com 2019 - 2024. All rights reserved.