Guest User

Untitled

a guest
Dec 17th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. RESSOURCE_IGNORE="^(namespaces|pods|events|nodes|clusters|storageclasses|thirdpartyresources|clusterrolebindings|clusterroles|componentstatuses|persistentvolumes)$"
  4.  
  5. echo "-> Getting namespaces ..."
  6. kubectl get --export -o=json ns | \
  7. jq '.items[] |
  8. select(.metadata.name!="kube-system") |
  9. select(.metadata.name!="default") |
  10. del(.status,
  11. .metadata.uid,
  12. .metadata.selfLink,
  13. .metadata.resourceVersion,
  14. .metadata.creationTimestamp,
  15. .metadata.generation
  16. )' > ./backup-namespaces.json
  17. echo "=> Namespaces saved."
  18.  
  19. echo "-> Saving every namespaced objects"
  20. for ns in $(jq -r '.metadata.name' < ./backup-namespaces.json); do
  21. echo "--> Currently saving namespace: $ns"
  22. mkdir "backup-$ns"
  23. for ressource in $(kubectl get --help 2>&1 | grep ' \* ' | sed 1d | awk '{ print $2}' | tr "\n" ' '); do
  24. if [[ "$ressource" =~ $RESSOURCE_IGNORE ]]; then
  25. continue
  26. fi
  27. echo "---> Saving ressource: $ressource"
  28. EXPORT="$(kubectl --namespace="${ns}" get --export -o=json "$ressource" | \
  29. jq '.items[] |
  30. select(.type!="kubernetes.io/service-account-token") |
  31. del(
  32. .spec.clusterIP,
  33. .metadata.uid,
  34. .metadata.selfLink,
  35. .metadata.resourceVersion,
  36. .metadata.creationTimestamp,
  37. .metadata.generation,
  38. .status,
  39. .spec.template.spec.securityContext,
  40. .spec.template.spec.dnsPolicy,
  41. .spec.template.spec.terminationGracePeriodSeconds,
  42. .spec.template.spec.restartPolicy
  43. )')"
  44. if [ -n "$EXPORT" ]; then
  45. echo "$EXPORT" >> "./backup-$ns/$ressource.json"
  46. fi
  47. echo "---> Saved ressource: $ressource"
  48. done
  49. echo "--> Namespace saved: $ns"
  50. done
  51. echo "=> Namespaced objects saved."
  52.  
  53. echo "-> Saving non-namespaced objects..."
  54. kubectl --namespace="${ns}" get --export -o=json clusterrolebindings,clusterroles,componentstatuses,storageclasses,thirdpartyresources,persistentvolumes | \
  55. jq '.items[] |
  56. select(.type!="kubernetes.io/service-account-token") |
  57. del(
  58. .spec.clusterIP,
  59. .metadata.uid,
  60. .metadata.selfLink,
  61. .metadata.resourceVersion,
  62. .metadata.creationTimestamp,
  63. .metadata.generation,
  64. .status,
  65. .spec.template.spec.securityContext,
  66. .spec.template.spec.dnsPolicy,
  67. .spec.template.spec.terminationGracePeriodSeconds,
  68. .spec.template.spec.restartPolicy
  69. )' >> "./backup-non-namespaced.json"
  70. echo "=> Saved non-namespaced objects."
  71.  
  72. echo "Completed."
Add Comment
Please, Sign In to add comment