如果 else 中的 Helm 环境变量

时间:2020-12-30 06:41:52

标签: kubernetes kubernetes-helm

当我构建镜像路径时,这就是我想要构建镜像路径的方式,docker 注册表地址,我想从 configMap 中获取它。

我无法在 values.yaml 文件中对注册表地址进行硬编码,因为对于每个客户,注册表地址都不同,我不想让客户手动输入此输入。这些 helm charts 是通过 argoCD 部署的,所以通过 shell 获取 registryIP 然后调用 helm 命令也不是一种选择。

我尝试了下面的代码,它不起作用,因为 env 变量在存在图像路径的上下文中不可用。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ template "helm-guestbook.fullname" . }}
spec:
  template:
    metadata:
      labels:
        app: {{ template "helm-guestbook.name" . }}
        release: {{ .Release.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          {{- if eq .Values.isOnPrem "true" }}
          image: {{ printf "%s/%s:%s" $dockerRegistryIP .Values.image.repository .Values.image.tag }}
          {{- else }}
          env:
          - name: DOCKER_REGISTRY_IP
            valueFrom:
              configMapKeyRef:
                name: docker-registry-config
                key: DOCKER_REGISTRY_IP

有关如何使用 helm 本身解决此问题的任何指示?谢谢

1 个答案:

答案 0 :(得分:1)

查看 lookup 函数,https://helm.sh/docs/chart_template_guide/functions_and_pipelines/#using-the-lookup-function

虽然这很快就会变得非常复杂,所以请注意不要过度使用它。