使用环境变量引用命名空间

问题描述 投票:2回答:1

有没有人知道使用环境变量引用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 }}

谢谢

kubernetes jenkins--x
1个回答
1
投票

我想这是你用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中输入字符串值。)

© www.soinside.com 2019 - 2024. All rights reserved.