Aracılığıyla paylaş


Velero kullanarak iş yükü kümelerini yedekleme, geri yükleme

Şunlar için geçerlidir: Azure Stack HCI 22H2 üzerinde AKS, Windows Server'da AKS

Bu makalede, Azure Arc tarafından etkinleştirilen AKS'de Azure Blob Depolama veya MinIO depolama kullanarak iş yükünü ve hedef kümeleri yedeklemek ve geri yüklemek için Velero'nun nasıl yükleneceği ve kullanılacağı açıklanmaktadır.

Velero , Kubernetes küme nesnelerini ve kalıcı birimleri yedeklemeye ve geri yüklemeye yönelik açık kaynak topluluk standart aracıdır. Yedeklemelerini depolamak için çeşitli depolama sağlayıcılarını destekler. AKS Arc hedef Kubernetes kümesi kilitlenir ve kurtarılamazsa, içeriğini ve iç API nesnelerini yeni bir kümeye geri yüklemek için Bir Velero yedeklemesi kullanabilirsiniz.

Yedeklemelerinizi Azure Blob Depolama depolamak istemiyorsanız Velero ile MinIO kullanabilirsiniz. Bu makalede Velero'yu Azure Blob Depolama kullanacak veya Velero'yu MinIO depolama kullanacak şekilde yükleyip yapılandıracak şekilde nasıl yapılandıracakları açıklanır.

Not

Velero, Microsoft Windows'u resmi olarak desteklemez. Testlerde Velero ekibi yalnızca durum bilgisi olmayan Windows uygulamalarını yedekleyebildi. Restic durum bilgisi olan uygulamaların veya kalıcı birimlerin tümleştirmesi ve yedeklemeleri desteklenmiyordu.

Önkoşullar

Velero dağıtımınıza başlamadan önce şu önkoşulları tamamlayın:

velero'yu Azure Blob Depolama ile yükleme

