Skip to content

Instantly share code, notes, and snippets.

@negz
Last active July 11, 2024 10:57
Show Gist options
  • Save negz/c3ee465b48306593f16c523a22015bec to your computer and use it in GitHub Desktop.
Save negz/c3ee465b48306593f16c523a22015bec to your computer and use it in GitHub Desktop.
Dump Kubernetes cluster resources as YAML
#!/usr/bin/env bash
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="configmap secret daemonset deployment service hpa"
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
@nuno-aj-aniceto
Copy link

what is context?

The context of the kubernetes "connection", check the ~/.kube/config file for more information.

If you don't know, just grab your current kubernetes context (ie: if you run minikube or a single-node this is what you want):
cat ~/.kube/config | grep current-context

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment