我们正在使用掌舵来部署许多图表,但为简单起见,我们假设它是两个图表。父图表和子图表:
helm/parent
helm/child
父图表具有一个helm/parent/requirements.yaml
文件,该文件指定:
dependencies:
- name: child
repository: file://../child
version: 0.1.0
子图表在启动时需要一堆环境变量以进行配置,例如在helm/child/templates/deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
spec:
replicas: 1
strategy:
type: Recreate
template:
spec:
containers:
env:
- name: A_URL
value: http://localhost:8080
从父级图表覆盖子级环境变量的最佳方法是什么,以便我可以使用以下命令运行父级并将此实例的A_URL
env变量设置为例如https://www.mywebsite.com
?
helm install parent --name parent-release --namespace sample-namespace
我尝试将变量添加到父级的helm/parent/values.yaml
文件中,但无济于事
global:
repository: my_repo
tag: 1.0.0-SNAPSHOT
child:
env:
- name: A_URL
value: https://www.mywebsite.com
父母的value.yaml的语法正确吗?有其他方法吗?
答案 0 :(得分:1)
除非使用模板系统设置该值,否则无法在Helm 2中直接对其进行修改。
答案 1 :(得分:1)
在子图表中,您必须从配置中显式引用一个值。 (进行了此更改后,您可能需要从父图表目录运行helm dependency update
。)
# child/templates/deployment.yaml, in the pod spec
env:
- name: A_URL
value: {{ .Values.aUrl | quote }}
您可以为其指定子图表的默认值。
# child/values.yaml
aUrl: "http://localhost:8080"
然后在父图表的值文件中,您可以为其提供替代值。
# parent/values.yaml
child:
aUrl: "http://elsewhere"
除非模板允许,否则您不能使用Helm覆盖或注入任意YAML。