Bu bölümdeki yordamlarda Velero'yu yükleme ve yedeklemeler için Azure Blob Depolama kullanma işlemleri açıklanmaktadır. Yedeklemelerinizi Azure'da depolamak istemiyorsanız Velero'yu MiniO depolama ile yükleme bölümüne gidin.

  1. PowerShell'i yönetici olarak açın.

  2. Azure CLI'yi kullanarak Azure'da oturum açın:

    az login --use-device-code   
    
  3. Aşağıdaki komutu çalıştırarak Velero CLI'yi yükleyin:

    Not

    Bayrak --use-restic , Velero sürüm 1.10 ve sonraki sürümlerde desteklenmez. Bayrağı yalnızca 1.9.x sürümünde desteklenir.

    choco install velero   
    
  4. Gerekirse, yedeklemeler için kullanmak istediğiniz Azure aboneliğine geçin.

    Varsayılan olarak Velero, yedeklemeleri VM'leriniz ve disklerinizle aynı Azure aboneliğinde depolar ve yedekleri farklı bir abonelikteki bir kaynak grubuna geri yüklemenize izin vermez. Abonelikler arasında yedekleme ve geri yükleme işlemlerini etkinleştirmek için, yedeklemeleriniz için kullanılacak bir abonelik belirtin. Yedeklemeleriniz için kullanmak istediğiniz abonelikteyseniz bu adımı atlayabilirsiniz.

    Yedeklemeleriniz için kullanmak istediğiniz aboneliğe geçin:

    1. Abonelik kimliğini bulmak için abonelik adını kullanın:

      $AZURE_BACKUP_SUBSCRIPTION_NAME="<NAME_OF_TARGET_SUBSCRIPTION>"
      $AZURE_BACKUP_SUBSCRIPTION_ID=$(az account list --query="[?name=='$AZURE_BACKUP_SUBSCRIPTION_NAME'].id | [0]" -o tsv)
      
    2. Ardından aboneliği değiştirin:

      az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
      
  5. Bir Azure depolama hesabı ve blob kapsayıcısı oluşturun.

    Yedeklemeler için Azure Blob Depolama kullandığınızda Velero, yedeklemeleri depolamak için bir depolama hesabı ve blob kapsayıcısı gerektirir. Aşağıdaki örnekte, yeni bir Velero_Backups kaynak grubunda oluşturulan depolama hesabı gösterilmektedir.

    Depolama hesabını DNS'de kullanılabilecek genel benzersiz bir kimlikle oluşturmanız gerekir. Örnek betik, rastgele benzersiz bir ad oluşturmak için uygulamayı kullanır uuidgen . Ad, depolama hesapları için Azure adlandırma kurallarına uygun olduğu sürece herhangi bir yöntemi kullanabilirsiniz.

    Depolama hesabı, bekleme durumunda şifreleme özellikleriyle (Microsoft tarafından yönetilen anahtarlar kullanılarak) oluşturulur ve yalnızca HTTPS bağlantıları üzerinden erişime izin verecek şekilde yapılandırılır.

    Depolama hesabını ve blob kapsayıcısını oluşturmak için şu adımları izleyin:

    1. Yedekleme depolama hesabı için bir kaynak grubu oluşturun. Gerekirse dizinleri tercih ettiğiniz konuma değiştirin ve aşağıdaki komutları çalıştırın:

      $AZURE_BACKUP_RESOURCE_GROUP="Velero_Backups"
      az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
      
    2. Depolama hesabını oluşturun:

      $AZURE_STORAGE_ACCOUNT_ID="<NAME_OF_ACCOUNT_TO_ASSIGN>"
      
      az storage account create --name $AZURE_STORAGE_ACCOUNT_ID --resource-group $AZURE_BACKUP_RESOURCE_GROUP --sku Standard_GRS --encryption-services blob --https-only true --kind BlobStorage --access-tier Hot
      
    3. Blob kapsayıcısı oluşturma:

      $BLOB_CONTAINER="velero"
      az storage container create -n $BLOB_CONTAINER --public-access off --account-name $AZURE_STORAGE_ACCOUNT_ID
      

      Örnekte adlı velerobir blob kapsayıcısı kullanılır. Tercihen tek bir Kubernetes kümesi için benzersiz olan farklı bir ad kullanabilirsiniz.

  6. Hizmet sorumlusu oluşturma:

    1. Azure hesabınızın abonelik kimliğini ve kiracı kimliğini alın:

      $AZURE_SUBSCRIPTION_ID=(az account list --query '[?isDefault].id' -o tsv)
      $AZURE_TENANT_ID=(az account list --query '[?isDefault].tenantId' -o tsv) 
      
    2. Katkıda Bulunan ayrıcalıklarına sahip bir hizmet sorumlusu oluşturun.

      Katkıda Bulunan rolüyle bir hizmet sorumlusu oluşturabilir veya özel bir rol kullanabilirsiniz:

      • Katkıda bulunan rolü: Katkıda Bulunan rolü abonelik genelinde erişim verir, bu nedenle bu rolü atarsanız bu kimlik bilgilerini koruduğundan emin olun.
      • Özel rol: Daha kısıtlayıcı bir role ihtiyacınız varsa özel bir rol kullanın.

      Katkıda Bulunan rolünü atayın:

      Birden çok blob kapsayıcısı ile birden çok kümeyi yedeklemek için Velero'yu kullanıyorsanız, adını velerokullanmak yerine her küme için benzersiz bir kullanıcı adı oluşturmak isteyebilirsiniz.

      Katkıda Bulunan rolüne sahip bir hizmet sorumlusu oluşturmak için aşağıdaki komutu kullanın. Kendi abonelik kimliğinizi ve isteğe bağlı olarak kendi hizmet asıl adınızı değiştirin. Microsoft Entra Id sizin için bir gizli dizi oluşturur.

      $AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes  /subscriptions/$AZURE_SUBSCRIPTION_ID)
      

      Gerekirse komutunda şu ayarlamaları yapın:

      • İş yükü kümeniz ve Velero yedekleme dosyalarınız için farklı abonelikler kullanmayı planlıyorsanız, aşağıdaki örnekte olduğu gibi her iki abonelik kimliklerini de sağlayın:

        $AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "Contributor" --query 'password' -o tsv --scopes  /subscriptions/$AZURE_SUBSCRIPTION_ID /subscriptions/$AZURE_BACKUP_SUBSCRIPTION_ID)
        
      • Hizmet asıl adınız olarak kullanmak velero istemiyorsanız, seçtiğiniz hizmetin Microsoft Entra Kimliği'nde benzersiz olduğundan ve diğer hizmet sorumlularıyla veya uygulama kayıtlarıyla çakışmadığından emin olun --name .

      Önemli

      Gizli dizi yalnızca hizmet sorumlusu oluşturulduğunda bu adım sırasında gösterilir. Gelecek adımlarda kullanmak üzere gizli diziyi not edin.

      Özel bir rol kullanın:

      En düşük kaynak sağlayıcısı eylemlerini etkinleştirmek istiyorsanız, özel bir rol oluşturun ve bu rolü hizmet sorumlusuna atayın.

      1. Aşağıdaki içeriklere sahip azure-role.json adlı bir dosya oluşturun. Kendi özel rol adınızı ve abonelik kimliğinizi değiştirin:

        {
            "Name": <CUSTOM_ROLE_NAME>,
            "Id": null,
            "IsCustom": true,
            "Description": "Velero related permissions to perform backups, restores and deletions",
            "Actions": [
                "Microsoft.Compute/disks/read",
                "Microsoft.Compute/disks/write",
                "Microsoft.Compute/disks/endGetAccess/action",
                "Microsoft.Compute/disks/beginGetAccess/action",
                "Microsoft.Compute/snapshots/read",
                "Microsoft.Compute/snapshots/write",
                "Microsoft.Compute/snapshots/delete",
                "Microsoft.Storage/storageAccounts/listkeys/action",
                "Microsoft.Storage/storageAccounts/regeneratekey/action"
            ],
            "NotActions": [],
            "AssignableScopes": [
              "<SUBSCRIPTION_ID>"
            ]
        }
        
      2. Özel rolü ve hizmet sorumlusunu oluşturun:

        az role definition create --role-definition azure-role.json
        
        $AZURE_CLIENT_SECRET=(az ad sp create-for-rbac --name "velero" --role "<CUSTOM_ROLE>" --query 'password' -o tsv --scopes  /subscriptions/$AZURE_SUBSCRIPTION_ID)
        

      Özel roller oluşturma hakkında daha fazla bilgi için bkz . Velero için izinleri ayarlama.

  7. Hizmet asıl adını alın ve bu adı AZURE_CLIENT_ID değişkenine atayın:

    $AZURE_CLIENT_ID=(az ad sp list --display-name "velero" --query '[0].appId' -o tsv)
    

    Not

    Hizmet sorumlularının süresi dolar. Yeni hizmet sorumlunuzun süresinin ne zaman dolduğunda öğrenmek için şu komutu çalıştırın: az ad sp show --id $AZURE_CLIENT_ID.

  8. Velero yüklemesinin gerektirdiği değişkenleri içeren bir dosya oluşturun. Komut aşağıdakine benzer:

    AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID}
    AZURE_TENANT_ID=${AZURE_TENANT_ID}
    AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
    AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
    AZURE_RESOURCE_GROUP=${AZURE_BACKUP_RESOURCE_GROUP}
    AZURE_CLOUD_NAME=AzurePublicCloud" | Out-File -FilePath ./credentials-velero.txt
    

    Önemli

    Velero'yu yükledikten sonra bu dosyayı silin. İstemci gizli dizisi düz metin biçimindedir ve bu da güvenlik riski oluşturabilir.

    Devam etmeden önce, dosyanın düzgün biçimlendirildiğini doğrulayın. Dosya adı uzantısı önemli değildir.

    • Ek boşlukları veya sekmeleri kaldırın.
    • Değişken adlarının doğru olduğundan emin olun.
  9. Velero'yu yükleyin ve başlatın.

    Kümeye Velero'yu yükleyin ve dağıtımı başlatın. Bu yordam adlı bir ad alanı oluşturur ve ad velero alanına adlı velero bir dağıtım ekler.

    1. Aşağıdaki komutu kullanarak Velero'yu yükleyin. Örnek komutunu özelleştirmeniz gerekir.

      velero install --provider azure --plugins velero/velero-plugin-for-microsoft-azure:v1.5.0 --bucket $BLOB_CONTAINER --secret-file ./credentials-velero.txt --backup-location-config resourceGroup=$AZURE_BACKUP_RESOURCE_GROUP,storageAccount=$AZURE_STORAGE_ACCOUNT_ID,subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID --use-restic
      

      Aşağıdaki değişkenleri gerektiği gibi ayarlayın:

      • Komutu, kullandığınız Velero CLI sürümüyle uyumlu olması gereken Microsoft Azure eklentisini yükler. Örnek komut, en son Velero CLI sürümü 1.9.0 ile uyumlu olan Microsoft Azure eklentisi sürüm 1.5.0'ı kullanır. Microsoft Azure eklentisinin hangi sürümünü Valero CLI sürümünüzle yükleneceğini öğrenmek için uyumluluk matrisine bakın.

      • kullanarak ResticKubernetes birimlerinin --use-restic dosya sistemi düzeyinde yedeklemesini etkinleştirmek için parametresini eklediğinizden emin olun. Restic her tür Kubernetes birimini yedeklemek için kullanılabilir. Varsayılan olarak Velero, Amazon EBS Birimleri, Azure Yönetilen Diskler ve Google Kalıcı Diskler için kalıcı birimlerin anlık görüntülerini almayı destekler. AKS Arc'ta Kubernetes birimleri verileri depolamak için Küme Paylaşılan Birimlerini (CSV) kullanır. Bu nedenle, Restic kalıcı birim anlık görüntülerini etkinleştirmek için gereklidir. AKS Arc şu anda birim anlık görüntülerini desteklememektedir.

      • subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID isteğe bağlıdır. Bunu yalnızca Velero ve iş yükü kümesinin farklı abonelik kimlikleri varsa eklemeniz gerekir. Aynı Azure aboneliğini kullanıyorlarsa parametresini subscriptionId kaldırabilirsiniz ve credentials-velero.txt dosyası bu bilgileri sağlar.

      Velero hizmeti, yüklemede otomatik olarak başlatılır.

    2. Velero hizmetinin düzgün çalışıp çalışmadığını denetleyin:

      kubectl -n velero get pods
      kubectl logs deployment/velero -n velero
      

      Komutun get pods Velero podlarının çalıştığını göstermesi gerekir.

MinIO depolama ile Velero'yu yükleme

Bu bölümdeki yordamlarda Velero'yu yükleme ve yedeklemeler için MinIO depolamanın nasıl kullanılacağı açıklanmaktadır. Yedeklemeleriniz için Azure Blob Depolama kullanmayı tercih ediyorsanız Velero'yu Azure Blob Depolama ile yükleme bölümüne gidin.

Yedeklemelerinizi MinIO'da depolamak istemiyorsanız Velero'yu Azure Blob Depolama kullanacak şekilde ayarlama bölümüne gidin.

  1. Aşağıdaki komutu çalıştırarak Velero CLI'yi yükleyin. Henüz yüklemediyseniz yükleyin Chocolately .

    choco install velero
    
  2. MinIO'yu yükleme:

    1. MinIO yedeklemesini depolamak için kalıcı bir birim oluşturun. Örnek, AKS Arc'taki varsayılan depolama sınıfında zaten var olan kalıcı bir birim oluşturur.

      1. Aşağıdaki içeriklerle minio-pvc-storage.yaml adlı bir YAML dosyası oluşturun:

        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata: 
        name: minio-pv-claim 
        spec: 
        storageClassName: default 
        accessModes: 
           - ReadWriteOnce 
        resources: 
           requests: 
              storage: 100Gi 
        

        Bu komutu çalıştırarak kalıcı birimi oluşturun:

        kubectl create -f minio-pvc-storage.yaml
        
      2. MinIO'yu başlatmak için minio-deployment.yaml adlı bir dağıtım dosyası oluşturun. Aşağıdaki içeriği ekleyin. Dağıtım, oluşturduğunuz kalıcı birimi kullanır.

        apiVersion: apps/v1
        kind: Deployment
        metadata:
        name: minio-deployment 
        spec: 
        selector: 
           matchLabels: 
              app: minio 
        strategy: 
           type: Recreate 
        template: 
           metadata: 
              labels: 
              app: minio 
           spec: 
              volumes: 
              - name: storage 
              persistentVolumeClaim: 
                 claimName: minio-pv-claim 
              containers: 
              - name: minio 
              image: minio/minio:latest 
              args:
              - server 
              - /storage 
              env: 
              - name: MINIO_ACCESS_KEY 
                value: "<you can define this>" 
              - name: MINIO_SECRET_KEY 
                value: "<you can define this>" 
              ports: 
              - containerPort: 9000 
                hostPort: 9000 
              volumeMounts: 
              - name: storage  
                mountPath: "/storage" 
        

        Ardından dağıtımı oluşturun:

        kubectl create -f minio-deployment.yaml
        
    2. minio-service.yaml adlı bir Kubernetes hizmeti oluşturun. Bu hizmet, MinIO pod'una dış IP adresleri sağlar.

      Hizmeti yapılandırmak için aşağıdaki ayarlarla bir YAML dosyası oluşturun:

      apiVersion: v1 
      kind: Service 
      metadata: 
      name: minio-service 
      spec: 
      type: LoadBalancer 
      ports: 
         - port: 9000 
           targetPort: 9000 
           protocol: TCP 
      selector: 
         app: minio 
      

      Ardından hizmeti oluşturun:

      kubectl create -f mino-service.yaml
      
    3. Aşağıdaki komutu çalıştırarak MinIO podunun dış IP adresini alın. Velero'yu yüklemek için bu adresi kullanacaksınız.

      kubectl get svc
      
    4. MinIO'nın çalışır durumda olup olmadığını denetlemek için, tarayıcıda IP adresinde oturum açın veya aşağıda açıklandığı gibi MinIO istemcisini kullanın.

      MinIO istemcisini yükleyin ve MinIO dosyalarına göz atın.

      MinIO istemcisini indirin:

      Invoke-WebRequest -Uri "https://dl.minio.io/client/mc/release/windows-amd64/mc.exe" -OutFile "C:\mc.exe
      

      Ardından bir diğer ad ayarlayın:

      mc alias set minio http://10.10.77.6:9000 "minio_access_key" "minio_secret_key" --api s3v4
      

      Son olarak MinIO yüklemesine göz atın:

      mc ls minio
      
    5. Velero dosyalarını depolamak için bir demet oluşturun. Bu demet Velero kurulumunda kullanılacaktır.

      mc mb minio/velero-backup
      
    6. Aşağıdaki bilgilerle bir MinIO kimlik bilgileri dosyası minio.credentials oluşturun:

      [default] 
      aws_access_key_id=<minio_access_key> 
      aws_secret_access_key=<minio_secret_key> 
      
  3. Velero'yu yükleyin:

    velero install --provider aws --bucket velero-backup --secret-file .\minio.credentials --backup-location-config region=minio,s3ForcePathStyle=true,s3Url=http://10.10.77.6:9000 --plugins velero/velero-plugin-for-aws:v1.1.0 --use-restic
    

    Bu komutu çalıştırmadan önce demet adını, MinIO kimlik bilgilerinizi ve MinIO dış IP adresini denetleyin.

  4. Velero hizmetinin düzgün çalışıp çalışmadığını denetleyin:

    kubectl -n velero get pods
    kubectl logs deployment/velero -n Velero
    

    Komutun get pods Velero podlarının çalıştığını göstermesi gerekir.

