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