Helm Chart使用环境变量教程介绍
Helm charts 是一种方便高效的收集Kubernetes资源和构建应用集群的方式。他们还可以在本地计算机上使用环境变量来定义要使用的 Kubernetes 部署值。
如何在Helm Chart中使用环境变量?本教程将介绍在 Kubernetes 部署中包含环境变量的不同方式。
先决条件
- 访问终端/命令行
- Minikube 安装和配置(查看我们关于如何在 Ubuntu上安装 Minikube和如何在 CentOS 上安装 Minikube 的指南)
- Helm 安装和配置
如何在 Helm 中使用环境变量
在 Helm 图表中使用环境变量有两种方法:
- 使用Kubernetes 中的秘密对象在部署中挂载环境变量。
- 在 Helm 图表中编写自定义帮助程序。
在本教程中,我们使用USERNAME
和PASSWORD
环境变量。
注意: Helm 的环境变量的工作方式类似于Linux、Windows或任何其他操作系统中的环境变量。它传递有助于定义环境的信息。
在 Kubernetes 部署中挂载环境变量
1.values.yaml
将以下行添加到Helm 图表中的文件中:
username: root
password: password
2. 创建一个名为的新文件secret.yaml
并将其添加到template
文件夹中。将以下内容添加到文件中:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-auth
data:
password: {{ .Values.password | b64enc }}
username: {{ .Values.username | b64enc }}
3. 如何在Helm Chart中使用环境变量?编辑env
Kubernetes 部署的部分以包含secret.yaml
文件中定义的新变量:
...
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: "USERNAME"
valueFrom:
secretKeyRef:
key: username
name: {{ .Release.Name }}-auth
- name: "PASSWORD"
valueFrom:
secretKeyRef:
key: password
name: {{ .Release.Name }}-auth
...
4. Helm Chart使用环境变量教程:将环境变量设置为你想要的值。例如,将USERNAME
变量设置为hello_user
:
export USERNAME=hello_user
5. 通过将变量与helm install
命令组合来将变量应用于 Helm 图表:
helm install --set username=$USERNAME [chart name] [chart path]
其中:
[chart name]
是你正在使用的 Helm 图表的名称。[chart path]
是你正在使用的 Helm 图表的路径。
如果你想在应用新设置之前对其进行测试,请使用试运行模式:
helm install --dry-run --set username=$USERNAME --debug [chart name] [chart path]
Helm Chart如何使用环境变量:在 Helm 中添加自定义助手
1. 使用文件的env
部分values.yaml
来定义敏感和非敏感变量。使用normal
和secret
类别列出适当的变量:
secret:
name: app-env-var-secret
env:
normal:
variable1: value1
variable2: value2
variable3: value3
secret:
variable4: value4
variable5: value5
variable6: value6
使用此方法,我们然后将USERNAME
和PASSWORD
变量添加到secret
类别中:
…
secret:
USERNAME: [username]
PASSWORD: [password]
其中:
[username]
是你要为USERNAME变量设置的值。
2. 将values.yaml
文件路径添加到文件底部.gitignore
:
charts/values.yaml
3.secrets.yaml
在templates
文件夹中创建一个文件,添加如下内容:
apiVersion: v1
kind: Secret
metadata:
name: {{ .Values.secret.name }}
type: Opaque
data:
{{- range $key, $val := .Values.env.secret }}
{{ $key }}: {{ $val | b64enc }}
{{- end}}
4. 如何在Helm Chart中使用环境变量?在helpers.tpl
文件templates
夹中找到文件。将以下内容添加到文件底部以编写新的辅助函数:
{{- define "helpers.list-env-variables"}}
{{- range $key, $val := .Values.env.secret }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: app-env-secret
key: {{ $key }}
{{- end}}
{{- end }}
5. 通过将以下内容添加到你的pod.yaml
文件来调用你创建的帮助程序:
…
spec:
containers:
- name: mycontainer
image: redis
env:
{{- include "helpers.list-env-variables" . | indent 6 }}
restartPolicy: Never
注意:通过我们的教程了解有关使用 Helm 图表的更多信息,例如:
- 创建 Helm Chart
- 使用 Helm Chart 安装 Elasticsearch
- 获取 Helm 版本的 Helm 值
Helm Chart如何使用环境变量?结论
遵循本教程后,你应该将部署设置为使用环境变量。