Skip to content

Instantly share code, notes, and snippets.

@murphybytes
Created November 11, 2024 18:16
Show Gist options
  • Save murphybytes/dc3c74906fea26f948b1664bea0dd201 to your computer and use it in GitHub Desktop.
Save murphybytes/dc3c74906fea26f948b1664bea0dd201 to your computer and use it in GitHub Desktop.
Dumps yaml from connected cluster
#!/usr/bin/env bash
#####################################################################
# This script dumps all resources in a cluster to yaml files
# Usage: ./dump-cluster-as-yaml.sh KUBE-CONTEXT
# Example: ./dump-cluster-as-yaml.sh $(kubectl config current-context)
#####################################################################
set -e
CONTEXT="$1"
if [[ -z ${CONTEXT} ]]; then
echo "Usage: $0 KUBE-CONTEXT"
exit 1
fi
NAMESPACES=$(kubectl --context ${CONTEXT} get -o json namespaces|jq '.items[].metadata.name'|sed "s/\"//g")
RESOURCES="ingress configmap secret daemonset deployment service hpa cronjob"
for ns in ${NAMESPACES};do
for resource in ${RESOURCES};do
rsrcs=$(kubectl --context ${CONTEXT} -n ${ns} get -o json ${resource}|jq '.items[].metadata.name'|sed "s/\"//g")
for r in ${rsrcs};do
dir="${CONTEXT}/${ns}/${resource}"
mkdir -p "${dir}"
kubectl --context ${CONTEXT} -n ${ns} get -o yaml ${resource} ${r} > "${dir}/${r}.yaml"
done
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment