Megosztás a következőn keresztül:


Biztonsági mentés, számítási feladatok fürtjeinek visszaállítása a Velero használatával

A következőkre vonatkozik: AKS on Azure Stack HCI 22H2, AKS on Windows Server

Ez a cikk azt ismerteti, hogyan telepíthető és használható a Velero a számítási feladatok és a célfürtök biztonsági mentésére és visszaállítására az Azure Blob Storage vagy a MinIO Storage használatával az Azure Arc által engedélyezett AKS-ben.

A Velero egy nyílt forráskódú közösségi szabványos eszköz a Kubernetes-fürtobjektumok és állandó kötetek biztonsági mentéséhez és visszaállításához. Támogatja a különböző tárolószolgáltatókat a biztonsági másolatok tárolásához. Ha egy AKS Arc-cél Kubernetes-fürt összeomlik, és nem sikerül helyreállítani, a Velero biztonsági mentéssel visszaállíthatja annak tartalmát és belső API-objektumait egy új fürtre.

Ha nem szeretné tárolni a biztonsági másolatokat az Azure Blob Storage-ban, használhatja a MinIO-t a Veleroval. Ez a cikk azt ismerteti, hogyan telepítheti és konfigurálhatja a Velerot az Azure Blob Storage használatára, vagy hogyan telepítheti és konfigurálhatja a Velerot a MinIO Storage használatára.

Feljegyzés

A Velero hivatalosan nem támogatja a Microsoft Windowst. A tesztelés során a Velero csapata csak állapot nélküli Windows-alkalmazásokat tudott biztonsági másolatot készíteni. Restic az állapotalapú alkalmazások vagy állandó kötetek integrációja és biztonsági mentése nem támogatott.

Előfeltételek

A Velero üzembe helyezése előtt végezze el ezeket az előfeltételeket:

Velero telepítése az Azure Blob Storage-ral

