Kubernetes-配置映射模板化变量

Kubernetes-配置映射模板化变量,kubernetes,Kubernetes,我在一个pod(或配置映射)中有两个环境变量: -TARGET\u URL=http://www.example.com -TARGET_PARAM=PARAM 我有没有办法提供从这两个变量派生的第三个env变量,比如${TARGET\u URL}/mysite/${TARGET\u PARAM} 谢谢 如果没有第三方工具,我认为现在是不可能的。关于它不支持YAML中的多变量。但我会告诉你一个第三方工具——头盔 这是可能实现它使用头盔。您的模板将如下所示: containers: -

我在一个pod(或配置映射)中有两个环境变量:
-
TARGET\u URL=http://www.example.com

-
TARGET_PARAM=PARAM

我有没有办法提供从这两个变量派生的第三个env变量,比如
${TARGET\u URL}/mysite/${TARGET\u PARAM}


谢谢

如果没有第三方工具,我认为现在是不可能的。关于它不支持YAML中的多变量。但我会告诉你一个第三方工具——头盔

这是可能实现它使用头盔。您的模板将如下所示:

 containers:
    - name: {{.Values.Backend.name }}
      image: "{{ .Values.Backend.image.repository }}:{{ .Values.Backend.image.tag }}"
      imagePullPolicy: "{{ .Values.Backend.image.pullPolicy }}"
      args:
        - name: TARGET_URL
          value: {{ .Value.URL}}
        - name: TARGET_PARAM
          value: {{ .Value.PARAM}}
        - name: URL
          value: {{ .Value.URL }}/mysite/{{ .Value.PARAM}}
env:
  - name: TARGET_URL
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_URL
  - name: TARGET_PARAM
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_PARAM
  - name: TARGET_DETAIL_URL
    value: $(TARGET_URL)/mysite/$(TARGET_PARAM)
您将向文件
values.yaml
中添加
TARGET\u URL
TARGET\u PARAM

URL: http://www.example.com
PARAM: param          

我认为如果没有第三方工具,现在就不可能了。关于它不支持YAML中的多变量。但我会告诉你一个第三方工具——头盔

这是可能实现它使用头盔。您的模板将如下所示:

 containers:
    - name: {{.Values.Backend.name }}
      image: "{{ .Values.Backend.image.repository }}:{{ .Values.Backend.image.tag }}"
      imagePullPolicy: "{{ .Values.Backend.image.pullPolicy }}"
      args:
        - name: TARGET_URL
          value: {{ .Value.URL}}
        - name: TARGET_PARAM
          value: {{ .Value.PARAM}}
        - name: URL
          value: {{ .Value.URL }}/mysite/{{ .Value.PARAM}}
env:
  - name: TARGET_URL
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_URL
  - name: TARGET_PARAM
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_PARAM
  - name: TARGET_DETAIL_URL
    value: $(TARGET_URL)/mysite/$(TARGET_PARAM)
您将向文件
values.yaml
中添加
TARGET\u URL
TARGET\u PARAM

URL: http://www.example.com
PARAM: param          

您可以使用可以在docker入口点调用的init脚本来完成

您可以使用可以在docker入口点调用的init脚本来完成

对于环境变量(以及pod规范中的两个其他字段,包括
args
command
),有一个类似于
$(变量)
的名称,可以扩展;例如,见。这可能看起来像:

 containers:
    - name: {{.Values.Backend.name }}
      image: "{{ .Values.Backend.image.repository }}:{{ .Values.Backend.image.tag }}"
      imagePullPolicy: "{{ .Values.Backend.image.pullPolicy }}"
      args:
        - name: TARGET_URL
          value: {{ .Value.URL}}
        - name: TARGET_PARAM
          value: {{ .Value.PARAM}}
        - name: URL
          value: {{ .Value.URL }}/mysite/{{ .Value.PARAM}}
env:
  - name: TARGET_URL
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_URL
  - name: TARGET_PARAM
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_PARAM
  - name: TARGET_DETAIL_URL
    value: $(TARGET_URL)/mysite/$(TARGET_PARAM)
如果您依赖于将ConfigMap作为文件装载到容器中,那么它只能包含静态内容;这个技巧不起作用。

对于环境变量(以及pod规范中的两个其他字段,包括
args
command
)有一个类似于
$(变量)
的名称,它将得到扩展;例如,见。这可能看起来像:

 containers:
    - name: {{.Values.Backend.name }}
      image: "{{ .Values.Backend.image.repository }}:{{ .Values.Backend.image.tag }}"
      imagePullPolicy: "{{ .Values.Backend.image.pullPolicy }}"
      args:
        - name: TARGET_URL
          value: {{ .Value.URL}}
        - name: TARGET_PARAM
          value: {{ .Value.PARAM}}
        - name: URL
          value: {{ .Value.URL }}/mysite/{{ .Value.PARAM}}
env:
  - name: TARGET_URL
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_URL
  - name: TARGET_PARAM
    valueFrom:
      configMapKeyRef:
        key: cm
        name: TARGET_PARAM
  - name: TARGET_DETAIL_URL
    value: $(TARGET_URL)/mysite/$(TARGET_PARAM)
如果您依赖于将ConfigMap作为文件装载到容器中,那么它只能包含静态内容;这个把戏不行