有没有人知道使用环境变量引用values.yaml中的命名空间的方法?
例如,映射秘密时
secret:
# RabbitMQ password
V_RABBIT_PASSWORD:
secretKeyRef:
name: jx-staging-rabbit //<--- this needs to work for staging and prod
key: rabbitmq-password
这是deployment.yaml中的部分
- name: {{ $name | quote }}
valueFrom:
secretKeyRef:
name: {{ $value.secretKeyRef.name | quote }} //<-- trying different combinations here
key: {{ $value.secretKeyRef.key | quote }}
尝试:
${NAMESPACE}-{{ $value.secretKeyRef.name | quote }}
和
{{ template "namespace" . }}-{{ $value.secretKeyRef.name | quote }}
谢谢
我想这是你用jenkins-x部署的应用程序的掌舵图。 Helm有一个Release.Namespace值,你可以访问。所以在deployment.yaml你可以使用{{ .Release.Namespace }}
虽然jx-staging
也是发布的名称所以{{ .Release.Name}}
可以同样适用于这里。我希望这看起来像:
valueFrom:
secretKeyRef:
name: {{ .Release.Name }}-{{ .Values.rabbitmq.name }}
key: rabbitmq-password
其中{{ .Values.rabbitmq.name }}
等于rabbitmq
或你所谓的rabbitmq在你的要求.yaml。 (Here's是一个以postgres方式做这种方式的示例图表,它也使用兔子但不同地访问兔子密码。)
如果您正确加载密码但仍然遇到密码问题,请确保您设置了明确的密码值,否则您可能会遇到https://github.com/helm/charts/issues/5167
{{ .Release.Name }}
的使用在values.yaml中不起作用,但是如果你能在deployment.yaml中完成它我不确定你是否需要它。
(如果您确实需要访问values.yaml中的函数,那么您需要在values.yaml和pass it through the tpl
function within the template中输入字符串值。)