
======================================= | |
Method 1 | |
======================================= | |
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 | |
======================================= | |
Method 2 | |
======================================= | |
kubectl get all --export=true -o yaml > All-api.yaml | |
kubectl get all --export=true -o yaml --all-namespaces > All-api.yaml | |
======================================= | |
Method 3 | |
======================================= | |
Exporting all yaml's from all namespaces. For each namespace a directory is made including persistent volumes! | |
i=$((0)) | |
for n in $(kubectl get -o=custom-columns=NAMESPACE:.metadata.namespace,KIND:.kind,NAME:.metadata.name pv,pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob --all-namespaces | grep -v 'secrets/default-token') | |
do | |
if (( $i < 1 )); then | |
namespace=$n | |
i=$(($i+1)) | |
if [[ "$namespace" == "PersistentVolume" ]]; then | |
kind=$n | |
i=$(($i+1)) | |
fi | |
elif (( $i < 2 )); then | |
kind=$n | |
i=$(($i+1)) | |
elif (( $i < 3 )); then | |
name=$n | |
i=$((0)) | |
echo "saving ${namespace} ${kind} ${name}" | |
if [[ "$namespace" != "NAMESPACE" ]]; then | |
mkdir -p $namespace | |
kubectl get $kind -o=yaml --export $name -n $namespace > $namespace/$kind.$name.yaml | |
fi | |
fi | |
done | |
#and for importing again: | |
path=$(pwd) | |
for n in $(ls -d */) | |
do | |
echo "Creating namespace ${n:0:-1}" | |
kubectl create namespace ${n:0:-1} | |
for yaml in $(ls $path/$n) | |
do | |
echo -e "\t Importing $yaml" | |
kubectl apply -f $path/$n$yaml -n ${n:0:-1} | |
done | |
done | |
======================================= | |
Method 4 | |
======================================= | |
Exporting all yaml's from all namespaces. For each namespace a directory is made including persistent volumes and exclude service account tokens: | |
#!/bin/env bash | |
## https://github.com/kubernetes/kubernetes/issues/24873#issuecomment-416189335 | |
i=$((0)) | |
for n in $(kubectl get -o=custom-columns=NAMESPACE:.metadata.namespace,KIND:.kind,NAME:.metadata.name pv,pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob --all-namespaces | grep -v 'secrets/default-token') | |
do | |
if (( $i < 1 )); then | |
namespace=$n | |
i=$(($i+1)) | |
if [[ "$namespace" == "PersistentVolume" ]]; then | |
kind=$n | |
i=$(($i+1)) | |
fi | |
elif (( $i < 2 )); then | |
kind=$n | |
i=$(($i+1)) | |
elif (( $i < 3 )); then | |
name=$n | |
i=$((0)) | |
if [[ "$namespace" != "NAMESPACE" ]]; then | |
mkdir -p $namespace | |
yaml=$((kubectl get $kind -o=yaml $name -n $namespace ) 2>/dev/null) | |
if [[ $kind != 'Secret' || $yaml != *"type: kubernetes.io/service-account-token"* ]]; then | |
echo "Saving ${namespace}/${kind}.${name}.yaml" | |
kubectl get $kind -o=yaml --export $name -n $namespace > $namespace/$kind.$name.yaml | |
fi | |
fi | |
fi | |
done |















I’m a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND