我在Pod(或配置映射)中有两个环境变量:
-TARGET_URL=http://www.example.com
-TARGET_PARAM=param
我有什么办法提供从这两个变量派生的第三个env变量,类似${TARGET_URL}/mysite/${TARGET_PARAM}
。
谢谢!
答案 0 :(得分:2)
如果没有第3方工具,我认为现在不可能实现。关于api ref,它在YAML中不支持多变量。但我将向您介绍第3方工具-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_URL
添加文件TARGET_PARAM
URL: http://www.example.com
PARAM: param
答案 1 :(得分:1)
对于环境变量(以及Pod规范中的其他两个字段,包括args
和command
),有一个类似于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挂载到容器中,则它只能包含静态内容;否则,它只能包含静态内容。这个把戏行不通。
答案 2 :(得分:0)
您可以使用可以在docker入口点调用的初始化脚本来进行操作。