快速入门:使用 Azure CLI 为 Azure Kubernetes 服务 (AKS) 群集配置保管备份

本快速入门介绍如何使用 Azure CLI 为 Azure Kubernetes 服务 (AKS) 群集配置保管备份。

适用于 AKS 的 Azure 备份是一种云原生的、企业就绪的、以应用程序为中心的备份服务,可让你快速配置 AKS 群集的备份。

开始之前

在为 AKS 群集配置保管备份之前,确保满足以下先决条件:

创建备份保管库

若要创建备份保管库,请运行以下命令:

az dataprotection backup-vault create --resource-group $backupvaultresourcegroup --vault-name $backupvault --location $region --type SystemAssigned --storage-settings datastore-type="VaultStore" type="GloballyRedundant"

新创建的保管库的存储设置已设置为“全局冗余”,因此存储在保管库层中的备份将在 Azure 配对区域中可用。 保管库创建完成后,创建备份策略来保护 AKS 群集。

创建备份策略

使用命令 az dataprotection backup-policy get-default-policy-template 检索策略模板。

az dataprotection backup-policy get-default-policy-template --datasource-type AzureKubernetesService > akspolicy.json

更新备份策略的默认模板,并添加一条保留规则,将每天第一次成功的备份在保管库层中保留 30 天


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 -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json

准备 AKS 群集以进行备份

保管库和策略创建完成后,需要执行以下先决条件,以准备 AKS 群集进行备份:

  1. 创建存储帐户和 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
    
  2. 安装备份扩展

    必须在 AKS 群集中安装备份扩展才能执行任何备份和还原操作。 备份扩展会在群集中创建命名空间 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 群集的节点池资源组中创建用户标识。 要使扩展能够访问存储帐户,需要为此标识提供“存储 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
    
  3. 启用受信任的访问

    要让备份保管库与 AKS 群集连接,必须启用受信任的访问,因为这样会使得备份保管库直接看到 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
    

为 AKS 群集配置保管备份

使用已创建的备份保管库和备份策略以及处于随时可备份状态的 AKS 群集,现在可以开始备份 AKS 群集。

准备请求

备份的配置分两个步骤执行:

  1. 准备备份配置,以定义要使用 az dataprotection backup-instance initialize-backupconfig 命令备份的群集资源。 该命令会生成一个 JSON,可以更新该 JSON,以便根据需要为 AKS 群集定义备份配置。

    az dataprotection backup-instance initialize-backupconfig --datasource-type AzureKubernetesService > aksbackupconfig.json
    
  2. 通过 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 群集配置备份。

分配所需的权限并进行验证

准备好请求后,首先需要通过运行以下命令来验证是否将所需角色分配给所涉及的资源:

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

后续步骤