我正在尝试编写一个脚本,使用kubectl exec在容器内运行一些命令。我想使用容器中存在的环境变量,但很难弄清楚如何防止本地shell评估var,并在容器中对其进行评估。
这是我的第一次尝试,但$MONGODB_ROOT_PASSWORD是由我的本地shell评估的,而不是在容器中:
kubectl -n enterprise exec mycontainer -- mongodump --username root --password $MONGODB_ROOT_PASSWORD --out /dump
我试过这个,但管道也有同样的问题,它是在我的本地而不是容器中评估的:
kubectl -n enterprise exec mycontainer -- echo 'mongodump --username root --password $MONGODB_ROOT_PASSWORD --out /dump' | sh
有没有办法和kubectl执行官一起做到这一点?
您需要一个sh -c
,就像exec -- sh -c 'whatever $PASSWORD'
一样。