Azure CLI를 사용하여 Azure Kubernetes Service 백업
이 문서에서는 Azure CLI를 사용하여 AKS(Azure Kubernetes Service)를 구성하고 백업하는 방법을 설명합니다. Azure PowerShell을 사용하여 AKS를 백업할 수도 있습니다.
이제 Azure Backup은 클러스터에 설치해야 하는 백업 확장을 사용하여 AKS 클러스터(클러스터 리소스 및 클러스터에 연결된 영구 볼륨)를 백업할 수 있습니다. Backup 자격 증명 모음은 이 백업 확장을 통해 클러스터와 통신하여 백업 및 복원 작업을 수행합니다.
시작하기 전에
현재 AKS 백업은 Azure Disk 기반 영구 볼륨(CSI 드라이버에서 사용하도록 설정)만 지원합니다. 백업은 테넌트의 운영 데이터 저장소에만 저장되며 자격 증명 모음으로 이동되지 않습니다. Backup 자격 증명 모음 및 AKS 클러스터는 동일한 지역에 있어야 합니다.
AKS 백업은 Blob 컨테이너 및 리소스 그룹을 사용하여 백업을 저장합니다. Blob 컨테이너에는 AKS 클러스터 리소스가 저장된 반면 영구 볼륨 스냅샷은 리소스 그룹에 저장됩니다. AKS 클러스터와 스토리지 위치는 동일한 지역에 있어야 합니다. blob 컨테이너를 만드는 방법을 알아봅니다.
현재 AKS 백업은 하루에 한 번 백업을 지원합니다. 또한 하루에 더 많은 횟수의 백업(4시간, 8시간, 12시간 간격마다)도 지원합니다. 이 솔루션을 사용하면 복원용 데이터를 최대 360일 동안 유지할 수 있습니다. 백업 정책을 만드는 방법을 알아봅니다.
AKS 클러스터에서 백업 및 복원 작업을 구성하려면 백업 확장을 설치해야 합니다. 백업 확장에 대해 자세히 알아봅니다.
Microsoft.KubernetesConfiguration
Microsoft.DataProtection
백업 구성 및Microsoft.ContainerService
복원 작업을 시작하기 전에 구독에 등록되었는지 확인합니다.AKS 백업 관련 백업 또는 복원 작업을 시작하기 전에 모든 필수 작업을 수행해야 합니다.
지원되는 시나리오, 제한 사항, 가용성에 대한 자세한 내용은 지원 매트릭스를 참조하세요.
Backup 자격 증명 모음 만들기
Backup 자격 증명 모음은 PostgreSQL용 Azure Database 서버 및 Azure Disk와 같이 Azure Backup이 지원하는 다양한 최신 워크로드에 대한 백업 데이터를 저장하는 Azure의 관리 엔터티입니다. 백업 자격 증명 모음을 사용하면 관리 오버헤드를 최소화하면서 백업 데이터를 쉽게 구성할 수 있습니다. Backup 자격 증명 모음은 Azure의 Azure Resource Manager 모델을 기반으로 하며 백업 데이터를 보호할 수 있도록 하는 향상된 기능을 제공합니다.
Backup 자격 증명 모음을 만들기 전에 자격 증명 모음에 있는 데이터의 스토리지 중복성을 선택한 다음, 해당 스토리지 중복성 및 위치를 사용하여 Backup 자격 증명 모음을 만듭니다. 백업 자격 증명 모음 만들기에 대해 자세히 알아보세요.
참고 항목
선택한 자격 증명 모음에 global-redundancy 설정이 있을 수 있지만 AKS 백업은 현재 운영 계층만 지원합니다. 모든 백업은 AKS 클러스터와 동일한 지역의 구독에 저장되며 Backup 자격 증명 모음 스토리지에 복사되지 않습니다.
Backup 자격 증명 모음을 만들려면 다음 명령을 실행합니다.
az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
자격 증명 모음 만들기가 완료되면 AKS 클러스터를 보호하는 백업 정책을 만듭니다.
백업 정책 만들기
AKS 백업에 대한 백업 정책의 내부 구성 요소를 이해하려면 az dataprotection backup-policy get-default-policy-template
명령을 사용하여 정책 템플릿을 검색합니다. 이 명령은 지정된 데이터 원본 형식에 관한 기본 정책 템플릿을 반환합니다. 이 정책 템플릿을 사용하여 새 정책을 만듭니다.
az dataprotection backup-policy get-default-policy-template --datasource-type AzureKubernetesService > akspolicy.json
{
"datasourceTypes": [
"Microsoft.ContainerService/managedClusters"
],
"name": "AKSPolicy1",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2023-01-04T09:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
}
정책 템플릿은 트리거 기준(백업 작업을 트리거하는 요소 결정)과 수명 주기(백업 삭제, 복사 또는 이동 시기 결정)로 구성됩니다. AKS 백업에서 트리거의 기본값은 예약된 시간당 트리거가 4시간마다(PT4H)이고 각 백업의 보존 기간은 7일입니다.
Scheduled trigger:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2023-01-04T09:00:00+00:00/PT4H"
]
}
}
Default retention lifecycle:
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
]
AKS 백업은 하루에 여러 백업을 제공합니다. 더 자주 백업해야 하는 경우 4, 6, 8 또는 12시간 간격으로 백업을 수행할 수 있는 시간별 백업 빈도를 선택합니다. 선택한 시간 간격에 따라 백업이 예약됩니다.
Important
시간은 백업이 완료되는 시간이 아니라 백업 시작 시간을 나타냅니다.
템플릿을 JSON 파일로 다운로드하면 필요에 따라 예약 및 보존을 위해 템플릿을 편집할 수 있습니다. 그런 다음, 결과 JSON을 사용하여 새 정책을 만듭니다. 시간별 빈도 또는 보존 기간을 편집하려면 az dataprotection backup-policy trigger set
및/또는 az dataprotection backup-policy retention-rule set
명령을 사용합니다.
참고 항목
자격 증명 모음 계층에 백업 데이터를 저장하여 규정 준수 목적으로 또는 지역 간 복원을 통한 지역 재해 복구를 위해 보존하려면 백업을 자격 증명 모음에 저장해야 하는 기간을 정의하는 새 보존 규칙을 기본 템플릿에 정의해야 합니다.
백업 정책에 대한 기본 템플릿을 업데이트하고 30일 동안 자격 증명 모음 계층에서 하루에 첫 번째 성공적인 백업을 유지하는 보존 규칙을 추가하는 예제를 살펴보겠습니다.
명령을 az dataprotection backup-policy retention-rule create-lifecycle
사용하여 보존 규칙을 만든 다음 '' 명령을 사용하여 백업 정책 템플릿에 보존 규칙을 추가합니다.
az dataprotection backup-policy retention-rule create-lifecycle --count 30 --retention-duration-type Days --copy-option ImmediateCopyOption --target-datastore VaultStore --source-datastore OperationalStore > ./retentionrule.json
az dataprotection backup-policy retention-rule set --lifecycles ./retentionrule.json --name Daily --policy ./akspolicy.json > ./akspolicy.json
정책 JSON에 필요한 값이 모두 있으면 az dataprotection backup-policy create
명령을 사용하여 정책 개체에서 새 정책을 만듭니다.
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json
백업을 위해 AKS 클러스터 준비
자격 증명 모음 및 정책 생성이 완료되면 AKS 클러스터를 백업할 수 있도록 다음 필수 구성 요소를 수행해야 합니다.
스토리지 계정 및 Blob 컨테이너를 만듭니다.
AKS 백업은 Kubernetes 리소스를 Blob 컨테이너에 백업으로 저장합니다. 백업을 위해 AKS 클러스터를 준비하려면 클러스터에 확장을 설치해야 합니다. 이 확장에는 스토리지 계정과 Blob 컨테이너가 입력으로 필요합니다.
새 스토리지 계정을 만들려면 다음 명령을 실행합니다.
az storage account create --name $storageaccount --resource-group $storageaccountresourcegroup --location $region --sku Standard_LRS
스토리지 계정 만들기가 완료되면 다음 명령을 실행하여 Blob 컨테이너를 내부에 만듭니다.
az storage container create --name $blobcontainer --account-name $storageaccount --auth-mode login
스토리지 계정 및 Blob 컨테이너를 만드는 동안 프라이빗 엔드포인트와 같은 특정 기능을 사용하거나 사용하지 않도록 설정하는 방법을 알아보세요.
참고 항목
- 스토리지 계정과 AKS 클러스터는 동일한 지역 및 구독에 있어야 합니다.
- Blob 컨테이너에는 이전에 만든 파일 시스템이 포함되면 안 됩니다(AKS 백업으로 만든 경우 제외).
- 원본 또는 대상 AKS 클러스터가 프라이빗 가상 네트워크에 있는 경우 스토리지 계정을 AKS 클러스터에 연결하기 위해 프라이빗 엔드포인트를 만들어야 합니다.
Backup Extension을 설치합니다.
백업 및 복원 작업을 수행하려면 AKS 클러스터에 Backup Extension을 설치해야 합니다. Backup Extension은
dataprotection-microsoft
네임스페이스를 클러스터에 만들고, 동일한 네임스페이스를 사용하여 해당 리소스를 배포합니다. 확장에는 설치를 위한 입력으로 스토리지 계정과 Blob 컨테이너가 필요합니다.az k8s-extension create --name azure-aks-backup --extension-type microsoft.dataprotection.kubernetes --scope cluster --cluster-type managedClusters --cluster-name $akscluster --resource-group $aksclusterresourcegroup --release-train stable --configuration-settings blobContainer=$blobcontainer storageAccount=$storageaccount storageAccountResourceGroup=$storageaccountresourcegroup storageAccountSubscriptionId=$subscriptionId
확장 설치의 일부로 AKS 클러스터의 노드 풀 리소스 그룹에 사용자 ID가 만들어집니다. 확장에서 스토리지 계정에 액세스하려면 이 ID 에 Storage Blob 데이터 기여자 역할을 제공해야 합니다. 필요한 역할을 할당하려면 다음 명령을 실행합니다.
az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name $akscluster --resource-group $aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Blob Data Contributor' --scope /subscriptions/$subscriptionId/resourceGroups/$storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/$storageaccount
신뢰할 수 있는 액세스 사용
Backup 자격 증명 모음이 AKS 클러스터와 연결하려면 Backup 자격 증명 모음이 AKS 클러스터에 직접 연결되도록 허용하므로 신뢰할 수 있는 액세스를 사용하도록 설정해야 합니다.
신뢰할 수 있는 액세스를 사용하도록 설정하려면 다음 명령을 실행합니다.
az aks trustedaccess rolebinding create --cluster-name $akscluster --name backuprolebinding --resource-group $aksclusterresourcegroup --roles Microsoft.DataProtection/backupVaults/backup-operator --source-resource-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/BackupVaults/$backupvault
백업 구성
생성된 Backup 자격 증명 모음 및 백업 정책이 있고 AKS 클러스터가 ready-to-be-backed-up 상태라면 이제 AKS 클러스터의 백업을 시작할 수 있습니다.
요청 준비
백업 구성은 다음 두 단계로 수행됩니다.
az dataprotection backup-instance initialize-backupconfig
명령을 사용하여 백업할 클러스터 리소스를 정의하기 위한 백업 구성을 준비합니다. 이 명령은 필요에 따라 AKS 클러스터에 대한 백업 구성을 정의하기 위해 업데이트할 수 있는 JSON을 생성합니다.az dataprotection backup-instance initialize-backupconfig --datasource-type AzureKubernetesService > aksbackupconfig.json { "excluded_namespaces": null, "excluded_resource_types": null, "include_cluster_scope_resources": true, "included_namespaces": null, "included_resource_types": null, "label_selectors": null, "snapshot_volumes": true }
다음 네임스페이스는 백업 구성에서 건너뛰고 백업에 대해 구성되지 않습니다. kube-system, kube-node-lease, kube-public.
az dataprotection backup-instance initialize
명령을 사용하여 관련 자격 증명 모음, 정책, AKS 클러스터, 백업 구성 및 스냅샷 리소스 그룹으로 관련 요청을 준비합니다.az dataprotection backup-instance initialize --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --datasource-location $region --datasource-type AzureKubernetesService --policy-id /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupPolicies/$backuppolicy --backup-configuration ./aksbackupconfig.json --friendly-name ecommercebackup --snapshot-resource-group-name $snapshotresourcegroup > backupinstance.json
이제 이 명령의 JSON 출력을 사용하여 AKS 클러스터에 대한 백업을 구성합니다.
필요한 권한 할당 및 유효성 검사
백업 자격 증명 모음은 관리 ID를 사용하여 다른 Azure 리소스에 액세스합니다. AKS 클러스터의 백업을 구성하려면 백업 자격 증명 모음의 관리 ID에 스냅샷이 생성되고 관리되는 AKS 클러스터 및 리소스 그룹에 대한 권한 집합이 필요합니다. 또한 AKS 클러스터에는 스냅샷 리소스 그룹에 대한 권한이 필요합니다.
시스템이 할당한 관리 ID만 현재 백업(Backup 자격 증명 모음 및 AKS 클러스터 모두)에 대해 지원됩니다. 시스템이 할당한 관리 ID는 리소스당 하나로 제한되며 이 리소스의 수명 주기에 연결됩니다. Azure RBAC(역할 기반 액세스 제어)를 사용하여 관리 ID에 권한을 부여할 수 있습니다. 관리 ID는 Azure 리소스에서만 사용할 수 있는 특수 유형의 서비스 주체입니다. 관리 ID에 대해 자세히 알아보세요.
요청이 준비되면 먼저 다음 명령을 실행하여 필요한 역할이 위에서 언급한 리소스에 할당되었는지 확인해야 합니다.
az dataprotection backup-instance validate-for-backup --backup-instance ./backupinstance.json --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault
유효성 검사에 실패하고 특정 권한이 누락된 경우 다음 명령을 실행하여 할당할 수 있습니다.
az dataprotection backup-instance update-msi-permissions command.
az dataprotection backup-instance update-msi-permissions --datasource-type AzureKubernetesService --operation Backup --permissions-scope ResourceGroup --vault-name $backupvault --resource-group $backupvaultresourcegroup --backup-instance backupinstance.json
권한이 할당되면 다음 백업 유효성 검사 명령을 사용하여 유효성을 다시 검사합니다.
az dataprotection backup-instance create --backup-instance backupinstance.json --resource-group $backupvaultresourcegroup --vault-name $backupvault
주문형 백업 실행
백업을 트리거할 관련 백업 인스턴스를 가져오려면 az dataprotection backup-instance list-from-resourcegraph --
명령을 실행합니다.
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 backup-instance adhoc-backup --rule-name "BackupDaily" --ids /subscriptions/$subscriptionId/resourceGroups/$backupvaultresourcegroup/providers/Microsoft.DataProtection/backupVaults/$backupvault/backupInstances/$backupinstanceid
작업 추적
az dataprotection job
명령을 실행하는 백업 작업을 추적합니다. 모든 작업을 나열하고 특정 작업 세부 정보를 가져올 수 있습니다.
또한 Resource Graph를 사용하면 관련 작업을 가져오는 az dataprotection job list-from-resourcegraph
명령을 실행하여 모든 구독, 리소스 그룹 및 Backup 자격 증명 모음에서 모든 작업을 추적할 수 있습니다.
주문형 백업의 경우:
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation OnDemandBackup
예약된 백업의 경우:
az dataprotection job list-from-resourcegraph --datasource-type AzureKubernetesService --datasource-id /subscriptions/$subscriptionId/resourceGroups/$aksclusterresourcegroup/providers/Microsoft.ContainerService/managedClusters/$akscluster --operation ScheduledBackup
다음 단계
- Azure CLI, Azure PowerShell을 사용하여 Azure Kubernetes Service 클러스터 복원
- Azure Kubernetes Service 클러스터 백업 관리
- Azure Kubernetes Service 클러스터 백업 정보