Copia de seguridad de la configuraci贸n de recursos en Kubernetes

Los administradores de los cl煤steres de Kubernetes se enfrentan a la tarea de guardar la configuraci贸n de recursos del espacio de nombres y transferirla a otro cl煤ster, o hacer una copia de seguridad de un sitio de prueba inestable. Un script de una sola l铆nea con la utilidad kubectl, escrito con fluidez en la terminal, hace frente a esta tarea sin ning煤n problema, pero 驴qu茅 pasa si est谩s cansado de dedicar un par de minutos a escribir el siguiente script cada vez? As铆 es como apareci贸 la utilidad kube-dump , de hecho, es una utilidad que solo puede hacer una cosa: volcar los recursos del cl煤ster.





ejemplo de la utilidad para guardar todos los recursos de un espacio de nombres

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 la instalaci贸n, configure las variables de entorno para que se adapten a sus necesidades, en el ejemplo, de forma predeterminada , se establece el modo de copia de los espacios de nombres dev y prod, seguido de la confirmaci贸n de los cambios en la rama my-cluster y el env铆o al repositorio remoto.





Configure CronJob en el que especificamos la frecuencia de lanzamiento de la tarea:





spec:
  schedule: "0 1 * * *"
      
      



Alternativamente, instale el ejemplo como est谩 y luego ed铆telo:





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
      
      



Planes para un mayor desarrollo

  • Implementar el env铆o de volcados al almacenamiento compatible con s3;





  • Env铆o de notificaciones por correo electr贸nico y webhook;





  • Git-crypt para cifrar datos confidenciales;





  • Autocompletar Bash / Zsh;





  • Soporte OpenShift.





Tambi茅n estar茅 encantado de recibir sus comentarios y sugerencias con ideas y cr铆ticas.





Enlaces

  • Github





  • Docker Hub





  • P谩ginas de GitHub








All Articles