K8s ortamında çalışırken anlık hataların, volumelerin ve çalıştığınız clusterın anlık yedeğini alıp kriz anlarını hafifletebilirsiniz. Velero vmware imzalı bir ürün, open source olarak kullanıma açık, bu makale kurulum notlarını içermektedir,
Nasıl çalışıyor?
En basit haliyle; önce velero cli kurulumu yapmanı gerekiyor, sonrasında clusterda deploy edilen bir controller ile farklı servis sağlayıcalara anlık görüntüyü aktarabiliyorsunuz. CLI kurulumu için; https://velero.io/docs/v1.7/basic-install/#install-the-cli
Cli kurulumu sonrası k8s clusterınıza backup alacağınız servis sağlayıcıyı belirterek deploy işlemi gerçekleştiriyorsunuz, örnekler: aws, gke, azure,
Bir çok plugin’i bulunuyor, CSI aracılığı ile Portworx’e local snapshot oluşturabilir yada Minio Object storage çözümünü deneyebilirsiniz,
Başlangıç
3 parça halinde denemelerde bulundum, aşağıdaki görüntü yapıyı anlamanızda yardımcı olacaktır,
Özetle;
1) AWS S3 e yedekleri gönderdim,
2) Minio’ya yedekleri gönderdim,
3) Portworx plugin’i deneyerek local snapshot aldım
Siz bunlardan bir seçeceği seçerekte ilerleyebilirsiniz, sadece farklılıklarını merak ettim, notlarım aşağıdaki gibidir;
1. VELERO DEPLOY WITH AWS S3
Sırasıyla;
- S3 üzerinde bir bucket oluşturun,
- Bucket için bir iam kullanıcı belirleyin,
- Key ve id bilgilerini bir dosyaya yazınız yada aws’in size ileteceği dosyayı kaydedin,
- Dosya adını credentials-velero olarak kaydedebilirsiniz.
[default] aws_access_key_id=XXXX aws_secret_access_key=YYYY
helm install yada velero install kullanarak deploy gerçekleştirebilirsiniz,
velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.3.0 \ --bucket velero-mnm \ --backup-location-config region=eu-central-1 \ --snapshot-location-config region=eu-central-1 \ --secret-file ./credentials-velero
Deploy çıktılarını;
kubectl logs deployment/velero -n velero
izleyebilirsiniz,
2. VELERO DEPLOY WITH MINIO
Kurulum için ilgili repoyu clone alın;
https://github.com/mertyakan/velero-minio
git clone https://github.com/mertyakan/velero-minio.git
Manifest dosyalarını deploy edin. Bunun dışında service account, namespace gibi işlemler için klasörü apply edebilirsiniz, Portworx kullanmıyorsanız stateful editleyerek storageclass’ı defaulta çekebilirsiniz,
kubectl apply ./minio
İlgili podları kontrol edebilirsiniz,
$ kubectl get pods -n velero NAME READY STATUS RESTARTS AGE minio-0 1/1 Running 0 3m48s minio-setup-zvcdg 0/1 Completed 1 3m47s
Dilerseniz port-forwoard gerçekleştirerek localhost:9000 yada LoadBalancer olarak konfigüre edebilirsiniz,
kubectl port-forward service/minio -n velero 9000
Şimdi velero’yu deploy edeceğiz,
velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.3.0 \ --bucket velero \ --secret-file ./credentials-Velero \ --use-volume-snapshots=false \ --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000 \ --use-restic
$ kubectl logs deployment/velero -n velero ... time="2020-08-25T15:33:09Z" level=info msg="Server started successfully" logSource="pkg/cmd/server/server.go:881" time="2020-08-25T15:33:09Z" level=info msg="Starting controller" controller=restic-repository logSource="pkg/controller/generic_controller.go:76" time="2020-08-25T15:33:09Z" level=info msg="Starting controller" controller=restore logSource="pkg/controller/generic_controller.go:76"
Link: https://docs.ondat.io/docs/usecases/velero-backups/
3. PORTWORX PLUGIN
Portworx hali hazırda kurulu olduğunu ve cluster’ı Portworx ile çalıştırdığınızı düşünerek;
AWS yada Minio tercihiniz sonrasında plugin ekleyerek ilerleme sağlayabilirsiniz.
Plugin’i yüklüyoruz,
velero plugin add portworx/velero-plugin:1.0.0
Volume snapshot alınacak lokasyonu belirtiyoruz,
velero snapshot-location create portworx-local --provider portworx.io/portworx
kubectl get volumesnapshotlocation -n velero
Backup oluşturma
Standart backup için;
velero backup create mysql-backup --include-namespaces NAMESPACENAME
Portworx local snapshot ile backup;
velero backup create local-backup-1 --include-namespaces=default --snapshot-volumes --volume-snapshot-locations portworx-local
Schedule Backup oluşturma
Cluster için;
velero schedule create daily-allcluster --schedule="@every 24h" --snapshot-volumes --include-cluster-resources
Belirli bir namespace için;
velero schedule create every4h-magento-test --schedule="@every 4h" --include-namespaces magento-test
Backupları listeme için
velero get backup
Backuptan restore için
Standart restore için;
velero restore create RESTORE1 --from-backup BACKUPNAME
Portworx local snapshot üzerinde restore;
velero restore create --from-backup default-ns-local-backup
Link: https://github.com/vmware-tanzu/velero-plugin-for-aws https://github.com/storageos/use-cases/tree/master/velero https://documentation.suse.com/suse-caasp/4.5/html/caasp-admin/backup-and-restore-with-velero.html https://docs.ondat.io/docs/usecases/velero-backups/ https://wikijs.tamm.cloud/en/kubernetes/velero-cheat-sheet