In this comprehensive guide, you will learn how to effectively get and list environment variables within a Kubernetes pod. Understanding how to work with environment variables is essential for managing and configuring applications running in Kubernetes clusters. We will cover step-by-step instructions to retrieve the environment variables of a pod, along with in-depth explanations and practical examples for a deeper understanding. By the end of this post, you will be proficient in using kubectl commands to handle environment variables in your Kubernetes environment.

Section 1: Direct Commands to Get and List Environment Variables in a Kubernetes Pod

1.1 Get the Environment Variables of a Pod

Run the following command to obtain the environment variables of a Kubernetes pod:

1
kubectl get pods

Output:

1
2
NAME                                  READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-fb5c67579-8tghg   1/1     Running   0          7m39s

Note the name of the pod you want to inspect for environment variables.

1.2 Show Environment Variables of a Pod

Utilize the kubectl get env command to display the environment variables within a specific pod. Replace <pod-name> with the name of your pod:

1
kubectl get env <pod-name>

Example:

1
kubectl get env kubernetes-bootcamp-fb5c67579-8tghg

Output:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=kubernetes-bootcamp-fb5c67579-8tghg
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
NPM_CONFIG_LOGLEVEL=info
NODE_VERSION=6.3.1
HOME=/root

1.3 List Environment Variables of a Pod

Similarly, you can use the kubectl list environment variables command to list environment variables of a pod. Substitute <pod-name> with the actual name of your pod:

1
kubectl list environment variables <pod-name>

Example:

1
kubectl list environment variables kubernetes-bootcamp-fb5c67579-8tghg

Output:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=kubernetes-bootcamp-fb5c67579-8tghg
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
NPM_CONFIG_LOGLEVEL=info
NODE_VERSION=6.3.1
HOME=/root

Section 2: In-Depth Explanation and Examples

Now, let’s delve deeper into each command and understand their significance with practical scenarios.

2.1 Get the Environment Variables of a Pod - Explanation and Examples

The kubectl get pods command is commonly used to retrieve information about running pods in a Kubernetes cluster. It displays a table containing essential details about each pod, such as its name, readiness status, restart count, and age.

Example Scenario: Imagine you have multiple pods running different applications in your Kubernetes cluster. To identify the pod responsible for handling specific functions or services, you can use the kubectl get pods command. Once you identify the relevant pod, note its name for the subsequent steps.

2.2 Show Environment Variables of a Pod - Explanation and Examples

The kubectl get env <pod-name> command enables you to view the environment variables set within a particular pod. It provides insight into the configuration and runtime environment of the pod.

Example Scenario:

Suppose you are deploying a custom application that relies on specific environment variables for configuration. Using the kubectl get env command, you can verify that the necessary environment variables are correctly set in the pod. This helps ensure that your application functions as expected within the Kubernetes environment.

2.3 List Environment Variables of a Pod - Explanation and Examples

Similarly, the kubectl list environment variables <pod-name> command lets you list all environment variables of a given pod. It presents the environment variables in an organized manner, making it easier to review them.

Example Scenario:

In a complex microservices architecture, one pod may depend on various environment variables to communicate with other services or databases. By employing the kubectl list environment variables command, you can comprehensively examine the environment variables of the pod and identify potential issues related to configuration or connectivity.

In Summary

Mastering the art of getting and listing environment variables in Kubernetes pods empowers you to effectively manage and troubleshoot applications running in your clusters. By executing the provided commands and understanding their significance through practical scenarios, you’ve gained valuable insights into Kubernetes environment variables. Continue exploring Kubernetes documentation and best practices to further enhance your expertise in Kubernetes management. With this knowledge, you’re well-equipped to optimize your Kubernetes environment and ensure the seamless operation of your applications.

Example Scenario: Deploying a Node.js Application with Environment Variables

Suppose you have a Node.js application that requires certain environment variables for proper configuration, such as database connection details and API keys. Let’s walk through the process of deploying this application to Kubernetes and utilizing the kubectl get and kubectl list commands to work with environment variables.

Create a Kubernetes Deployment:

Assuming you have the Node.js application code and Dockerized image ready, create a Kubernetes Deployment to run the application as follows:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-node-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-node-app
  template:
    metadata:
      labels:
        app: my-node-app
    spec:
      containers:
      - name: my-node-app
        image: your-registry/my-node-app:latest
        ports:
        - containerPort: 3000
        env:
        - name: DATABASE_URL
          value: "mongodb://db.example.com:27017/mydb"
        - name: API_KEY
          value: "your-api-key-here"

In this example, we define environment variables DATABASE_URL and API_KEY for the Node.js application.

Deploy the Application:

Apply the deployment configuration to your Kubernetes cluster using the kubectl apply command:

1
kubectl apply -f node-app-deployment.yaml

Get and Show Environment Variables:

Once the application is deployed, use the kubectl get and kubectl get env commands to access the environment variables:

1
kubectl get pods

Output:

1
2
NAME                          READY   STATUS    RESTARTS   AGE
my-node-app-7b4d959c4d-4xqpt   1/1     Running   0          5m

In this output, note the name of the pod (my-node-app-7b4d959c4d-4xqpt in this example).

1
kubectl get env my-node-app-7b4d959c4d-4xqpt

Output:

1
2
DATABASE_URL=mongodb://db.example.com:27017/mydb
API_KEY=your-api-key-here

You can verify that the environment variables DATABASE_URL and API_KEY are correctly set in the pod.

List Environment Variables:

To list all environment variables of the pod, use the kubectl list environment variables command:

1
kubectl list environment variables my-node-app-7b4d959c4d-4xqpt

Output:

1
2
DATABASE_URL=mongodb://db.example.com:27017/mydb
API_KEY=your-api-key-here

The command provides the same result as kubectl get env, displaying all environment variables for the specified pod.

With this example, you’ve successfully deployed a Node.js application in Kubernetes, utilizing environment variables for configuration. By employing the kubectl get and kubectl list commands, you can easily access and verify the environment variables, ensuring your application runs smoothly in the Kubernetes environment.