Kubernetes-配置映射模板化变量
我在一个pod(或配置映射)中有两个环境变量:Kubernetes-配置映射模板化变量,kubernetes,Kubernetes,我在一个pod(或配置映射)中有两个环境变量: -TARGET\u URL=http://www.example.com -TARGET_PARAM=PARAM 我有没有办法提供从这两个变量派生的第三个env变量,比如${TARGET\u URL}/mysite/${TARGET\u PARAM} 谢谢 如果没有第三方工具,我认为现在是不可能的。关于它不支持YAML中的多变量。但我会告诉你一个第三方工具——头盔 这是可能实现它使用头盔。您的模板将如下所示: containers: -
-
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作为文件装载到容器中,那么它只能包含静态内容;这个把戏不行