次の方法で共有


クイックスタート: Azure Resource Manager を使用して Azure Kubernetes Service (AKS) クラスターのバックアップを構成する

このクイックスタートでは、Azure Resource Manager を使用して Azure Kubernetes Service (AKS) クラスターのバックアップを構成する方法について説明します。

Azure Backup for AKS は、AKS クラスターのバックアップをすばやく構成できる、クラウドネイティブでエンタープライズ対応のアプリケーション中心のバックアップ サービスです。Azure Backup では、Azure portal、PowerShell、CLI、Azure Resource Manager、Bicep などの複数のオプションを使用して、AKS クラスターをバックアップできます。 このクイックスタートでは、Azure Resource Manager テンプレートと Azure PowerShell を使用して AKS クラスターをバックアップする方法について説明します。 ARM テンプレートのデプロイの詳細については、Azure Resource Manager のドキュメントを参照してください

Azure Resource Manager テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 デプロイを作成するための一連のプログラミング コマンドを記述しなくても、意図したデプロイを記述できます。

前提条件

Bicep の開発環境を設定するには、「Bicep ツールをインストールする」を参照してください。

注記

記事で詳細に説明されているように、最新の Azure PowerShell モジュールと Bicep CLI をインストールします。

テンプレートを確認する

このテンプレートを使用すると、AKS クラスターのバックアップを構成できます。 このテンプレートでは、AKS クラスターのバックアップ ポリシーを含むバックアップ コンテナーを作成し、"4 時間ごと" のスケジュールと、"7 日間" のリテンション期間を設定します。

{
  "$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 

次のステップ