Sauvegarde de la configuration des ressources sur Kubernetes

Les administrateurs de clusters kubernetes sont confrontés à la tâche de sauvegarder la configuration des ressources de l'espace de noms et de la transférer vers un autre cluster, ou de faire une sauvegarde d'un site de test instable. Un script à une ligne avec l'utilitaire kubectl, couramment écrit dans le terminal, s'acquitte de cette tâche sans aucun problème, mais que se passe-t-il si vous êtes fatigué de passer quelques minutes à chaque fois sur le prochain script. C'est ainsi que l'utilitaire kube-dump est apparu , en fait c'est un utilitaire qui ne peut faire qu'une seule chose: vider les ressources du cluster.





exemple de l'utilitaire de sauvegarde de toutes les ressources d'un espace de noms

yaml .





:





  • , .





  • , .





  • , .





  • kubernetes CronJob.





  • .





  • git .





  • .





.env .





kubectl , jq yq. , --help.





:





./kube-dump dump
      
      



. .





dev prod /dump, kubectl.





docker pull woozymasta/kube-dump:latest
docker run --tty --interactive --rm \
  --volume $HOME/.kube:/.kube \
  --volume $HOME/dump:/dump \
  woozymasta/kube-dump:latest \
  dump-namespaces -n dev,prod -d /dump --kube-config /.kube/config
      
      



CronJob

CronJob git . .





, ServiceAccount view. view, , .





CronJob ServiceAccount ClusterRoleBinding view:





kubectl create ns kube-dump
kubectl -n kube-dump apply -f \
  https://raw.githubusercontent.com/WoozyMasta/kube-dump/master/deploy/cluster-role-view.yaml
      
      



GitLab OAuth , :\





kubectl -n kube-dump create secret generic kube-dump \
  --from-literal=GIT_REMOTE_URL=https://oauth2:$TOKEN@corp-gitlab.com/devops/cluster-bkp.git
      
      



Avant l'installation, configurez les variables d'environnement en fonction de vos besoins, dans l' exemple, par défaut , le mode de copie des espaces de noms dev et prod est défini, suivi de la validation des modifications dans la branche my-cluster et de l'envoi au référentiel distant.





Configurez CronJob dans lequel nous spécifions la fréquence de lancement de la tâche:





spec:
  schedule: "0 1 * * *"
      
      



Vous pouvez également installer l'exemple tel quel, puis le modifier:





kubectl -n kube-dump apply -f \
  https://github.com/WoozyMasta/kube-dump/blob/master/deploy/cronjob-git-token.yaml
kubectl -n kube-dump edit cronjobs.batch kube-dump
      
      



Plans de développement ultérieur

  • Implémentez l'envoi de vidages vers un stockage compatible s3;





  • Envoi de notifications par e-mail et webhook;





  • Git-crypt pour crypter les données sensibles;





  • Autocomplétion Bash / Zsh;





  • Prise en charge d'OpenShift.





Je serai également heureux de recevoir vos commentaires et suggestions avec des idées et des critiques.





Liens

  • Github





  • Docker Hub





  • Pages GitHub








All Articles