Az ebben a szakaszban ismertetett eljárások bemutatják, hogyan telepíthető a Velero, és hogyan használhatja az Azure Blob Storage-t biztonsági mentésekhez. Ha nem szeretné tárolni a biztonsági másolatokat az Azure-ban, nyissa meg a Velero telepítését a MiniO Storage használatával.

  1. Nyissa meg a PowerShellt rendszergazdaként.

  2. Jelentkezzen be az Azure-ba az Azure CLI használatával:

    az login --use-device-code   
    
  3. Telepítse a Velero CLI-t a következő parancs futtatásával:

    Feljegyzés

    A --use-restic jelző nem támogatott a Velero 1.10-es és újabb verzióiban. A jelző csak az 1.9.x verzióban támogatott.

    choco install velero   
    
  4. Szükség esetén váltson a biztonsági mentésekhez használni kívánt Azure-előfizetésre.

    Alapértelmezés szerint a Velero ugyanabban az Azure-előfizetésben tárolja a biztonsági mentéseket, mint a virtuális gépek és lemezek, és nem teszi lehetővé a biztonsági másolatok visszaállítását egy másik előfizetésben lévő erőforráscsoportba. Ha engedélyezni szeretné a biztonsági mentési és visszaállítási műveleteket az előfizetések között, adjon meg egy előfizetést a biztonsági mentésekhez. Ezt a lépést kihagyhatja, ha már szerepel a biztonsági mentésekhez használni kívánt előfizetésben.

    Váltson a biztonsági mentésekhez használni kívánt előfizetésre:

    1. Az előfizetés azonosítójának megkereséséhez használja az előfizetés nevét:

      $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. Ezután módosítsa az előfizetést:

      az account set -s $AZURE_BACKUP_SUBSCRIPTION_ID
      
  5. Hozzon létre egy Azure Storage-fiókot és blobtárolót.

    Ha az Azure Blob Storage-t használja a biztonsági mentésekhez, a Veleronak szüksége van egy tárfiókra és egy blobtárolóra a biztonsági mentések tárolásához. Az alábbi példa egy új Velero_Backups erőforráscsoportban létrehozott tárfiókot mutatja be.

    A tárfiókot globálisan egyedi azonosítóval kell létrehoznia, amely használható a DNS-ben. A mintaszkript az uuidgen alkalmazás használatával véletlenszerűen hoz létre egyedi nevet. Bármilyen módszert használhat, ha a név a tárfiókokra vonatkozó Azure-elnevezési szabályokat követi.

    A tárfiókot a rendszer inaktív állapotú titkosítással hozza létre (a Microsoft által felügyelt kulcsok használatával), és úgy van konfigurálva, hogy csak HTTPS-kapcsolatokon keresztül engedélyezze a hozzáférést.

    A tárfiók és a blobtároló létrehozásához kövesse az alábbi lépéseket:

    1. Hozzon létre egy erőforráscsoportot a biztonsági mentési tárfiókhoz. Szükség esetén módosítsa a könyvtárakat a kívánt helyre, és futtassa a következő parancsokat:

      $AZURE_BACKUP_RESOURCE_GROUP="Velero_Backups"
      az group create -n $AZURE_BACKUP_RESOURCE_GROUP --location WestUS
      
    2. Hozza létre a tárfiókot:

      $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. Blobtároló létrehozása:

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

      A példa egy blobtárolót velerohasznál. Használhat egy másik nevet, lehetőleg egyedit egyetlen Kubernetes-fürtön.

  6. Szolgáltatásnév létrehozása:

    1. Szerezze be az Azure-fiók előfizetési azonosítóját és bérlőazonosítóját:

      $AZURE_SUBSCRIPTION_ID=(az account list --query '[?isDefault].id' -o tsv)
      $AZURE_TENANT_ID=(az account list --query '[?isDefault].tenantId' -o tsv) 
      
    2. Hozzon létre egy szolgáltatásnevet, amely közreműködői jogosultságokkal rendelkezik.

      Létrehozhat egy szolgáltatásnevet közreműködői szerepkörrel, vagy használhat egyéni szerepkört:

      • Közreműködői szerepkör: A közreműködői szerepkör az előfizetés egészére kiterjedő hozzáférést biztosít, ezért mindenképpen védje ezt a hitelesítő adatot, ha ezt a szerepkört rendeli hozzá.
      • Egyéni szerepkör: Ha szigorúbb szerepkörre van szüksége, használjon egyéni szerepkört.

      A közreműködői szerepkör hozzárendelése:

      Ha a Velero használatával készít biztonsági másolatot több fürtről több blobtárolóval, a név velerohasználata helyett érdemes lehet egyedi felhasználónevet létrehoznia az egyes fürtökhöz.

      A közreműködői szerepkörrel rendelkező szolgáltatásnév létrehozásához használja az alábbi parancsot. Cserélje le a saját előfizetés-azonosítóját és opcionálisan a saját szolgáltatásnév nevét. A Microsoft Entra ID létrehoz egy titkos kulcsot.

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

      Szükség esetén végezze el a következő módosításokat a parancson:

      • Ha különböző előfizetéseket szeretne használni a számítási feladatfürthöz és a Velero biztonsági mentési fájljaihoz, adja meg mindkét előfizetés azonosítóját, ahogyan az alábbi példában látható:

        $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)
        
      • Ha nem szeretné a szolgáltatásnév nevét használni velero , győződjön meg arról, hogy a --name választott név egyedi a Microsoft Entra-azonosítóban, és nem ütközik más szolgáltatásnevekkel vagy alkalmazásregisztrációkkal.

      Fontos

      A titkos kód csak ebben a lépésben jelenik meg a szolgáltatásnév létrehozásakor. Ügyeljen arra, hogy jegyezze fel a titkos kulcsokat a későbbi lépésekben való használathoz.

      Egyéni szerepkör használata:

      Ha engedélyezni szeretné a minimális erőforrás-szolgáltatói műveleteket, hozzon létre egy egyéni szerepkört, és rendelje hozzá a szerepkört a szolgáltatásnévhez.

      1. Hozzon létre egy azure-role.json nevű fájlt a következő tartalommal. Cserélje le saját egyéni szerepkörnevét és előfizetés-azonosítóját:

        {
            "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. Hozza létre az egyéni szerepkört és szolgáltatásnevet:

        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)
        

      Az egyéni szerepkörök létrehozásáról további információt a Velero engedélyeinek beállítása című témakörben talál.

  7. Kérje le a szolgáltatásnév nevét, és rendelje hozzá ezt a nevet a AZURE_CLIENT_ID változóhoz:

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

    Feljegyzés

    A szolgáltatásnevek lejárnak. Ha meg szeretné tudni, hogy mikor jár le az új szolgáltatásnév, futtassa a következő parancsot: az ad sp show --id $AZURE_CLIENT_ID.

  8. Hozzon létre egy fájlt, amely tartalmazza a Velero telepítéséhez szükséges változókat. A parancs a következőhöz hasonlóan néz ki:

    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
    

    Fontos

    A Velero telepítése után törölje ezt a fájlt. Az ügyfél titkos kódja egyszerű szöveges, ami biztonsági kockázatot jelenthet.

    A folytatás előtt ellenőrizze, hogy a fájl megfelelően van-e formázva. A fájlnévkiterjesztés nem számít.

    • Távolítsa el a további szóközöket vagy lapokat.
    • Győződjön meg arról, hogy a változónevek helyesek.
  9. Telepítse és indítsa el a Velerot.

    Telepítse a Velerot a fürtre, és indítsa el az üzembe helyezést. Ez az eljárás létrehoz egy névteret, amelyet meghív velero , és hozzáad egy névtérhez elnevezett velero üzembe helyezést.

    1. Telepítse a Velero-t a következő paranccsal. Testre kell szabnia a példaparancsot.

      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
      

      Igény szerint állítsa be a következő változókat:

      • A parancs telepíti a Microsoft Azure beépülő modult, amelynek kompatibilisnek kell lennie a használt Velero CLI-verzióval. A példaparancs a Microsoft Azure beépülő modul 1.5.0-s verzióját használja, amely kompatibilis a Velero CLI legújabb, 1.9.0-s verziójával. A Valero CLI-verzióval telepíteni kívánt Microsoft Azure beépülő modul verziószámának megtekintéséhez tekintse meg a kompatibilitási mátrixot.

      • Mindenképpen adja meg a paramétert a --use-restic Kubernetes-kötetek fájlrendszerszintű Resticbiztonsági mentésének engedélyezéséhez. Restic bármilyen típusú Kubernetes-kötet biztonsági mentéséhez használható. Alapértelmezés szerint a Velero támogatja az Amazon EBS-kötetek, az Azure Managed Disks és a Google Persistent Disks állandó köteteinek pillanatképeit. Az AKS Arcban a Kubernetes-kötetek fürt megosztott kötetekkel (CSV-kkel) tárolják az adatokat. Restic Ezért az állandó kötet pillanatképeinek engedélyezéséhez szükséges. Az AKS Arc jelenleg nem támogatja a kötet pillanatképeit.

      • A(z) subscriptionId=$AZURE_BACKUP_SUBSCRIPTION_ID nem kötelező. Csak akkor kell megadnia, ha a Velero és a számítási feladatfürt különböző előfizetési azonosítókkal rendelkezik. Ha ugyanazt az Azure-előfizetést használják, eltávolíthatja a paramétert subscriptionId , és a credentials-velero.txt fájl megadja ezt az információt.

      A Velero szolgáltatás automatikusan elindul a telepítéskor.

    2. Ellenőrizze, hogy a Velero szolgáltatás megfelelően fut-e:

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

      A get pods parancsnak azt kell mutatnia, hogy a Velero podok futnak.

