Os administradores de clusters de kubernetes enfrentam a tarefa de salvar a configuração de recursos do namespace e transferi-la para outro cluster ou fazer um backup de um site de teste instável. Um script de uma linha com o utilitário kubectl, escrito fluentemente no terminal, lida com essa tarefa sem problemas, mas e se você estiver cansado de gastar alguns minutos no próximo script escrevendo todas as vezes. É assim que o utilitário kube-dump apareceu ; na verdade, é um utilitário que só pode fazer uma coisa - despejar recursos do 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
Antes de instalar, configure as variáveis de ambiente para atender às suas necessidades, no exemplo, por padrão , o modo de cópia dos namespaces dev e prod é definido, seguido por confirmar as mudanças no branch my-cluster e enviar para o repositório remoto.
Configure o CronJob no qual especificamos a frequência de inicialização da tarefa:
spec:
schedule: "0 1 * * *"
Como alternativa, instale o exemplo como está e edite-o:
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
Planos para desenvolvimento posterior
Implementar envio de dumps para armazenamento compatível com s3;
Envio de notificações por e-mail e webhook;
Git-crypt para criptografar dados confidenciais;
Preenchimento automático Bash / Zsh;
Suporte a OpenShift.
Terei também o prazer de receber seus comentários e sugestões com ideias e críticas.