Tob*_*obi 4 go-templates kubernetes kubernetes-helm
我目前正在使用 Helm 在 Kubernetes 集群中部署我的应用程序。现在我还需要能够针对不同的环境修改values.yaml 文件中的一些参数。
对于只有一个级别的简单图表,通过使用不同的values-local.yaml 和values-prod.yaml 并将其添加到标志中很容易helm install,例如helm install --values values-local.yaml。
但是如果我有第二层子图,也需要区分多个环境之间的值,我就无法设置自定义的values.yaml。
假设以下结构:
| chart
| Chart.yaml
| values-local.yaml
| values-prod.yaml
| charts
| foo-app
| Chart.yaml
| values-local.yaml
| values-prod.yaml
| templates
| deployments.yaml
| services.yaml
Run Code Online (Sandbox Code Playgroud)
这不会起作用,因为 Helm 期望values.yaml在子图中出现。
我现在的解决方法是在 subchart/values.yaml 中使用 if-else-construct 并将其设置为父 value.yaml 中的全局变量。
*foo-app/values.yaml*
{{ - if .Values.global.env.local }}
foo-app:
replicas: 1
{{ else if .Values.global.env.dev}}
foo-app:
replicas: 2
{{ end }}
Run Code Online (Sandbox Code Playgroud)
parent/values-local.yaml
global:
env:
local: true
parent/values-prod.yaml
global:
env:
prod: true
Run Code Online (Sandbox Code Playgroud)
但我希望有更好的方法,这样我就不需要依赖这些自定义标志。
我希望你能帮我解决这个问题。
这是我的做法(作为参考覆盖值):
...
replicas: 1
...
Run Code Online (Sandbox Code Playgroud)
...
spec:
replicas: {{ .Values.replicas }}
...
Run Code Online (Sandbox Code Playgroud)
然后,在主图表的值文件中:
foochart:
replicas: 1
Run Code Online (Sandbox Code Playgroud)
foochart:
replicas: 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13342 次 |
| 最近记录: |