Esta página muestra cómo definir variables de entorno para un contenedor en un Pod de Kubernetes.
Debes tener un cluster Kubernetes a tu dispocición, y la herramienta de línea de comandos kubectl debe estar configurada. Si no tienes un cluster, puedes crear uno utilizando Minikube,
o puedes utilizar una de las siguientes herramientas en línea:
Cuando creas un Pod, puedes configurar variables de entorno para los contenedores
que se ejecutan dentro del Pod. Para configurar variables de entorno, incluye el campo env o
envFrom en el archivo de configuración.
Los campos env y envFrom tienen efectos diferentes.
envenvFromenvFrom, todos los pares clave-valor en el ConfigMap o Secret referenciado
se configuran como variables de entorno para el contenedor.
También puedes especificar una cadena de prefijo común.Puedes leer más sobre ConfigMap y Secret.
Esta página explica cómo utilizar env.
En este ejercicio, crearás un Pod que ejecuta un contenedor. El archivo de
configuración para el Pod define una variable de entorno con nombre DEMO_GREETING y
valor "Hello from the environment". Aquí está el manifiesto de configuración para el
Pod:
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
labels:
purpose: demonstrate-envars
spec:
containers:
- name: envar-demo-container
image: gcr.io/google-samples/hello-app:2.0
env:
- name: DEMO_GREETING
value: "Hello from the environment"
- name: DEMO_FAREWELL
value: "Such a sweet sorrow"
Crea un Pod basado en ese manifiesto:
kubectl apply -f https://k8s.io/examples/pods/inject/envars.yaml
Lista los Pods en ejecución:
kubectl get pods -l purpose=demonstrate-envars
La salida es similar a:
NAME READY STATUS RESTARTS AGE
envar-demo 1/1 Running 0 9s
Lista las variables de entorno del contenedor que se ejecuta en el Pod:
kubectl exec envar-demo -- printenv
La salida es similar a esto:
NODE_VERSION=4.4.2
EXAMPLE_SERVICE_PORT_8080_TCP_ADDR=10.3.245.237
HOSTNAME=envar-demo
...
DEMO_GREETING=Hello from the environment
DEMO_FAREWELL=Such a sweet sorrow
env o envFrom
sobrescriben cualquier variable de entorno especificada en la imagen del contenedor.Las variables de entorno que defines en la configuración de un Pod debajo de
.spec.containers[*].env[*] pueden ser utilizadas en otras partes de la configuración, por
ejemplo en comandos y argumentos que configuras para los contenedores del Pod.
En el ejemplo de configuración debajo, las variables de entorno GREETING, HONORIFIC, y
NAME se configuran como Cálidos saludos, al más honorable, y Kubernetes, respectivamente. La variable de entorno
MESSAGE combina todas estas variables de entorno y luego las utiliza
como un argumento de CLI para el contenedor env-print-demo.
El nombre de una variable de entorno puede consistir en cualesquiera caracteres ASCII imprimibles excepto '='.
apiVersion: v1
kind: Pod
metadata:
name: print-greeting
spec:
containers:
- name: env-print-demo
image: bash
env:
- name: GREETING
value: "Cálidos saludos"
- name: HONORIFIC
value: "al más honorable"
- name: NAME
value: "Kubernetes"
- name: MESSAGE
value: "$(GREETING) $(HONORIFIC) $(NAME)"
command: ["echo"]
args: ["$(MESSAGE)"]
Al crearse, el comando echo Cálidos saludos al más honorable Kubernetes se ejecuta en el contenedor.