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 .
yaml .
:
, .
, .
, .
kubernetes CronJob.
.
git .
.
.env .
:
./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
, 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.