如何通过Helm Upgrade为所有Deployment统一设置appVersion参数?
解决方案
你可以通过以下几种方式实现一次性给所有Deployment设置appVersion参数:
方法1:使用全局默认值(推荐)
修改Deployment模板中的image标签,优先使用每个服务自身的appVersion(如果后续在values.yaml中定义了),否则使用全局传入的appVersion:
{{- range $index, $service := .Values.services}} --- ... spec: containers: - name: productcontainer image: {{ $service.imageRegistryHost }}/{{ $service.productCode }}/{{ $service.name }}:{{ default $.Values.appVersion $service.appVersion }} ... {{- end }}
执行升级命令时,直接传入全局的appVersion即可:
helm upgrade <release-name> <chart-name> --set appVersion=<my version>
如果某个服务需要单独指定版本,也可以覆盖全局值:
helm upgrade <release-name> <chart-name> --set appVersion=v1.0.0 --set services.firstservice.appVersion=v1.0.1
方法2:强制使用全局版本
如果不需要给单个服务单独设置版本,直接在模板中引用全局的$.Values.appVersion:
{{- range $index, $service := .Values.services}} --- ... spec: containers: - name: productcontainer image: {{ $service.imageRegistryHost }}/{{ $service.productCode }}/{{ $service.name }}:{{ $.Values.appVersion }} ... {{- end }}
升级命令与方法1一致:
helm upgrade <release-name> <chart-name> --set appVersion=<my version>
方法3:批量设置所有服务的appVersion
如果希望保持模板中使用$service.appVersion的写法,可以通过--set逐个指定每个服务的版本(适合服务数量较少的场景):
helm upgrade <release-name> <chart-name> --set services.firstservice.appVersion=<my version>,services.secondservice.appVersion=<my version>
内容的提问来源于stack exchange,提问作者komito
相关产品推荐
相关产品推荐

