Biztonsági mentés, számításifeladat-fürtök visszaállítása a Velero használatával

A következőkre vonatkozik: AKS az Azure Stack HCI 22H2-ben, AKS Windows Serveren

Ez a cikk azt ismerteti, hogyan telepítheti és használhatja a Velerot a számítási feladatok és a célfürtök biztonsági mentéséhez és visszaállításához az Azure Arc által engedélyezett AKS-ben Azure Blob Storage vagy MinIO-tároló használatával.

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 áll helyre, velero biztonsági mentéssel visszaállíthatja annak tartalmát és belső API-objektumait egy új fürtre.

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

Megjegyzé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ásokról 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ésének megkezdése előtt végezze el ezeket az előfeltételeket:

Velero telepítése Azure Blob Storage

Az ebben a szakaszban ismertetett eljárások azt mutatják be, hogyan telepítheti a Velero-t, és hogyan használhatja Azure Blob Storage biztonsági mentésekhez. Ha nem szeretné tárolni a biztonsági másolatokat az Azure-ban, lépjen a Velero telepítése a MiniO-tárolóval című témakörre.

  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:

Megjegyzés

A --use-restic jelző már nem támogatott a Velero 1.10+-os verziójában, hogy használni tudja az 1.9.x jelölőverziót.

choco install velero   
  1. 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 a 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. A biztonsági mentések és visszaállítások előfizetések közötti engedélyezéséhez adja meg a biztonsági mentésekhez használni kívánt előfizetést. 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
      
  2. Hozzon létre egy Azure Storage-fiókot és blobtárolót.

    Ha Azure Blob Storage használ 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 metódust használhat, ha a név a tárfiókokra vonatkozó Azure-elnevezési szabályokat követi.

    A tárfiók inaktív állapotú titkosítással jön létre (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 címtá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 nevű blobtárolót velerohasznál. Használhat egy másik nevet, lehetőleg egyedit egyetlen Kubernetes-fürtön.

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

    1. Kérje le az Azure-fiók előfizetés-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 közreműködői jogosultságokkal rendelkező szolgáltatásnevet.

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

      • Közreműködői szerepkör: A Közreműködő szerepkör az előfizetés egészére kiterjedő hozzáférést biztosít, ezért győződjön meg arról, hogy ezt a hitelesítő adatot védi, 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ő 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 minden fürthöz egyedi felhasználónevet létrehozni.

      Ha közreműködői szerepkörrel szeretne létrehozni egy szolgáltatásnevet, használja az alábbi parancsot. Helyettesítse be a saját előfizetés-azonosítóját és opcionálisan a saját egyszerű szolgáltatásnevét. 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 az alábbi 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, az alábbi példához hasonlóan:

        $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é szolgáltatásnévként használnivelero, győződjön meg arról, hogy a --name választott név egyedi a Microsoft Entra ID, és nem ütközik más szolgáltatásnévvel vagy alkalmazásregisztrációval.

      Fontos

      A titkos kód csak ebben a lépésben jelenik meg, amikor a szolgáltatásnév létrejön. Ügyeljen arra, hogy jegyezze fel a titkos kulcsokat a jövőbeli 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á ezt 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.

  4. 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)
    

    Megjegyzés

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

  5. Hozzon létre egy fájlt, amely tartalmazza a Velero-telepítéshez 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 a fájlt. Az ügyfél titkos kódja egyszerű szöveges, ami biztonsági kockázatot jelenthet.

    Mielőtt továbblép, 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 felesleges szóközöket vagy lapokat.
    • Győződjön meg arról, hogy a változónevek helyesek.
  6. Telepítse és indítsa el a Velero-t.

    Telepítse a Velero-t a fürtre, és indítsa el az üzembe helyezést. Ez az eljárás létrehoz egy nevű velero névteret, és hozzáad egy nevű velero üzembe helyezést a névtérhez.

    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 az Ön által 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. Ha meg szeretné tudni, hogy a Microsoft Azure beépülő modul melyik verzióját szeretné telepíteni a Valero CLI-verzióval, tekintse meg a kompatibilitási mátrixot.

      • Mindenképpen adja meg a paramétert a --use-restic Kubernetes-kötetek fájlrendszerszintű biztonsági mentésének engedélyezéséhez a használatával Restic. Restic bármilyen típusú Kubernetes-kötet biztonsági mentésére használható. Alapértelmezés szerint a Velero támogatja az Amazon EBS-kötetek, az Azure Managed Disks és a Google Állandó lemezek állandó köteteinek pillanatképek készítését. Az AKS Arcban a Kubernetes-kötetek fürt megosztott köteteket (CSV-ket) használnak az adatok tárolásához. Restic Ezért az állandó kötet-pillanatképek engedélyezéséhez van szükség. 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ásifeladat-fürt eltérő előfizetési azonosítókkal rendelkezik. Ha ugyanazt az Azure-előfizetést használják, eltávolíthatja a subscriptionId paramétert, és a credentials-velero.txt fájl megadja ezeket az információkat.

      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 MinIO-tárolóval

Az ebben a szakaszban ismertetett eljárások azt mutatják be, hogyan telepítheti a Velero-t, és hogyan használhatja a MinIO-tárolót a biztonsági mentésekhez. Ha inkább a Azure Blob Storage-t szeretné használni a biztonsági mentésekhez, lépjen a Velero telepítése Azure Blob Storage.

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

  1. Telepítse a Velero CLI-t a következő parancs futtatásával. Telepíteni 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 alapértelmezett tárosztályban az AKS Arcban, 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 az alábbi tartalmakat. 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. Ezzel a címmel fogja telepíteni a Velero-t.

      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ózzon a MinIO-fájlok között.

      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 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. Ezt a gyűjtőt fogja használni a Velero telepítése.

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

      minio.credentials 
             [default] 
        aws_access_key_id=<minio_access_key> 
        aws_secret_access_key=<minio_secret_key> 
      
  3. Telepítse a Velero-t:

    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árolóba. Az alábbi példák a jelölőt --default-volumes-to-restic használják, amely pillanatképet hoz létre az állandó kötetekről. További biztonsági mentési lehetőségekért lásd a Velero biztonsági mentési referenciájá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
    
  • A fürt egyetlen névterének igény szerinti biztonsági mentése:

    velero backup create <BACKUP-NAME> --include-namespaces <NAMESPACE1> --default-volumes-to-restic
    
  • Igény szerinti biztonsági mentés több kiválasztott névtérről a fürtben:

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

A biztonsági mentés állapotának ellenőrzése

  • A biztonsági mentés állapotának ellenőrzéséhez futtassa az alábbi parancsot:

    velero backup describe <BACKUP-NAME>
    
  • Ha Azure Blob Storage használ a biztonsági mentésekhez, megtekintheti a biztonsági másolatot 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ásolata nem állítható vissza meglévő fürtre.

A restore paranccsal visszaállíthatja az összes objektumot és állandó kötetet 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 lásd: Erőforrás-szűrés.

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

  1. Helyezze üzembe a Velero-t a fenti utasításokat követve. Használja ugyanazokat az Azure-beli 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 másolat (BACKUP-NAME) található, állítsa vissza a biztonsági másolatban lévő összes objektumot:

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

Segítség kérése 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 a velero restore create --help parancshoz velero restore create társított összes beállítást megjeleníti.

Például a parancs összes beállításának velero restorelistázásához futtassa a parancsot velero restore --help, amely 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és á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