다음을 통해 공유


PowerShell을 사용하여 Azure Kubernetes Service 백업

이 문서에서는 Azure PowerShell을 사용하여 AKS(Azure Kubernetes Service)를 구성하고 백업하는 방법을 설명합니다.

이제 Azure Backup은 클러스터에 설치해야 하는 백업 확장을 사용하여 AKS 클러스터(클러스터 리소스 및 클러스터에 연결된 영구 볼륨)를 백업할 수 있습니다. Backup 자격 증명 모음은 이 백업 확장을 통해 클러스터와 통신하여 백업 및 복원 작업을 수행합니다.

시작하기 전에

AKS 클러스터 백업을 시작하기 전에 다음 필수 구성 요소를 검토해야 합니다.

  • 현재 AKS 백업은 Azure Disk 기반 영구 볼륨(CSI 드라이버에서 사용하도록 설정)만 지원합니다. 백업은 테넌트의 운영 데이터 저장소에만 저장되며 자격 증명 모음으로 이동되지 않습니다. Backup 자격 증명 모음 및 AKS 클러스터는 동일한 지역에 있어야 합니다.

  • AKS 백업은 Blob 컨테이너 및 리소스 그룹을 사용하여 백업을 저장합니다. Blob 컨테이너에는 AKS 클러스터 리소스가 저장된 반면 영구 볼륨 스냅샷은 리소스 그룹에 저장됩니다. AKS 클러스터와 스토리지 위치는 동일한 지역에 있어야 합니다. blob 컨테이너를 만드는 방법을 알아봅니다.

  • 현재 AKS 백업은 하루에 한 번 백업을 지원합니다. 또한 하루에 더 많은 횟수의 백업(4시간, 8시간, 12시간 간격마다)도 지원합니다. 이 솔루션을 사용하면 복원용 데이터를 최대 360일 동안 유지할 수 있습니다. 백업 정책을 만드는 방법을 알아봅니다.

  • AKS 클러스터에서 백업 및 복원 작업을 구성하려면 백업 확장을 설치해야 합니다. 백업 확장에 대해 자세히 알아봅니다.

  • Microsoft.KubernetesConfigurationMicrosoft.DataProtection백업 구성 및 Microsoft.ContainerService 복원 작업을 시작하기 전에 구독에 등록되었는지 확인합니다.

  • AKS 백업 관련 백업 또는 복원 작업을 시작하기 전에 모든 필수 작업을 수행해야 합니다.

지원되는 시나리오, 제한 사항, 가용성에 대한 자세한 내용은 지원 매트릭스를 참조하세요.

Backup 자격 증명 모음 만들기

Backup 자격 증명 모음은 PostgreSQL용 Azure Database 서버 및 Azure Disk와 같이 Azure Backup이 지원하는 다양한 최신 워크로드에 대한 백업 데이터를 저장하는 Azure의 관리 엔터티입니다. 백업 자격 증명 모음을 사용하면 관리 오버헤드를 최소화하면서 백업 데이터를 쉽게 구성할 수 있습니다. 이는 Azure Resource Manager 모델을 기반으로 하며 백업 데이터를 보호할 수 있도록 하는 향상된 기능을 제공합니다. Backup 자격 증명 모음을 만들기 전에 자격 증명 모음에 있는 데이터의 스토리지 중복성을 선택한 다음, 해당 스토리지 중복성 및 위치를 사용하여 Backup 자격 증명 모음을 만듭니다.

여기에서는 testBkpVaultRG 리소스 그룹의 West US 지역에 백업 자격 증명 모음 TestBkpVault를 만듭니다. New-AzDataProtectionBackupVault cmdlet을 사용하여 Backup 자격 증명 모음을 만듭니다. 백업 자격 증명 모음 만들기에 대해 자세히 알아보세요.

참고 항목

선택한 자격 증명 모음에 global-redundancy 설정이 있을 수 있지만 AKS 백업은 현재 운영 계층만 지원합니다. 모든 백업은 AKS 클러스터와 동일한 지역의 구독에 저장되며 Backup 자격 증명 모음 스토리지에 복사되지 않습니다.

  1. Backup 자격 증명 모음의 스토리지 설정을 정의하려면 다음 cmdlet을 실행합니다.

    참고 항목

    자격 증명 모음은 로컬 중복작동 데이터 저장소 지원만 사용하여 만들어집니다.

    $storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant -DataStoreType OperationalStore
    
  2. 앞에서 언급한 세부 정보에 따라 Backup 자격 증명 모음을 만들려면 다음 cmdlet을 실행합니다.

    New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location westus -StorageSetting $storageSetting
    $TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
    

자격 증명 모음 만들기가 완료되면 AKS 클러스터를 보호하는 백업 정책을 만듭니다.

백업 정책 만들기

Azure Backup을 사용하면 매일 백업 또는 하루에 여러 백업을 사용하여 AKS 클러스터 보호에 대한 백업 정책을 만들 수 있습니다.

AKS 클러스터에 대한 백업 정책을 만들려면 다음 cmdlet을 실행합니다.

  1. cmdlet Get-AzDataProtectionPolicyTemplate 을 사용하여 정책 템플릿을 가져오고 AKS 백업에 대한 백업 정책의 내부 구성 요소를 확인합니다. 이 명령은 지정된 데이터 원본 형식에 관한 기본 정책 템플릿을 반환합니다. 이 정책 템플릿을 사용하여 새 정책을 만듭니다.

    $policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureKubernetesService
    

    정책 템플릿은 트리거 기준(백업 작업을 트리거하는 요소 결정)과 수명 주기(백업 삭제, 복사 또는 이동 시기 결정)로 구성됩니다. AKS 백업에서 트리거의 기본값은 예약된 시간당 트리거가 4시간마다(PT4H)이고 각 백업의 보존 기간은 7일입니다.

    $policyDefn.PolicyRule[0]. Trigger | fl
    
    ObjectType: ScheduleBasedTriggerContext
    ScheduleRepeatingTimeInterval: {R/2023-04-05T13:00:00+00:00/PT4H}
    TaggingCriterion: {Default}
    
    $policyDefn.PolicyRule[1]. Lifecycle | fl
    
    DeleteAfterDuration: P7D
    DeleteAfterObjectType: AbsoluteDeleteOption
    SourceDataStoreObjectType : DataStoreInfoBase
    SourceDataStoreType: OperationalStore
    TargetDataStoreCopySetting:
    
  2. 일일 백업 빈도경우 백업을 수행해야 하는 시간을 지정합니다.

    Important

    시간은 백업이 완료되는 시간이 아니라 백업 시작 시간을 나타냅니다. 백업 작업을 완료하는 데 필요한 시간은 영구 볼륨의 수와 크기, 연속 백업 간의 변동률 등 다양한 요소에 따라 달라집니다.

    AKS 백업은 하루에 여러 백업을 제공합니다. 더 자주 백업해야 하는 경우 백업은 4, 6, 8 또는 12시간 간격으로 백업을 수행할 수 있는 시간별 백업 빈도를 선택하여 하루 동안 동일하게 백업이 분산됩니다. 백업은 선택한 시간 간격을 기준으로 예약됩니다. 예를 들어 4시간마다를 선택하면 대략 4시간마다 간격으로 백업이 수행됩니다.

  3. 시간별 빈도 또는 보존 기간을 편집하려면 Edit-AzDataProtectionPolicyTriggerClientObject 및/또는 Edit-AzDataProtectionPolicyRetentionRuleClientObject cmdlet을 사용합니다. 정책 개체에 필요한 값이 모두 있으면 New-AzDataProtectionBackupPolicy cmdlet을 사용하여 정책 개체에서 새 정책 만들기를 시작합니다.

    New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name aksBkpPolicy -Policy $policyDefn
    
    $aksBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "aksBkpPolicy"
    

백업을 위해 AKS 클러스터 준비

자격 증명 모음 및 정책 생성이 완료되면 AKS 클러스터를 백업할 수 있도록 다음 필수 구성 요소를 수행해야 합니다.

  1. 스토리지 계정 및 Blob 컨테이너 만들기

    AKS 백업은 Kubernetes 리소스를 Blob 컨테이너에 백업으로 저장합니다. 백업을 위해 AKS 클러스터를 준비하려면 클러스터에 확장을 설치해야 합니다. 이 확장에는 스토리지 계정과 Blob 컨테이너가 입력으로 필요합니다.

    새 저장소 계정과 blob 컨테이너를 만들려면 이 단계를 참조하세요.

    참고 항목

    1. 스토리지 계정과 AKS 클러스터는 동일한 지역 및 구독에 있어야 합니다.
    2. Blob 컨테이너에는 이전에 만든 파일 시스템이 포함되면 안 됩니다(AKS 백업으로 만든 경우 제외).
    3. 원본 또는 대상 AKS 클러스터가 프라이빗 가상 네트워크에 있는 경우 스토리지 계정을 AKS 클러스터에 연결하기 위해 프라이빗 엔드포인트를 만들어야 합니다.
  2. Backup 확장 설치:

    백업 및 복원 작업을 수행하려면 AKS 클러스터에 Backup Extension을 설치해야 합니다. Backup Extension은 dataprotection-microsoft 네임스페이스를 클러스터에 만들고, 동일한 네임스페이스를 사용하여 해당 리소스를 배포합니다. 확장에는 설치를 위한 입력으로 스토리지 계정과 Blob 컨테이너가 필요합니다. 확장 설치 명령에 대해 알아보세요.

    확장 설치의 일부로 AKS 클러스터의 노드 풀 리소스 그룹에 사용자 ID가 만들어집니다. 확장에서 스토리지 계정에 액세스하려면 이 ID에 스토리지 계정 기여자 역할을 제공해야 합니다. 필요한 역할을 할당하려면 이 명령을 실행합니다.

  3. 신뢰할 수 있는 액세스 사용

Backup 자격 증명 모음이 AKS 클러스터와 연결하려면 Backup 자격 증명 모음이 AKS 클러스터에 직접 연결되도록 허용하므로 신뢰할 수 있는 액세스를 사용하도록 설정해야 합니다. 신뢰할 수 있는 액세스를 사용하도록 설정하는 방법을 알아봅니다.

참고 항목

Backup Extension 설치 및 신뢰할 수 있는 액세스 사용의 경우 명령은 Azure CLI에서만 사용할 수 있습니다.

백업 구성

생성된 Backup 자격 증명 모음 및 백업 정책이 있고 AKS 클러스터가 ready-to-be-backed-up 상태라면 이제 AKS 클러스터의 백업을 시작할 수 있습니다.

주요 엔터티

  • 보호할 AKS 클러스터

    보호할 AKS 클러스터의 Azure Resource Manager ID를 가져옵니다. 이는 클러스터의 식별자 역할을 합니다. 이 예에서는 리소스 그룹 aksrg 아래의 다른 구독에서 PSTestAKSCluster라는 AKS 클러스터를 사용하겠습니다.

    $sourceClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/aksrg /providers/Microsoft.ContainerService/managedClusters/ PSTestAKSCluster "
    
  • 스냅샷 리소스 그룹

    영구 볼륨 스냅샷은 구독의 리소스 그룹에 저장됩니다. Azure Backup 서비스에서 사용할 스냅샷 데이터 저장소로 전용 리소스 그룹을 만드는 것이 좋습니다. 전용 리소스 그룹을 사용하면 리소스 그룹에 대한 액세스 권한을 제한할 수 있기 때문에 안전하고 쉽게 백업 데이터를 관리할 수 있습니다. 리소스 그룹의 Azure Resource Manager ID를 영구 볼륨 스냅샷을 저장할 위치에 저장합니다.

    $snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/snapshotrg"
    

요청 준비

백업 구성은 다음 두 단계로 수행됩니다.

  1. New-AzDataProtectionBackupConfigurationClientObject cmdlet을 사용하여 백업할 클러스터 리소스를 정의하도록 백업 구성을 준비합니다. 다음 예의 구성은 현재 아래의 모든 클러스터 리소스로 정의되며, 이후 네임스페이스는 레이블 key-value pair x=y로 백업됩니다. 또한 모든 클러스터 범위 리소스 및 영구 볼륨이 백업됩니다. 다음 네임스페이스는 백업 구성에서 건너뛰고 백업에 대해 구성되지 않습니다. kube-system, kube-node-lease, kube-public.

    $backupConfig = New-AzDataProtectionBackupConfigurationClientObject -SnapshotVolume $true -IncludeClusterScopeResource $true -DatasourceType AzureKubernetesService -LabelSelector "env=prod"
    
  2. Initialize-AzDataProtectionBackupInstance cmdlet을 사용하여 관련 자격 증명 모음, 정책, AKS 클러스터, 백업 구성 및 스냅샷 리소스 그룹을 사용하여 관련 요청을 준비합니다.

    $backupInstance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureKubernetesService  -DatasourceLocation $dataSourceLocation -PolicyId $ aksBkpPol.Id -DatasourceId $sourceClusterId -SnapshotResourceGroupId $ snapshotrg -FriendlyName $friendlyName -BackupConfiguration $backupConfig
    

