Skip to content

Instantly share code, notes, and snippets.

@mattmattox
Last active March 1, 2024 06:36
Show Gist options
  • Save mattmattox/d32b3fea4820075c08c6cc2f6d736702 to your computer and use it in GitHub Desktop.
Save mattmattox/d32b3fea4820075c08c6cc2f6d736702 to your computer and use it in GitHub Desktop.
Recovering cluster.yml and cluster.rkestate from kubeconfig
#!/bin/bash
echo "Building cluster_recovery.yml..."
echo "Working on Nodes..."
echo 'nodes:' > cluster_recovery.yml
kubectl --kubeconfig kube_config_cluster.yml -n kube-system get configmap full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r .desiredState.rkeConfig.nodes | yq r - | sed 's/^/ /' | \
sed -e 's/internalAddress/internal_address/g' | \
sed -e 's/hostnameOverride/hostname_override/g' | \
sed -e 's/sshKeyPath/ssh_key_path/g' >> cluster_recovery.yml
echo "" >> cluster_recovery.yml
echo "Working on services..."
echo 'services:' >> cluster_recovery.yml
kubectl --kubeconfig kube_config_cluster.yml -n kube-system get configmap full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r .desiredState.rkeConfig.services | yq r - | sed 's/^/ /' >> cluster_recovery.yml
echo "" >> cluster_recovery.yml
echo "Working on network..."
echo 'network:' >> cluster_recovery.yml
kubectl --kubeconfig kube_config_cluster.yml -n kube-system get configmap full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r .desiredState.rkeConfig.network | yq r - | sed 's/^/ /' >> cluster_recovery.yml
echo "" >> cluster_recovery.yml
echo "Working on authentication..."
echo 'authentication:' >> cluster_recovery.yml
kubectl --kubeconfig kube_config_cluster.yml -n kube-system get configmap full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r .desiredState.rkeConfig.authentication | yq r - | sed 's/^/ /' >> cluster_recovery.yml
echo "" >> cluster_recovery.yml
echo "Working on systemImages..."
echo 'system_images:' >> cluster_recovery.yml
kubectl --kubeconfig kube_config_cluster.yml -n kube-system get configmap full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r .desiredState.rkeConfig.systemImages | yq r - | sed 's/^/ /' >> cluster_recovery.yml
echo "" >> cluster_recovery.yml
echo "Building cluster_recovery.rkestate..."
kubectl --kubeconfig kube_config_cluster.yml -n kube-system get configmap full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r . > cluster_recovery.rkestate
echo "Running rke up..."
rke up --config cluster_recovery.yml
@litao3rd
Copy link

litao3rd commented Mar 1, 2024

I do not have full-cluster-state configmap in a working cluster, no idea also ? @litao3rd did you find another option?

nop...I rebuild the cluster

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