当我构建镜像路径时,这就是我想要构建镜像路径的方式,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 本身解决此问题的任何指示?谢谢
答案 0 :(得分:1)
查看 lookup
函数,https://helm.sh/docs/chart_template_guide/functions_and_pipelines/#using-the-lookup-function
虽然这很快就会变得非常复杂,所以请注意不要过度使用它。