This page shows how to define environment variables for a container in a Kubernetes Pod.
You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using Minikube, or you can use one of these Kubernetes playgrounds:
To check the version, enter kubectl version.
When you create a Pod, you can set environment variables for the containers
that run in the Pod. To set environment variables, include the env or
envFrom field in the configuration file.
In this exercise, you create a Pod that runs one container. The configuration
file for the Pod defines an environment variable with name DEMO_GREETING and
value "Hello from the environment". Here is the configuration file for the
Pod:
pods/inject/envars.yaml
|
|---|
|
Create a Pod based on the YAML configuration file:
kubectl create -f https://k8s.io/examples/pods/inject/envars.yamlList the running Pods:
kubectl get pods -l purpose=demonstrate-envarsThe output is similar to this:
NAME READY STATUS RESTARTS AGE
envar-demo 1/1 Running 0 9sGet a shell to the container running in your Pod:
kubectl exec -it envar-demo -- /bin/bashIn your shell, run the printenv command to list the environment variables.
root@envar-demo:/# printenvThe output is similar to this:
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 sorrowTo exit the shell, enter exit.
Note: The environment variables set using theenvorenvFromfield will override any environment variables specified in the container image.
Environment variables that you define in a Pod’s configuration can be used elsewhere in the configuration, for example in commands and arguments that you set for the Pod’s containers. In the example configuration below, the GREETING, HONORIFIC, and NAME environment variables are set to Warm greetings to, The Most Honorable, and Kubernetes, respectively. Those environment variables are then used in the CLI arguments passed to the env-print-demo container.
apiVersion: v1
kind: Pod
metadata:
name: print-greeting
spec:
containers:
- name: env-print-demo
image: bash
env:
- name: GREETING
value: "Warm greetings to"
- name: HONORIFIC
value: "The Most Honorable"
- name: NAME
value: "Kubernetes"
command: ["echo"]
args: ["$(GREETING) $(HONORIFIC) $(NAME)"]Upon creation, the command echo Warm greetings to The Most Honorable Kubernetes is run on the container.