deploy velero kubernetes with aws minio portworx

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?

19

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;

  1. S3 üzerinde bir bucket oluşturun,
  2. Bucket için bir iam kullanıcı belirleyin,
  3. Key ve id bilgilerini bir dosyaya yazınız yada aws’in size ileteceği dosyayı kaydedin,
  4. 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
Issues · portworx/velero-plugin · GitHub

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.