Backup de configuração de recursos para Kubernetes

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.





exemplo do utilitário para salvar todos os recursos de um 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
      
      



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.





Links

  • Github





  • Docker Hub





  • Páginas GitHub








All Articles