方式一:
#!/bin/bash
# 获取所有命名空间列表
namespaces=$(kubectl get namespaces -o jsonpath='{.items[*].metadata.name}')
# 遍历命名空间
for ns in $namespaces; do
echo "导出命名空间 '$ns' 的资源..."
mkdir -p "$ns" # 创建命名空间文件夹
# 导出 Deployment 资源
kubectl get deployments -n "$ns" -o yaml > "$ns/deployments.yaml"
# 导出 Ingress 资源
kubectl get ingress -n "$ns" -o yaml > "$ns/ingresses.yaml"
# 导出 Service 资源
kubectl get services -n "$ns" -o yaml > "$ns/services.yaml"
# 导出 ConfigMap 资源
kubectl get configmaps -n "$ns" -o yaml > "$ns/configmaps.yaml"
done
echo "资源导出完成。"
方式二:
#!/bin/bash
for NS in namespace;do
mkdir ./$NS
resourceList=(
deploy
services
endpoints
ingress
secrets
pvc
cm
)
printList(){
for aa in ${resourceList[@]};
do
aList=$(kubectl -n $NS get $aa |grep -v NAME |awk '{print $1}')
if [ ! "${aList[*]}"x == "x" ];then
[ -d ./${NS}/$aa ] || mkdir -p ./${NS}/$aa
for i in $aList;
do
echo $aa $i
kubectl -n $NS get $aa $i -o yaml > ${NS}/${aa}/$i.yaml
done
fi
done
}
# create namespaces yaml
kubectl get namespaces $NS -o yaml > ./${NS}/${NS}-namespaces.yaml
# create pv yaml
pvList=$(kubectl get pv |grep "$NS/" |awk '{print $1}')
if [ ! "${pvList[*]}"x == "x" ];then
for i in ${pvList[@]}
do
echo pv $i
kubectl get pv $i -o yaml > $i.pv.yaml
done
fi
printList
done