Introducción
Los gráficos de Helm son una forma conveniente y eficiente de recopilar recursos de Kubernetes y crear clústeres de aplicaciones. También pueden usar variables de entorno en máquinas locales para definir valores para su implementación de Kubernetes.
Este tutorial cubrirá diferentes formas en que puede incluir variables de entorno en su implementación de Kubernetes.
 Requisitos previos
- Acceso a la terminal/línea de comando
 - Minikube instalado y configurado (consulte nuestras guías sobre Cómo instalar Minikube en Ubuntu y Cómo instalar Minikube en CentOS)
 - Helm instalado y configurado
 
Cómo usar variables de entorno con Helm
Hay dos métodos para usar variables de entorno con gráficos de Helm:
- Uso del objeto secreto en Kubernetes para montar variables de entorno en una implementación.
 - Escribir un ayudante personalizado en un gráfico de Helm.
 
 Para este tutorial, estamos usando el USERNAME  y PASSWORD  variables de entorno.
Variables de entorno de montaje en una implementación de Kubernetes
 1. Agregue las siguientes líneas a values.yaml  archivo en su cuadro de Helm:
username: root
password: password 
 
 2. Crea un nuevo archivo llamado secret.yaml  y agréguelo a la template  carpeta. Agregue el siguiente contenido al archivo:
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Release.Name }}-auth
data:
  password: {{ .Values.password | b64enc }}
  username: {{ .Values.username | b64enc }} 
 
 3. Edite el env  de su implementación de Kubernetes para incluir las nuevas variables definidas en secret.yaml  archivo:
...
      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. Establezca las variables de entorno en los valores deseados. Por ejemplo, establezca el USERNAME  variable a hello_user  :
export USERNAME=hello_user 
 5. Aplique las variables al gráfico de Helm combinándolas con helm install  comando:
helm install --set username=$USERNAME [chart name] [chart path] donde:
[chart name]es el nombre del gráfico de Helm que está utilizando.[chart path]es la ruta al gráfico de Helm que está utilizando.
Si desea probar la nueva configuración antes de aplicarla, use la prueba modo:
helm install --dry-run --set username=$USERNAME --debug [chart name] [chart path] 
 Agregar un asistente personalizado en Helm
 1. Usa el env  sección de values.yaml  archivo para definir variables confidenciales y no confidenciales. Usa el normal  y secret  categorías para listar las variables apropiadas:
secret:
  name: app-env-var-secret
env:
  normal:
    variable1: value1
    variable2: value2
    variable3: value3
  secret:
    variable4: value4
    variable5: value5
    variable6: value6 
 Usando este método, luego agregamos el USERNAME  y PASSWORD  variables al secret  categoría:
…
  secret:
    USERNAME: [username]
    PASSWORD: [password] donde:
[username]es el valor que desea establecer para el NOMBRE DE USUARIO variables.[password]es el valor que desea establecer para la CONTRASEÑA variables.
 
 2. Agregue la ruta a values.yaml  archivo al final de su .gitignore  archivo:
charts/values.yaml 
 3. Crea un archivo llamado secrets.yaml  en las templates  carpeta y agregue el siguiente contenido:
apiVersion: v1
kind: Secret
metadata:
  name: {{ .Values.secret.name }}
type: Opaque
data:
  {{- range $key, $val := .Values.env.secret }}
  {{ $key }}: {{ $val | b64enc }}
  {{- end}} 
 
 4. Encuentra el helpers.tpl  archivo en las templates  carpeta. Agregue lo siguiente al final del archivo para escribir una nueva función auxiliar:
{{- define "helpers.list-env-variables"}}
{{- range $key, $val := .Values.env.secret }}
- name: {{ $key }}
  valueFrom:
    secretKeyRef:
      name: app-env-secret
      key: {{ $key }}
{{- end}}
{{- end }} 
 
 5. Llame al asistente que creó agregando lo siguiente a su pod.yaml  archivo:
…
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
    {{- include "helpers.list-env-variables" . | indent 6 }}
  restartPolicy: Never