AKS pv’lerini Velero kullanarak migrate etme işlemi

By | March 15, 2024

Azure Kubernetes Service’e geçmek isteyenler, mevcut verileri yeni Kubernetes kümesine nasıl taşıyacakları konusunda karar vermek zorundadır.

Velero

Bu işlem, veri türüne göre değişik yöntemlerle gerçekleştirilebilir:

  • Veritabanları, genellikle verileri farklı kurulumlar arasında aktarmak için yerleşik araçlara sahiptir.
  • Yapılandırılmamış veriler, nispeten kolay bir şekilde kopyalanıp taşınabilir.
  • Ancak, tüm uygulamalar basit veri taşıma yöntemleri sunmaz.
  • Özellikle, bilinmeyen uygulama verileri içeren Kubernetes Persistent Volume disklerinin taşınması zor olabilir.

Velero ile Veri Taşıma yöntemi

Velero, Kubernetes kaynaklarını ve persistent volume’leri yedeklemek ve taşımak için tasarlanmış, VMware tarafından desteklenen açık kaynaklı bir araçtır. İki temel işletim modu bulunur:

Anlık Görüntü Yedekleme: Bu yöntem, bulutun var olan volume anlık görüntüleme teknolojisini kullanır. Bu yöntem yedekleme ve felaket kurtarma işlemleri için uygundur, ancak bulutlar arası geçiş için ideal değildir.

Dosya Sistemi Yedekleme: Bu modda, Velero Restic veya Kopia’yı kullanarak, podlara bağlı volume’lerin yedeklenmesini sağlar. Bu yöntem, bulutlar arası taşıma için uygun olan ve farklı bulutlar arasında kullanılabilen bir anlık görüntü soyutlama katmanı sağlar.

Bu işlemi yapmadan önce çok kolay şekilde entegre edilen velero’yu Azure Kubernetes Service üzerine entegre edelim.

Azure’a taşıma senaryolarında, Velero’nun “Provider Azure” seçeneği ile kurulması gerekmektedir. Burada önemli olan, Azure’a özgü yapılandırmalardan kaçınmak ve depolama hesabı erişim anahtarı kullanarak kimlik doğrulaması sağlamaktır.

cat << EOF > ./credentials-velero

AZURE_STORAGE_ACCOUNT_ACCESS_KEY=${AZURE_STORAGE_ACCOUNT_ACCESS_KEY}

AZURE_CLOUD_NAME=AzurePublicCloud

EOF

velero install \

--provider azure \

--use-node-agent \

--plugins velero/velero-plugin-for-microsoft-azure:v1.8.0 \

--bucket velerobackups \

--secret-file ./credentials-velero \

--use-volume-snapshots=false \

--backup-location-config storageAccount=velerogist,storageAccountKeyEnvVar=AZURE_STORAGE_ACCOUNT_ACCESS_KEY

Burada storage account access key backup’ın azure storage üzerine alınması açısından önemlidir.

Kurulum ardından spesifik namespace içerisindeki pv ve pvc’lerin yedeğini almak için aşağıdaki komutun çalıştırılması yeterli olacaktır.

velero backup create <mybackup-name> --include-resources PersistentVolumeClaim,PersistentVolume --include-namespaces <namespace>

Backup ardından namespace seviyesinde restore işlemi yapmak için aşağıdaki komutu çalıştırmamız yeterli olacaktır.

velero restore create <myrestore-name> --from-backup <mybackup-name> --include-namespaces <namespace>

Velero’nun Dosya Sistemi Yedekleme Mekanizmasının bazı sınırlılıkları bulunmaktadır. Biraz da bundan bahsedelim.

  • Uygulama pod’u yedekleme sırasında çalışmalıdır, çünkü volume yalnızca pod aktifken okunabilir. Bu durum, yedekleme sırasında veri değişikliği riskini beraberinde getirir. Bu sorunu çözmek için, yedekleme öncesi konteynerde komutlar çalıştıran yedekleme kancaları kullanılabilir.
  • Farklı bir buluttan alınan bir yedeklemenin geri yüklenmesi sırasında, depolama sınıfı adlarının tutarlı olması gerekmektedir. Bu, farklı bulut sağlayıcıları arasında geçiş yapılırken teknik bir zorluk oluşturabilir.

Velero, çoklu bulutlar arası Kubernetes Persistent Volume’lerini yedeklemek ve geri yüklemek için kullanışlı bir çözümdür. Ancak, uygulama bazında veri aktarım araçlarının kullanılması genellikle daha uygun olabilir. Spesifik bir veri dışa aktarma mekanizması sunmayan eski uygulamalar için Velero, taşıma ve felaket kurtarma durumlarında değerli bir araç olarak öne çıkar.

Kaynak: https://medium.com/microsoftazure/migrate-kubernetes-persistent-volume-claims-to-aks-with-velero-b831bdc9b171

Cheers!

Leave a Reply

Your email address will not be published. Required fields are marked *