Environment Variables
You can set environment variables for containers running in a pod. Additionally, Kubernetes automatically exposes certain runtime information via environment variables.
Let’s launch a pod that we pass an environment variable SIMPLE_SERVICE_VERSION
with the value 1.0
:
$ kubectl apply -f https://github.com/openshift-evangelists/kbe/raw/main/specs/envs/pod.yaml
Now, let’s verify from within the cluster if the application running in the pod has picked up the environment variable:
$ kubectl exec envs -t -- curl -s 127.0.0.1:9876/info
The output reflects the value that was set for the environment variable (the default, unless overridden by the variable, is 0.5.0
):
{"host": "127.0.0.1:9876", "version": "1.0", "from": "127.0.0.1"}
You can check what environment variables Kubernetes itself provides automatically using a REST endpoint in the sample application:
$ kubectl exec envs -t -- curl -s 127.0.0.1:9876/env
Your results will vary slightly depending on you cluster configuration, but an example output is included below:
{
"version": "1.0",
"env": "{
'GPG_KEY': 'FBC59DD261FEBA08C40D6991B8E4DFA780EE0021',
'HOSTNAME': 'envs',
'HOME': '/root',
'LANG': 'C.UTF-8',
'PATH': '/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
'REFRESHED_AT': '2022-01-31T00:01',
'PYTHON_VERSION': '2.7.13',
'PYTHON_PIP_VERSION': '9.0.1',
'KUBERNETES_PORT': 'tcp://10.96.0.1:443',
'KUBERNETES_PORT_443_TCP': 'tcp://10.96.0.1:443',
'KUBERNETES_PORT_443_TCP_ADDR': '10.96.0.1',
'KUBERNETES_PORT_443_TCP_PORT': '443',
'KUBERNETES_PORT_443_TCP_PROTO': 'tcp',
'KUBERNETES_SERVICE_HOST': '10.96.0.1',
'KUBERNETES_SERVICE_PORT': '443',
'KUBERNETES_SERVICE_PORT_HTTPS': '443',
'SIMPLE_SERVICE_VERSION': '1.0'
}"
}
Alternatively, you can also use the exec subcommand to display the environment variables within the pod:
$ kubectl exec envs -- printenv
Remove the sample pod with:
$ kubectl delete pod/envs
In addition to the above examples, you can also use secrets, volumes, or the downward API to inject additional information into your container environments.