필요한 권한 할당 및 유효성 검사

필요한 권한을 할당하고 AKS 클러스터 보호에 대한 유효성 검사를 수행하려면 다음 cmdlet을 실행합니다.

  1. 요청이 준비되면 Azure RBAC(Azure 역할 기반 액세스 제어)를 통해 자격 증명 모음(자격 증명 모음 관리 시스템 ID로 표시) 및 AKS 클러스터에 필요한 권한을 사용자에게 할당해야 합니다. Set-AzDataProtectionMSIPermission cmdlet을 사용하여 이 작업을 수행할 수 있습니다. 백업 자격 증명 모음은 관리 ID를 사용하여 다른 Azure 리소스에 액세스합니다. AKS 클러스터의 백업을 구성하려면 백업 자격 증명 모음의 관리 ID에 스냅샷이 생성되고 관리되는 AKS 클러스터 및 리소스 그룹에 대한 권한 집합이 필요합니다. 또한 AKS 클러스터에는 스냅샷 리소스 그룹에 대한 권한이 필요합니다.

    참고 항목

    시스템이 할당한 관리 ID만 현재 백업(Backup 자격 증명 모음 및 AKS 클러스터 모두)에 대해 지원됩니다. 시스템이 할당한 관리 ID는 리소스당 하나로 제한되며 이 리소스의 수명 주기에 연결됩니다. Azure RBAC를 사용하여 관리 ID에 권한을 부여할 수 있습니다. 관리 ID는 Azure 리소스에서만 사용할 수 있는 특수 유형의 서비스 주체입니다. 관리 ID에 대해 자세히 알아보세요.

    Set-AzDataProtectionMSIPermission -BackupInstance $backupInstance -VaultResourceGroup $rgName -VaultName $vaultName -PermissionsScope "ResourceGroup"
    
  2. 사용 권한이 할당되면 만든 인스턴스의 준비 상태를 테스트합니다.

    test-AzDataProtectionBackupInstanceReadiness -ResourceGroupName $resourceGroupName -VaultName $vaultName -BackupInstance  $backupInstance.Property 
    
  3. 유효성 검사에 성공하면 cmdlet을 사용하여 New-AzDataProtectionBackupInstance AKS 클러스터를 보호하기 위한 요청을 제출합니다.

    New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $backupInstance
    

주문형 백업 실행

주문형 백업을 트리거하려면 다음 cmdlet을 실행합니다.

  1. cmdlet을 실행하여 백업을 트리거하려는 관련 백업 인스턴스를 Get-AzDataProtectionBackupInstance 가져옵니다.

    $instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"
    
  2. 백업을 트리거하는 동안 보존 규칙을 지정합니다. 정책의 보관 규칙을 보려면 보관 규칙에 대한 정책 개체로 이동합니다. 다음 예에서는 이름이 default인 규칙이 나타나며 주문형 백업에 해당 규칙을 사용하겠습니다.

    $policyDefn.PolicyRule | fl
    BackupParameter: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
    BackupParameterObjectType: AzureBackupParams
    DataStoreObjectType: DataStoreInfoBase
    DataStoreType: OperationalStore
    Name: BackupHourly
    ObjectType: AzureBackupRule
    Trigger: Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
    TriggerObjectType: ScheduleBasedTriggerContext
    IsDefault: True
    Lifecycle: {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
    Name: Default
    ObjectType: AzureRetentionRule
    
  3. cmdlet을 사용하여 주문형 백업을 Backup-AzDataProtectionBackupInstanceAdhoc 트리거합니다.

    $AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
    
    Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"
    

작업 추적

Get-AzDataProtectionJob cmdlet을 사용하여 모든 작업을 추적합니다. 모든 작업을 나열하고 특정 작업 세부 정보를 가져올 수 있습니다. Az.ResourceGraph cmdlet을 사용하여 모든 Backup 자격 증명 모음에서 모든 작업을 추적할 수도 있습니다. Search-AzDataProtectionJobInAzGraph cmdlet을 사용하여 모든 Backup 자격 증명 모음에서 관련 작업 세부 정보를 가져옵니다.

$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureKubernetesService  -Operation OnDemandBackup

다음 단계