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