Kümeyi yedekleme

Kümenizdeki tüm nesneleri yedekleyebilir veya geri yükleyebilir veya nesneleri türe, ad alanına ve/veya etikete göre filtreleyebilirsiniz.

Yedekleme oluşturma

Seçtiğiniz depolama alanına yedeklemeler oluşturmak için Velero backup create komutunu kullanın. Aşağıdaki örneklerde, kalıcı birimlerin --default-volumes-to-restic anlık görüntüsünü oluşturan bayrağı kullanılır. Diğer yedekleme seçenekleri için bkz . Velero Yedekleme Başvurusu.

  • Kümenizdeki tüm ad alanlarının isteğe bağlı yedeklemesi:

    velero backup create <BACKUP-NAME> --default-volumes-to-restic
    
  • Kümenizdeki tek bir ad alanının isteğe bağlı yedeklemesi:

    velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
    
  • Kümenizde seçili birden çok ad alanının isteğe bağlı yedeklemesi:

    velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE-1>, <NAMESPACE-2> --default-volumes-to-restic
    

Yedekleme ilerleme durumunu denetleme

  • Yedeklemenin ilerleme durumunu denetlemek için şu komutu çalıştırın:

    velero backup describe <BACKUP-NAME>
    
  • Yedeklemeleriniz için Azure Blob Depolama kullanıyorsanız, azure depolama hesabınızda oluşturduğunuz blob/kapsayıcının altında yedeklemenizi görüntüleyebilirsiniz.

