Mencadangkan konfigurasi sumber daya ke Kubernetes

Administrator klaster kubernetes dihadapkan pada tugas untuk menyimpan konfigurasi sumber daya dari namespace dan mentransfernya ke klaster lain, atau membuat cadangan situs uji yang tidak stabil. Skrip satu baris dengan utilitas kubectl, yang dengan lancar ditulis di terminal, menangani tugas ini tanpa masalah, tetapi bagaimana jika Anda lelah menghabiskan beberapa menit untuk menulis skrip berikutnya setiap saat. Beginilah cara utilitas kube-dump muncul , sebenarnya ini adalah utilitas yang hanya dapat melakukan satu hal - membuang resource cluster.





contoh utilitas untuk menyimpan semua sumber daya dari satu 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
      
      



Sebelum menginstal, konfigurasikan variabel lingkungan agar sesuai dengan kebutuhan Anda, dalam contoh, secara default , mode penyalinan namespaces dev dan prod diatur, diikuti dengan melakukan perubahan di cabang my-cluster dan mengirim ke repositori jarak jauh.





Siapkan CronJob di mana kami menentukan frekuensi peluncuran tugas:





spec:
  schedule: "0 1 * * *"
      
      



Atau, instal contoh sebagaimana adanya dan kemudian edit:





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
      
      



Rencana untuk pengembangan lebih lanjut

  • Menerapkan pengiriman dump ke penyimpanan yang kompatibel dengan s3;





  • Mengirim pemberitahuan melalui email dan webhook;





  • Git-crypt untuk mengenkripsi data sensitif;





  • Pelengkapan otomatis Bash / Zsh;





  • Dukungan OpenShift.





Saya juga akan senang menerima komentar dan saran Anda dengan ide dan kritik.





Tautan

  • Github





  • Docker Hub





  • Halaman GitHub








All Articles