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.
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
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.