共用方式為


快速入門:使用 Azure Resource Manager 設定 Azure Kubernetes Service (AKS) 叢集的備份

本快速入門說明如何使用 Azure Resource Manager 設定 Azure Kubernetes Service (AKS) 叢集的備份。

AKS 的 Azure 備份 是雲端原生、企業就緒、以應用程式為中心的備份服務,可讓您快速設定 AKS 叢集的備份。 Azure 備份 可讓您使用多個選項來備份 AKS 叢集,例如 Azure 入口網站、PowerShell、CLI、Azure Resource Manager、Bicep 等等。 本快速入門說明如何使用 Azure Resource Manager 範本和 Azure PowerShell 來備份 AKS 叢集。 如需開發 ARM 範本的詳細資訊,請參閱 Azure Resource Manager 檔

Azure Resource Manager 範本是一個 JavaScript 物件標記法 (JSON) 檔案,會定義專案的基礎結構和設定。 範本使用宣告式語法。 您可以描述預期的部署,而不需要撰寫程式設計命令順序來建立部署。

必要條件

若要設定您的環境以進行 Bicep 開發,請參閱安裝 Bicep 工具 (部分機器翻譯)。

注意

如文章所詳述,安裝最新 Azure PowerShell 模組和 Bicep CLI。

檢閱範本

此範本可讓您設定 AKS 叢集的備份。 在此範本中,我們會使用 AKS 叢集的備份原則建立備份保存庫,其排程為四小時和七天的保留期間。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "resourceGroupName": { "type": "string" },
    "resourceGroupLocation": { "type": "string" },
    "backupResourceGroupName": { "type": "string" },
    "backupResourceGroupLocation": { "type": "string" },
    "aksClusterName": { "type": "string" },
    "dnsPrefix": { "type": "string" },
    "nodeCount": { "type": "int" },
    "backupVaultName": { "type": "string" },
    "datastoreType": { "type": "string" },
    "redundancy": { "type": "string" },
    "backupPolicyName": { "type": "string" },
    "backupExtensionName": { "type": "string" },
    "backupExtensionType": { "type": "string" },
    "storageAccountName": { "type": "string" }
  },
  "variables": {
    "backupContainerName": "tfbackup"
  },
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "location": "[parameters('resourceGroupLocation')]",
      "name": "[parameters('resourceGroupName')]"
    },
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "location": "[parameters('backupResourceGroupLocation')]",
      "name": "[parameters('backupResourceGroupName')]"
    },
    {
      "type": "Microsoft.ContainerService/managedClusters",
      "apiVersion": "2023-05-01",
      "location": "[parameters('resourceGroupLocation')]",
      "name": "[parameters('aksClusterName')]",
      "properties": {
        "dnsPrefix": "[parameters('dnsPrefix')]",
        "agentPoolProfiles": [
          {
            "name": "agentpool",
            "count": "[parameters('nodeCount')]",
            "vmSize": "Standard_D2_v2",
            "type": "VirtualMachineScaleSets",
            "mode": "System"
          }
        ],
        "identity": {
          "type": "SystemAssigned"
        },
        "networkProfile": {
          "networkPlugin": "kubenet",
          "loadBalancerSku": "standard"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Resources/resourceGroups', parameters('resourceGroupName'))]",
        "[resourceId('Microsoft.Resources/resourceGroups', parameters('backupResourceGroupName'))]"
      ]
    },
    {
      "type": "Microsoft.DataProtection/backupVaults",
      "apiVersion": "2023-01-01",
      "location": "[parameters('resourceGroupLocation')]",
      "name": "[parameters('backupVaultName')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "dataStoreType": "[parameters('datastoreType')]",
        "redundancy": "[parameters('redundancy')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))]"
      ]
    },
    {
      "type": "Microsoft.DataProtection/backupVaults/backupPolicies",
      "apiVersion": "2023-01-01",
      "name": "[concat(parameters('backupVaultName'), '/', parameters('backupPolicyName'))]",
      "properties": {
        "backupRepeatingTimeIntervals": ["R/2024-04-14T06:33:16+00:00/PT4H"],

        "defaultRetentionRule": {
          "lifeCycle": {
            "duration": "P7D",
            "dataStoreType": "OperationalStore"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.DataProtection/backupVaults', parameters('backupVaultName'))]"
      ]
    },
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2022-05-01",
      "location": "[parameters('backupResourceGroupLocation')]",
      "name": "[parameters('storageAccountName')]",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "dependsOn": [
        "[resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))]"
      ]
    },
    {
      "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
      "apiVersion": "2021-04-01",
      "name": "[concat(parameters('storageAccountName'), '/default/', variables('backupContainerName'))]",
      "properties": {
        "publicAccess": "None"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
      ]
    },
    {
      "type": "Microsoft.KubernetesConfiguration/extensions",
      "apiVersion": "2023-05-01",
      "name": "[concat(parameters('aksClusterName'), '/', parameters('backupExtensionName'))]",
      "properties": {
        "extensionType": "[parameters('backupExtensionType')]",
        "configurationSettings": {
          "configuration.backupStorageLocation.bucket": "[variables('backupContainerName')]",
          "configuration.backupStorageLocation.config.storageAccount": "[parameters('storageAccountName')]",
          "configuration.backupStorageLocation.config.resourceGroup": "[parameters('backupResourceGroupName')]",
          "configuration.backupStorageLocation.config.subscriptionId": "[subscription().subscriptionId]",
          "credentials.tenantId": "[subscription().tenantId]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', parameters('storageAccountName'), 'default', variables('backupContainerName'))]"
      ]
    }
  ],
  "outputs": {
    "aksClusterId": {
      "type": "string",
      "value": "[resourceId('Microsoft.ContainerService/managedClusters', parameters('aksClusterName'))]"
    },
    "backupVaultId": {
      "type": "string",
      "value": "[resourceId('Microsoft.DataProtection/backupVaults', parameters('backupVaultName'))]"
    }
  }
}

部署範本

若要部署範本,請將範本儲存在 GitHub 存放庫中,然後將下列 PowerShell 腳本貼到殼層視窗中。

$projectName = Read-Host -Prompt "Enter a project name (limited to eight characters) that is used to generate Azure resource names"
$location = Read-Host -Prompt "Enter the location (for example, centralus)"

$resourceGroupName = "${projectName}rg"
$templateUri = "https//templateuri"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -projectName 

下一步