If I good understood, you want to pass some environment variables to pod and then use them with another environment variable?
It can be achieved in Deployment
using Dependent Environment Variables.
When you create a Pod, you can set dependent environment variables for the containers that run in the Pod. To set dependent environment variables, you can use $(VAR_NAME) in the value of env in the configuration file.
Test YAML
kind: Pod
metadata:
name: dependent-envars-demo
spec:
containers:
- name: dependent-envars-demo
args:
- while true; do echo -en '\n'; printf DIRECTORY=$DIRECTORY'\n'; printf TOKEN=$TOKEN'\n'; sleep 300; done;
command:
- sh
- -c
image: busybox
env:
- name: SERVICE_PORT
value: "80"
- name: DIRECTORY
value: "/home/test"
- name: TOKEN
value: "$(DIRECTORY)/token"
To verify if this is working, you should check logs.
DIRECTORY=/home/test
TOKEN=/home/test/token
Regarding ConfigMap, it should be consider as normal text, not bash commands. It help separate your code from configuration and it's mostly key: value
type. However, there are some specific scenario, where ConfigMap
contains script body and later it can be used in pod. Example can be found in another Stackoverflow thread or USING KUBERNETES CONFIGMAPS AS CODE article.
Last thing I want to mention that Kubernetes
have ConfigMap
for configuration changes and Secrets for more sensitive data.