在helm图表中为Java应用程序的部署设置环境变量的最佳实践是什么,以便我可以将相同的图表用于dev和prod环境?对于这两种环境,我都有单独的kubernetes部署。
spec:
containers:
env:
- name: SYSTEM_OPTS
- value: "-Dapp1.url=http://dev.app1.xyz -Dapp2.url=http://dev.app2.abc ..."
类似地,我的prod变量类似于
"-Dapp1.url=http://prod.app1.xyz -Dapp2.url=http://prod.app2.abc ..."
现在,我该如何利用掌舵来编写单个图表,但是可以根据环境创建单独的具有不同属性的Pod集
helm install my-app --set env=prod ./test-chart
或
helm install my-app --set env=dev ./test-chart
答案 0 :(得分:3)
最好的方法是使用单个部署模板,并对每个环境使用单独的值文件。 它不必只是应用程序中使用的环境变量。 这可以适用于任何特定于环境的配置。
示例:
deployment.yaml
spec:
containers:
env:
- name: SYSTEM_OPTS
- value: "{{ .Values.opts }}"
values-dev.yaml
# system opts
opts: "-Dapp1.url=http://dev.app1.xyz -Dapp2.url=http://dev.app2.abc "
values-prod.yaml
# system opts
opts: "-Dapp1.url=http://prod.app1.xyz -Dapp2.url=http://prod.app2.abc "
然后在helm命令中指定相关的值文件。
例如,在开发环境中进行部署。
helm install -f values-dev.yaml my-app ./test-chart