GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo usar variables de entorno con gráficos de Helm

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

Ubuntu
  1. Cómo uso Vagrant con libvirt

  2. ¿Hacer referencia a variables de entorno *en* /etc/environment?

  3. ¿Cómo usar variables atómicas en C?

  4. Cómo configurar las variables de entorno de Linux con Ansible

  5. Cómo desarmar muchas variables de entorno

Cómo usar variables en Ansible Playbook

Cómo instalar y usar Helm en Kubernetes

Cómo usar variables en secuencias de comandos de Shell

Cómo usar GeoIP con Nginx en Ubuntu 16.04

Cómo configurar/desconfigurar variables de entorno en Linux

Cómo usar la autenticación de dos factores con Ubuntu