Home > front end >  How to pass env variable to a kubectl exec script call?
How to pass env variable to a kubectl exec script call?

Time:12-10

How do I pass a environment variable into a kubectl exec command, which is calling a script?

kubectl exec client -n namespace -- /mnt/script.sh

In my script.sh, I need the value of the passed variable.

I tried:

kubectl exec client -n namespace -- PASSWORD=pswd /mnt/script.sh

which errors with:

OCI runtime exec failed: exec failed: unable to start container process: exec: "PASSWORD=pswd": executable file not found in $PATH: unknown

CodePudding user response:

You can use env(1)

kubectl exec client -n namespace -- \
  env PASSWORD=pswd /mnt/script.sh

or explicitly wrap the command in an sh(1) invocation so a shell processes it

kubectl exec client -n namespace -- \
  sh -c 'PASSWORD=pswd /mnt/script.sh'

This comes with the usual caveats around kubectl exec: a "distroless" image may not have these standard tools; you're only modifying one replica of a Deployment; your changes will be lost as soon as the Pod is deleted, which can sometimes happen outside of your control.

  • Related