A Velero telepítése a MinIO Storage használatával

Az ebben a szakaszban ismertetett eljárások bemutatják, hogyan telepíthető a Velero, és hogyan használhatja a MinIO Storage-t a biztonsági mentésekhez. Ha inkább az Azure Blob Storage-t szeretné használni a biztonsági mentésekhez, nyissa meg a Velero telepítését az Azure Blob Storage-tal.

Ha nem szeretné a biztonsági másolatokat a MinIO-ban tárolni, lépjen a Velero beállítása az Azure Blob Storage használatára.

  1. Telepítse a Velero CLI-t az alábbi parancs futtatásával. Telepítse Chocolately , ha még nem tette meg.

    choco install velero
    
  2. Telepítse a MinIO-t:

    1. Hozzon létre egy állandó kötetet a MinIO biztonsági mentésének tárolásához. A példa létrehoz egy állandó kötetet az AKS Arc alapértelmezett tárolási osztályában, amely már létezik.

      1. Hozzon létre egy minio-pvc-storage.yaml nevű YAML-fájlt a következő tartalommal:

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

        Hozza létre az állandó kötetet a következő parancs futtatásával:

        kubectl create -f minio-pvc-storage.yaml
        
      2. Hozzon létre egy minio-deployment.yaml nevű üzembehelyezési fájlt a MinIO elindításához. Adja meg a következő tartalmat. Az üzembe helyezés a létrehozott állandó kötetet fogja használni.

        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" 
        

        Ezután hozza létre az üzembe helyezést:

        kubectl create -f minio-deployment.yaml
        
    2. Hozzon létre egy minio-service.yaml nevű Kubernetes-szolgáltatást. Ez a szolgáltatás külső IP-címeket biztosít a MinIO podnak.

      Hozzon létre egy YAML-fájlt a következő beállításokkal a szolgáltatás konfigurálásához:

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

      Ezután hozza létre a szolgáltatást:

      kubectl create -f mino-service.yaml
      
    3. Az alábbi parancs futtatásával kérje le a MinIO-pod külső IP-címét. Ezt a címet fogja használni a Velero telepítéséhez.

      kubectl get svc
      
    4. Annak ellenőrzéséhez, hogy a MinIO működik-e, jelentkezzen be az IP-címre egy böngészőben, vagy használja a MinIO-ügyfelet az alábbiak szerint.

      Telepítse a MinIO-ügyfelet, és tallózással keresse meg a MinIO-fájlokat.

      Töltse le a MinIO-ügyfelet:

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

      Ezután állítson be egy aliast:

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

      Végül tallózással tekintse át a MinIO-telepítést:

      mc ls minio
      
    5. Hozzon létre egy gyűjtőt a Velero-fájlok tárolásához. Ez a gyűjtő lesz használva a Velero telepítésében.

      mc mb minio/velero-backup
      
    6. Hozzon létre egy MinIO hitelesítő adatokat tartalmazó fájlt a minio.credentials fájlban a következő információkkal:

      [default] 
      aws_access_key_id=<minio_access_key> 
      aws_secret_access_key=<minio_secret_key> 
      
  3. A Velero telepítése:

    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
    

    A parancs futtatása előtt ellenőrizze a gyűjtő nevét, a MinIO hitelesítő adatait és a MinIO külső IP-címét.

  4. Ellenőrizze, hogy a Velero szolgáltatás megfelelően fut-e:

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

    A get pods parancsnak azt kell mutatnia, hogy a Velero podok futnak.

