在kubernetes GitHub问题页面上讨论了相同的问题,用户“ alahijani”制作了一个bash脚本,该脚本导出所有yaml并将其写入单个文件和文件夹。
由于此问题在Google上排名很高,并且由于我发现该解决方案非常好,因此在此代表它。
Bash脚本将yaml导出到子文件夹:
for n in $(kubectl get -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob)
do
mkdir -p $(dirname $n)
kubectl get -o=yaml --export $n > $n.yaml
done
另一个用户“ acondrat”制作了一个不使用目录的脚本,这使得kubectl apply -f
以后制作脚本变得容易。
Bash脚本将yaml导出到当前文件夹:
for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token')
do
kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml
done
最后一个脚本不包括服务帐户。