在HELM中使用环境变量

时间:2020-06-29 21:09:11

标签: kubernetes kubernetes-helm helmfile

我计划将项目升级到HELM。

我在Deployment.yaml中定义了许多环境变量。

最佳实践是最好在values.yaml文件或模板/ deployment.yaml drop中定义环境变量吗?

如果您使用的是示例应用程序,可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您完全可以使用values.yaml来定义环境变量。该值是静态的吗?我将它留在部署Yaml中没有问题。如果是秘密,则应该使用k8s秘密来管理它,或者在使用helm install --set-value..时输入它。如果该值是动态的并且经常更改,或者将来可能会更改,那么这是values.yaml的真实用法imo

答案 1 :(得分:2)

免责声明:我的回答基于Helm3。所以让我们开始吧:

  • #1:否,在您的values.yaml中定义了静态/默认值。这不是让静态值进入模板文件(例如deployment.yaml)的最佳方法。覆盖values.yaml的值最佳实践是使用--set KEY=VALUE文件。在这种情况下,完全有可能获取环境变量。
  • #2:您能举个例子吗?是的,当然。

例如,我想使用头盔在集群上安装Elasticsearch,因此我使用以下命令:

  Alert(title: Text("Nice Title"),
        message: Text("Some important message for the user."),
        dismissButton: .default(Text("OK").foregroundColor(.gray)))

但是我不想使用图表的默认值。所以我去了https://hub.helm.sh/charts/elastic/elasticsearchhttps://github.com/elastic/helm-charts/blob/7.8/elasticsearch/values.yaml,看到了可以更改的地方,然后创建了命令:

helm install elastic/elasticsearch --version 7.8.0

但是在我的CD工具中,最小主节点是不同的值,并且由于这是一个环境变量,因此我将命令行更改为:

helm install elastic/elasticsearch --set minimumMasterNodes=1 --set protocol=https  --version 7.8.0

因此,一旦正确提供了MIN_MASTER_NODES环境变量,上面的命令将在CD工具中毫无问题地运行。