Обращение к пространству имен с использованием переменной среды

Кто-нибудь знает способ ссылки на пространство имен внутри 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 функция в шаблоне.)

Другие вопросы по тегам