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