我在Helm图表的templates目录中有我的deployment.yaml文件,其中包含我将使用Helm运行的容器的几个环境变量 .
现在我希望能够从运行helm的任何机器本地提取环境变量,这样我就可以隐藏秘密 .
当我使用Helm运行应用程序时,如何传入此函并让helm在本地获取环境变量?
这是我的deployment.yaml文件的一部分
...
...
spec:
restartPolicy: Always
containers:
- name: sample-app
image: "sample-app:latest"
imagePullPolicy: Always
env:
- name: "USERNAME"
value: "app-username"
- name: "PASSWORD"
value: "28sin47dsk9ik"
...
...
当我运行helm时,如何从本地环境变量中提取USERNAME和PASSWORD的值?
这可能吗?如果是,那我该怎么做?
1 回答
您可以
export
变量并在运行helm install
时使用它 .在此之前,您必须修改图表,以便在安装时值为
set
.如果您已经知道,请跳过此部分,如何设置模板字段 .
由于您不想公开数据,因此最好将其保存为kubernetes中的秘密 .
首先,在
Values
文件中添加这两行,以便可以从外部设置这两个值 .现在,在
template
文件夹中添加secret.yaml
文件 . 并将此代码段复制到该文件中 .现在调整部署yaml模板并在
env
部分进行更改,如下所示如果已为
--set
标志正确修改了模板,则可以使用环境变量进行设置 .现在在运行helm install时使用此变量,
如果您在
dry-run
模式下运行此helm install
,则可以验证更改,您可以看到秘密用户名的数据已更改为
root-user
.我已将this example添加到github repo中 .
关于这一点,在kubernetes/helm repo中也有一些讨论 . 您可以看到this issue以了解使用环境变量的所有其他方法 .