Azure CLI를 사용하여 Azure Kubernetes Service 백업 복원

이 문서에서는 Azure CLI를 사용하여 Azure Backup이 만든 복원 지점에서 Azure Kubernetes 클러스터를 복원하는 방법을 설명합니다.

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

OLR(원래 위치 복구)(백업된 AKS 클러스터에서 복원) 및 ALR(대체 위치 복구)(다른 AKS 클러스터에서 복원)을 모두 수행할 수 있습니다. ILR(항목 수준 복구) 백업에서 복원할 항목을 선택할 수도 있습니다.

참고 항목

복원 작업을 시작하기 전에 대상 클러스터에 백업 확장이 설치되어 있고 백업 자격 증명 모음에 대해 신뢰할 수 있는 액세스가 활성화되어 있어야 합니다. 자세히 알아보기.

시작하기 전에

  • AKS 백업을 사용하면 원래 AKS 클러스터(백업됨)와 대체 AKS 클러스터로 복원할 수 있습니다. AKS 백업을 사용하면 전체 복원 및 항목 수준 복원을 수행할 수 있습니다. 복원 구성을 활용하여 복원 중에 선택할 클러스터 리소스를 기반으로 매개 변수를 정의할 수 있습니다.

  • 대상 AKS 클러스터에 백업 확장을 설치해야 합니다. 또한 백업 자격 증명 모음과 AKS 클러스터 간에 신뢰할 수 있는 액세스를 사용하도록 설정해야 합니다.

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

대상 AKS 클러스터 유효성 검사 및 준비

복원 프로세스를 시작하기 전에 AKS 클러스터가 복원을 위해 준비되어 있는지 유효성을 검사해야 합니다. 여기에는 백업이 저장되는 스토리지 계정에 대한 권한이 있는 확장과 함께 설치할 백업 확장과 AKS 클러스터와 Backup 자격 증명 모음 간에 사용하도록 설정할 신뢰할 수 있는 액세스가 포함됩니다.

먼저, 다음 명령을 실행하여 백업 확장이 클러스터에 설치되어 있는지 확인합니다.

az k8s-extension show --name azure-aks-backup --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup

확장이 설치된 경우 백업이 저장된 스토리지 계정에 대한 적절한 권한이 있는지 확인합니다.

az role assignment list --all --assignee  $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv)

역할이 할당되지 않은 경우 다음 명령을 실행하여 역할을 할당할 수 있습니다.

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

백업 확장이 설치되지 않은 경우 백업이 입력으로 저장되는 스토리지 계정 및 Blob 컨테이너를 사용하여 다음 확장 설치 명령을 실행합니다.

az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId

그런 다음, 다음 명령을 실행하여 스토리지 계정의 확장에 필요한 역할을 할당합니다.

az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $targetakscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Account Contributor'  --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount

신뢰할 수 있는 액세스 확인

Backup 자격 증명 모음과 대상 AKS 클러스터 간에 신뢰할 수 있는 액세스가 사용하도록 설정되어 있는지 확인하려면 다음 명령을 실행합니다.

az aks trustedaccess rolebinding list --resource-group $aksclusterresourcegroup --cluster-name $targetakscluster

사용하도록 설정되지 않은 경우 다음 명령을 실행하여 신뢰할 수 있는 액세스를 사용하도록 설정합니다.

az aks trustedaccess rolebinding create --cluster-name $targetakscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault

AKS 클러스터로 복원

관련 복구 지점 가져오기

AKS 클러스터와 연결된 모든 인스턴스를 가져오고 관련 인스턴스를 식별합니다.

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --query aksAssignedIdentity.id

인스턴스가 식별되면 관련 복구 지점을 가져옵니다.

az dataprotection recovery-point list --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --vault-name $backupvault

복원 요청 준비

대상 AKS 클러스터에 복원할 항목을 정의하는 복원 구성을 준비하려면 az dataprotection backup-instance initialize-restoreconfig 명령을 실행합니다.

az dataprotection backup-instance initialize-restoreconfig --datasource-type AzureKubernetesService >restoreconfig.json



{
  "conflict_policy": "Skip",
  "excluded_namespaces": null,
  "excluded_resource_types": null,
  "include_cluster_scope_resources": true,
  "included_namespaces": null,
  "included_resource_types": null,
  "label_selectors": null,
  "namespace_mappings": null,
  "object_type": "KubernetesClusterRestoreCriteria",
  "persistent_volume_restore_mode": "RestoreWithVolumeData"
}

이제 관련된 모든 세부 정보와 함께 복원 요청을 준비합니다. 백업을 원래 클러스터로 복원하는 경우 다음 명령을 실행합니다.

az dataprotection backup-instance restore initialize-for-item-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --backup-instance-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid >restorerequestobject.json

복원할 대상 AKS 클러스터가 원래 클러스터와 다른 경우 다음 명령을 실행합니다.

az dataprotection backup-instance restore initialize-for-data-recovery --datasource-type AzureKubernetesService --restore-location $region --source-datastore OperationalStore --recovery-point-id $recoverypointid --restore-configuration restoreconfig.json --target-resource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$targetakscluster >restorerequestobject.json

이제 요구 사항에 따라 JSON 개체를 업데이트한 후, 다음 명령을 실행하여 개체의 유효성을 검사할 수 있습니다.

az dataprotection backup-instance validate-for-restore --backup-instance-name $backupinstancename --resource-group $backupvaultresourcegroup --restore-request-object restorerequestobject.json --vault-name $backupvault

이 명령은 AKS 클러스터 및 Backup 자격 증명 모음에 서로에 대한 필요한 권한과 복원을 수행하기 위한 스냅샷 리소스 그룹이 있는지 확인합니다. 권한 누락으로 인해 유효성 검사가 실패하는 경우 다음 명령을 실행하여 권한을 할당할 수 있습니다.

az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Restore --permissions-scope Resource --resource-group  $backupvaultresourcegroup --vault-name $backupvault --restore-request-object restorerequestobject.json --snapshot-resource-group-id /subscriptions/$subscriptionId/resourceGroups/$snapshotresourcegroup

복원 트리거

역할 할당이 완료되면 복원 개체의 유효성을 다시 한 번 검사해야 합니다. 그런 다음, 아래 명령을 실행하여 복원 작업을 트리거할 수 있습니다.

az dataprotection backup-instance restore trigger --restore-request-object restorerequestobject.json --ids /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstancename 

참고 항목

복원 작업 중에 Backup 자격 증명 모음 및 AKS 클러스터에는 복원을 수행하기 위한 특정 역할이 할당되어 있어야 합니다.

  1. 대상 AKS 클러스터에는 스냅샷 리소스 그룹에 대한 기여자 역할이 있어야 합니다.
  2. 백업 확장과 연결된 사용자 ID에는 백업이 저장되는 스토리지 계정에 대한 스토리지 계정 기여자 역할이 있어야 합니다.
  3. 백업 자격 증명 모음에는 대상 AKS 클러스터 및 스냅샷 리소스 그룹에 대한 읽기 권한자 역할이 있어야 합니다.

작업 추적

az dataprotection job 명령을 사용하여 복원 작업을 추적할 수 있습니다. 모든 작업을 나열하고 특정 작업 세부 정보를 가져올 수 있습니다.

Resource Graph를 사용하여 모든 구독, 리소스 그룹 및 Backup 자격 증명 모음의 모든 작업을 추적할 수도 있습니다. az dataprotection job list-from-resourcegraph 명령을 사용하여 관련 작업을 가져옵니다.

az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation Restore

다음 단계