Kümeyi geri yükleme

Bir kümeyi geri yüklemek için, eski kümeyi geri yüklemek için yeni bir küme oluşturmanız gerekir. Küme yedeklemesini mevcut bir kümeye geri yükleyemezsiniz.

komutu, restore önceden oluşturulmuş bir yedeklemeden tüm nesneleri ve kalıcı birimleri geri yüklemenize olanak tanır. Ayrıca, nesnelerin ve kalıcı birimlerin yalnızca filtrelenmiş bir alt kümesini geri yükleyebilirsiniz. Diğer yedekleme seçenekleri için bkz . Kaynak filtreleme.

Yedeklemeyi geri yüklemek istediğiniz kümede ( hedef küme):

  1. Yukarıdaki yönergeleri kullanarak Velero'yu dağıtın. Kaynak küme için kullandığınız Azure kimlik bilgilerini kullanın.

  2. Aşağıdaki komutu çalıştırarak Velero yedekleme nesnesinin oluşturulduğundan emin olun. Velero kaynakları, bulut depolamadaki yedekleme dosyalarıyla eşitlenir.

    velero backup describe <BACKUP-NAME>
    
  3. Doğru yedeklemenin (BACKUP-NAME) mevcut olduğunu onayladıktan sonra yedeklemedeki tüm nesneleri geri yükleyin:

    velero restore create --from-backup <BACKUP-NAME>
    

Velero komutları ile ilgili yardım alma

Belirli bir Velero komutuyla ilişkili tüm seçenekleri görmek için komutuyla bayrağını kullanın --help . Örneğin, velero restore create --help komutuyla velero restore create ilişkili tüm seçenekleri gösterir.

Örneğin, tüm seçeneklerini velero restorelistelemek için aşağıdaki bilgileri döndüren komutunu çalıştırın velero restore --help:

  velero restore [command]
  Available Commands:
  create      Create a restore
  delete      Delete restores
  describe    Describe restores
  get         Get restores
  logs        Get restore logs

Velero'yu kaldırma

Velero'yu kümenizden kaldırmak ve Velero yüklemesi tarafından oluşturulan tüm kaynakları kaldırmak için aşağıdaki komutları çalıştırın:

kubectl delete namespace/velero clusterrolebinding/velero 
kubectl delete crds -l component=velero

Sonraki adımlar