【问题标题】:Helm, create env var with image tag valueHelm,使用图像标签值创建 env var
【发布时间】:2020-05-28 12:34:38
【问题描述】:

我对掌舵相当陌生,因为我使用其他 ppl 为我们的应用程序创建的图表,我正在尝试做一些我认为有点容易但无法找到方法的事情。基本上我想将应用程序版本传递给我的反应应用程序。根据我找到的一些信息,这是我想出的

image:
    tag: 0.2.6
extraEnv:
  - name: REACT_APP_APP_VERSION
    value: {image.tag}

提前谢谢

【问题讨论】:

标签: kubernetes environment-variables kubernetes-helm


【解决方案1】:

我假设您发送的代码是您的values.yaml。那么,第一部分是正确的。

image:
    tag: 0.2.6

现在,您无需在 values.yaml 中指定传递给 pod 的变量,而是在您的 templates/* 文件中指定变量。例如,要将变量传递给您的 pod,您可以使用以下代码:

env:
  - name: REACT_APP_APP_VERSION
    value: "{{ .Values.image.tag }}"

查看this 获取完整示例。

请注意,您不能在 values.yaml 中使用来自 values.yaml 的值。因此,您发送的代码将不起作用。这是因为,values.yaml 文件本身没有被评估。

【讨论】:

  • 实际上我们有一个 values.yaml ,其中包含与每个 env 相同的值。然后我们对每个环境都有一个覆盖值,这就是我同时拥有 image.tag 和 REACT_APP_APP_VERSION var 的地方。我想如果没有重大的 conf 更改,就不可能实现我想做的事情。谢谢你的帮助
  • 您实际上可以在 values.yaml 中使用模板,并为图表模板中的值调用 tpl 函数
【解决方案2】:

来自Documentation

tpl 函数允许开发人员将字符串评估为模板中的模板。这对于将模板字符串作为值传递给图表或呈现外部配置文件很有用。语法:{{ tpl TEMPLATE_STRING VALUES }}

你会有类似的东西

values.yaml

image:
  repository: k8s.gcr.io/busybox
  tag: "latest"

extraEnv: "{{ .Values.image.tag }}"

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - name: test
    image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
    env:
    - name: REACT_APP_APP_VERSION
      value: {{ tpl .Values.extraEnv. }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-25
    • 2021-02-28
    • 2021-12-04
    • 2023-04-02
    • 1970-01-01
    • 2011-05-25
    • 2021-02-02
    • 2018-10-31
    相关资源
    最近更新 更多