3.2 KiB
title | content_type | weight |
---|---|---|
Define Environment Variables for a Container | task | 20 |
This page shows how to define environment variables for a container in a Kubernetes Pod.
{{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}}
Define an environment variable for a container
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 manifest for the
Pod:
{{< codenew file="pods/inject/envars.yaml" >}}
-
Create a Pod based on that manifest:
kubectl apply -f https://k8s.io/examples/pods/inject/envars.yaml
-
List the running Pods:
kubectl get pods -l purpose=demonstrate-envars
The output is similar to:
NAME READY STATUS RESTARTS AGE envar-demo 1/1 Running 0 9s
-
List the Pod's container environment variables:
kubectl exec envar-demo -- printenv
The 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 sorrow
{{< note >}}
The environment variables set using the env
or envFrom
field
override any environment variables specified in the container image.
{{< /note >}}
{{< note >}} The environment variables can reference each other, and cycles are possible, pay attention to the order before using {{< /note >}}
Using environment variables inside of your config
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.
{{% heading "whatsnext" %}}
- Learn more about environment variables.
- Learn about using secrets as environment variables.
- See [EnvVarSource](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#envvarsource-v1-core).