如何在Helm Chart中使用环境变量?示例分布指南

2021年11月20日16:51:38 发表评论 3,759 次浏览

Helm Chart使用环境变量教程介绍

Helm charts 是一种方便高效的收集Kubernetes资源和构建应用集群的方式。他们还可以在本地计算机上使用环境变量来定义要使用的 Kubernetes 部署值。

如何在Helm Chart中使用环境变量本教程将介绍在 Kubernetes 部署中包含环境变量的不同方式。

先决条件

  • 访问终端/命令行
  • Minikube 安装和配置(查看我们关于如何在 Ubuntu上安装 Minikube和如何在 CentOS 上安装 Minikube 的指南)
  • Helm 安装和配置

如何在 Helm 中使用环境变量

在 Helm 图表中使用环境变量有两种方法:

  • 使用Kubernetes 中的秘密对象在部署中挂载环境变量。
  • 在 Helm 图表中编写自定义帮助程序。

在本教程中,我们使用USERNAMEPASSWORD环境变量。

注意: Helm 的环境变量的工作方式类似于Linux、Windows或任何其他操作系统中的环境变量。它传递有助于定义环境的信息。

在 Kubernetes 部署中挂载环境变量

1.values.yaml将以下行添加到Helm 图表中的文件中:

username: root
password: password
如何在Helm Chart中使用环境变量?示例分布指南

2. 创建一个名为的新文件secret.yaml并将其添加到template文件夹中。将以下内容添加到文件中:

apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-auth
data:
  password: {{ .Values.password | b64enc }}
  username: {{ .Values.username | b64enc }}
如何在Helm Chart中使用环境变量?示例分布指南

3. 如何在Helm Chart中使用环境变量?编辑envKubernetes 部署的部分以包含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
...
如何在Helm Chart中使用环境变量?示例分布指南

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 Chart如何使用环境变量:在 Helm 中添加自定义助手

1. 使用文件的env部分values.yaml来定义敏感和非敏感变量。使用normalsecret类别列出适当的变量:

secret:
  name: app-env-var-secret
env:
  normal:
    variable1: value1
    variable2: value2
    variable3: value3
  secret:
    variable4: value4
    variable5: value5
    variable6: value6

使用此方法,我们然后将USERNAMEPASSWORD变量添加到secret类别中:

…
  secret:
    USERNAME: [username]
    PASSWORD: [password]

其中:

  • [username] 是你要为USERNAME变量设置的值。
  • 输入密码查看加密内容:

     
    是你要为PASSWORD变量设置的值。
如何在Helm Chart中使用环境变量?示例分布指南

2. 将values.yaml文件路径添加到文件底部.gitignore

charts/values.yaml

3.secrets.yamltemplates文件夹中创建一个文件,添加如下内容:

apiVersion: v1
kind: Secret
metadata:
  name: {{ .Values.secret.name }}
type: Opaque
data:
  {{- range $key, $val := .Values.env.secret }}
  {{ $key }}: {{ $val | b64enc }}
  {{- end}}
如何在Helm Chart中使用环境变量?示例分布指南

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 }}
如何在Helm Chart中使用环境变量?示例分布指南
Helm Chart使用环境变量教程

5. 通过将以下内容添加到你的pod.yaml文件来调用你创建的帮助程序:

…
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
    {{- include "helpers.list-env-variables" . | indent 6 }}
  restartPolicy: Never
如何在Helm Chart中使用环境变量?示例分布指南
Helm Chart使用环境变量教程

注意:通过我们的教程了解有关使用 Helm 图表的更多信息,例如:

  • 创建 Helm Chart
  • 使用 Helm Chart 安装 Elasticsearch
  • 获取 Helm 版本的 Helm 值

Helm Chart如何使用环境变量?结论

遵循本教程后,你应该将部署设置为使用环境变量。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: