Sichern der Ressourcenkonfiguration in Kubernetes

Administratoren von Kubernetes-Clustern stehen vor der Aufgabe, die Ressourcenkonfiguration aus dem Namespace zu speichern und auf einen anderen Cluster zu übertragen oder eine Sicherung eines instabilen Teststandorts zu erstellen. Ein einzeiliges Skript mit dem Dienstprogramm kubectl, das fließend im Terminal geschrieben ist, kann diese Aufgabe problemlos bewältigen. Was ist jedoch, wenn Sie es leid sind, jedes Mal ein paar Minuten Zeit mit dem nächsten Skript zu verbringen? So wurde das Dienstprogramm kube-dump angezeigt. Tatsächlich ist es ein Dienstprogramm, das nur eines tun kann - Clusterressourcen zu sichern .





Beispiel für das Dienstprogramm zum Speichern aller Ressourcen eines Namespace

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
      
      



Konfigurieren Sie vor der Installation die Umgebungsvariablen entsprechend Ihren Anforderungen. Im Beispiel wird standardmäßig der Modus zum Kopieren der Namespaces dev und prod festgelegt. Anschließend werden die Änderungen im Zweig my-cluster festgeschrieben und an das Remote-Repository gesendet.





Richten Sie CronJob ein, in dem wir die Häufigkeit des Taskstarts angeben:





spec:
  schedule: "0 1 * * *"
      
      



Alternativ können Sie das Beispiel unverändert installieren und anschließend bearbeiten:





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
      
      



Pläne für die weitere Entwicklung

  • Implementieren Sie das Senden von Dumps an einen s3-kompatiblen Speicher.





  • Senden von Benachrichtigungen per E-Mail und Webhook;





  • Git-Krypta zum Verschlüsseln sensibler Daten;





  • Bash / Zsh-Autovervollständigung;





  • OpenShift-Unterstützung.





Ich freue mich auch über Ihre Kommentare und Vorschläge mit Ideen und Kritik.





Links

  • Github





  • Docker Hub





  • GitHub-Seiten








All Articles