I have a container running on Kubernetes where I would like to run a command from my local terminal. The working directory of the container based on its yaml file is at say /opt/gopath/src/a/
. However, I would like to run the command at directory /opt/gopath/src/b/
. Additionally, I also need to set certain temporary environment variables before running this command. So currently, this is what I am doing:
kubectl exec $pod_name -- bash -c "cd ../b/; env ENV_VARIABLE_1=ENV_VALUE_2 && env ENV_VARIABLE_2=ENV_VALUE_2 && <cmd to run>".
This seems to be working currently. However, I am not convinced that this is the best way to achieve this. Also, running this command displays all the environment variables in the container -- which I would like not to be printed if possible. Could anyone point me in the right direction?
In case of static variables, I would suggest using Config maps.
Since you need to use temporary variables from a local shell, there is no need to use long and complicated commands as exec connects your terminal to the running Container (pod). I tested your issue and created a simple environment variable on the local system. I used syntax provided by you:
kubectl exec -it $pod_name -- sh -c 'key=123 key2=121; echo "$key $key2"'
To pass env vars, you can just set it like that and add delimiter ';' between variables and your command.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With