如何在Helm图表的values.yaml文件中执行此操作?

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

我们在多个 AWS 区域部署微服务。因此,我希望能够在 Helm 图表

values.yaml
文件中执行此操作。

# Default region
aws_region: us-east-1

aws_ecrs:
  us-east-1: 01234567890.dkr.ecr.us-east-1.amazonaws.com
  eu-north-1: 01234567890.dkr.ecr.eu-nort-1.amazonaws.com

image:
  name: microservice0
  repository: {{ .Values.aws_ecrs.{{ .Values.aws_region }} }} # I know this is incorrect

所以现在当我安装图表时,我只想做

$ helm install microservice0 myChart/ --set aws_region=eu-north-1

并且适当的存储库将被分配给

.Values.image.repository
。我可以这样做吗?如果是这样,正确的语法是什么?

注意:映像存储库只是一个取决于 AWS 区域的值,我们还有更多其他值也取决于 AWS 区域。

kubernetes-helm
1个回答
-1
投票

将存储库名称作为普通 Helm 值传递。

# templates/deployment.yaml
image: {{ .Values.repository }}/my-image:{{ .Values.tag }}

为每个区域创建一个单独的文件。这不一定需要与 Helm 图表位于同一位置。提供区域值作为普通顶级值。您将拥有多个提供相同值的文件,这很好。

# eu-north-1.yaml
repository: 01234567890.dkr.ecr.eu-nort-1.amazonaws.com

然后,当您部署图表时,使用

helm install -f
选项来使用正确的每个区域值。这些值将覆盖图表
values.yaml
文件中的所有内容,但您未在此处专门设置的任何内容都将使用图表中的默认值。

helm install microservice0 myChart/ \
  --set-string tag=20220201 \
  -f eu-north-1.yaml

原则上您可以使用 Go 模板

index
函数按照您的描述进行查找; Variable value as yaml key in helm Chart中的顶级结构与您在问题中显示的内容类似。不过,在模板代码中实现起来比较复杂,这意味着您对每个区域必须变化的值和不能变化的值有不同的设置。

© www.soinside.com 2019 - 2024. All rights reserved.