【问题标题】:Kubernetes - config map templated variablesKubernetes - configmap 模板变量
【发布时间】:2019-02-05 02:59:52
【问题描述】:

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

我有什么办法可以提供从这两个变量派生的第三个环境变量,例如${TARGET_URL}/mysite/${TARGET_PARAM}

谢谢!

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

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

    可以使用 Helm 来实现。您的模板将如下所示:

     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}}
    

    您将在文件values.yaml 中添加TARGET_URLTARGET_PARAM 的参数

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

    【讨论】:

      【解决方案2】:

      对于环境变量(以及 pod 规范中的其他几个字段,包括 argscommand),有一个类似于 Make 的 $(VARIABLE) 名称,它将被扩展;参见例如the documentation for .env.value。这可能看起来像:

      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 作为文件挂载到容器中,那么它只能包含静态内容;这招行不通。

      【讨论】:

        【解决方案3】:

        您可以使用可在 docker 入口点调用的初始化脚本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-01-26
          • 2019-11-26
          • 2020-12-29
          • 2021-01-02
          • 2019-02-10
          • 1970-01-01
          相关资源
          最近更新 更多