Fürt biztonsági mentése

Biztonsági másolatot készíthet vagy visszaállíthat a fürt összes objektumára, vagy szűrheti az objektumokat típus, névtér és/vagy címke alapján.

Biztonsági mentés létrehozása

A Velero backup create paranccsal biztonsági másolatokat hozhat létre a kiválasztott tárterületre. Az alábbi példák a --default-volumes-to-restic jelölőt használják, amely pillanatképet hoz létre az állandó kötetekről. További biztonsági mentési lehetőségekért tekintse meg a Velero biztonsági mentési referenciát.

  • Igény szerinti biztonsági mentés a fürt összes névteréről:

    velero backup create <BACKUP-NAME> --default-volumes-to-restic
    
  • Igény szerinti biztonsági mentés egyetlen névtérről a fürtben:

    velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
    
  • Több kijelölt névtér igény szerinti biztonsági mentése a fürtben:

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

Biztonsági mentés állapotának ellenőrzése

  • A biztonsági mentés állapotának ellenőrzéséhez futtassa a következő parancsot:

    velero backup describe <BACKUP-NAME>
    
  • Ha az Azure Blob Storage-t használja a biztonsági mentésekhez, megtekintheti a biztonsági mentést az Azure Storage-fiókjában a létrehozott blob/tároló alatt.

Fürt visszaállítása

Fürt visszaállításához létre kell hoznia egy új fürtöt a régi fürt visszaállításához. A fürt biztonsági másolatát nem állíthatja vissza meglévő fürtre.

A restore parancs lehetővé teszi az összes objektum és állandó kötet visszaállítását egy korábban létrehozott biztonsági másolatból. Az objektumok és állandó kötetek csak szűrt részhalmazát is visszaállíthatja. További biztonsági mentési lehetőségekért tekintse meg az erőforrás-szűrést.

Azon a fürtön, amelybe vissza szeretné állítani a biztonsági mentést (a célfürtre):

  1. A Velero üzembe helyezése a fenti utasítások alapján. Használja ugyanazokat az Azure-hitelesítő adatokat, amelyeket a forrásfürthöz használt.

  2. Győződjön meg arról, hogy a Velero biztonsági mentési objektum a következő parancs futtatásával lett létrehozva. A Velero-erőforrások szinkronizálva vannak a felhőbeli tárolóban lévő biztonsági mentési fájlokkal.

    velero backup describe <BACKUP-NAME>
    
  3. Miután meggyőződett arról, hogy a megfelelő biztonsági mentés (BACKUP-NAME) létezik, állítsa vissza a biztonsági másolat összes objektumát:

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

Segítség a Velero-parancsokkal kapcsolatban

Egy adott Velero-parancshoz társított összes beállítás megtekintéséhez használja a --help jelölőt a paranccsal. Például velero restore create --help a parancshoz velero restore create társított összes beállítást megjeleníti.

Például a futtatás velero restore --helpösszes beállításának velero restorelistázásához a következő információkat adja vissza:

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

Velero eltávolítása

A Velero fürtből való eltávolításához és a Velero telepítése által létrehozott összes erőforrás eltávolításához futtassa a következő parancsokat:

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

Következő lépések