Обращение к пространству имен с использованием переменной среды
Кто-нибудь знает способ ссылки на пространство имен внутри values.yaml с помощью переменной среды?
Например, при отображении секрета
secret:
# RabbitMQ password
V_RABBIT_PASSWORD:
secretKeyRef:
name: jx-staging-rabbit //<--- this needs to work for staging and prod
key: rabbitmq-password
Это раздел в deploy.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 }}
Спасибо
1 ответ
Я предполагаю, что это в виде руля для приложения, которое вы развертываете с помощью jenkins-x. У Helm есть значение Release.Namespace, к которому вы можете получить доступ. Таким образом, в deploy.yaml вы можете использовать {{ .Release.Namespace }}
Хотя jx-staging
также название релиза, так {{ .Release.Name}}
это может в равной степени применяться здесь. Я ожидаю, что это будет выглядеть так:
valueFrom:
secretKeyRef:
name: {{ .Release.Name }}-{{ .Values.rabbitmq.name }}
key: rabbitmq-password
куда {{ .Values.rabbitmq.name }}
равно rabbitmq
или как вы называете rabbitmq в ваших требованиях. ( Вот пример диаграммы, делающей это таким образом для postgres, он также использует кролика, но по-разному обращается к паролю кролика.)
Если у вас правильно загружается секрет, но проблемы с паролем все еще возникают, убедитесь, что вы устанавливаете явное значение пароля, иначе вы можете нажать https://github.com/helm/charts/issues/5167
Использование {{ .Release.Name }}
не будет работать внутри values.yaml, но я не уверен, нужно ли вам это, если вы можете сделать это в deploy.yaml.
(Если вам действительно нужен доступ к функции из values.yaml, вам нужно иметь запись для строкового значения в values.yaml, а затем передать ее через tpl
функция в шаблоне.)