Udostępnij przez


Szybki start: konfigurowanie kopii zapasowej magazynu dla klastra usługi Azure Kubernetes Service (AKS) przy użyciu usługi Azure Bicep

W tym przewodniku Szybki start opisano sposób konfigurowania kopii zapasowej magazynu dla klastra usługi Azure Kubernetes Service (AKS) przy użyciu usługi Azure Bicep.

Usługa Azure Backup for AKS to natywna dla chmury, gotowa do użycia w przedsiębiorstwie usługa tworzenia kopii zapasowych skoncentrowana na aplikacjach, która umożliwia szybkie konfigurowanie kopii zapasowych dla klastrów usługi AKS.Usługa Azure Backup umożliwia tworzenie kopii zapasowych klastrów usługi AKS przy użyciu wielu opcji , takich jak witryna Azure Portal, program PowerShell, interfejs wiersza polecenia, usługa Azure Resource Manager, Bicep itd. Ten Szybki start opisuje, jak utworzyć kopię zapasową klastrów AKS za pomocą pliku Bicep i programu Azure PowerShell. Aby uzyskać więcej informacji na temat tworzenia plików Bicep, zobacz dokumentację aplikacji Bicep.

Bicep to język deklaratywnego wdrażania zasobów platformy Azure. Możesz użyć Bicep zamiast JSON do tworzenia szablonów usługi Azure Resource Manager (szablonów usługi ARM). Składnia Bicep zmniejsza złożoność i poprawia środowisko programistyczne. Bicep to przezroczysta abstrakcja w formacie JSON szablonu usługi ARM, która zapewnia wszystkie możliwości szablonu JSON. Podczas wdrażania interfejs wiersza polecenia Bicep konwertuje plik Bicep na kod JSON szablonu usługi ARM. Plik Bicep zawiera zasoby i właściwości zasobów platformy Azure bez konieczności pisania sekwencji poleceń programowania w celu utworzenia zasobów.

Typy zasobów, wersje interfejsu API i właściwości prawidłowe w szablonie usługi ARM są również prawidłowe w pliku Bicep.

Wymagania wstępne

Aby skonfigurować środowisko na potrzeby programowania aplikacji Bicep, zobacz Instalowanie narzędzi Bicep.

Uwaga

Zainstaluj najnowszy moduł programu Azure PowerShell i interfejs wiersza polecenia Bicep zgodnie z opisem w artykule.

Przegląd szablonu

Ten szablon umożliwia skonfigurowanie kopii zapasowej klastra usługi AKS. W tym szablonie utworzymy magazyn kopii zapasowych z zasadami tworzenia kopii zapasowych dla klastra usługi AKS z czterogodzinnym harmonogramem i siedmiodniowym czasem przechowywania.

@description('Location for the resource group')
param resourceGroupLocation string
@description('Name of the resource group for AKS and Backup Vault')
param resourceGroupName string
@description('Name of the resource group for storage account and snapshots')
param backupResourceGroupName string
@description('Location for the backup resource group')
param backupResourceGroupLocation string
@description('AKS Cluster name')
param aksClusterName string
@description('DNS prefix for AKS')
param dnsPrefix string
@description('Node count for the AKS Cluster')
param nodeCount int
@description('Name of the Backup Vault')
param backupVaultName string
@description('Datastore type for the Backup Vault')
param datastoreType string
@description('Redundancy type for the Backup Vault')
param redundancy string
@description('Backup policy name')
param backupPolicyName string
@description('Name of the Backup Extension')
param backupExtensionName string
@description('Type of Backup Extension')
param backupExtensionType string
@description('Name of the Storage Account')
param storageAccountName string

var backupContainerName = 'tfbackup'

resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
  location: resourceGroupLocation
  name: resourceGroupName
}

resource backupRg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
  location: backupResourceGroupLocation
  name: backupResourceGroupName
}

resource aksCluster 'Microsoft.ContainerService/managedClusters@2023-05-01' = {
  location: resourceGroupLocation
  name: aksClusterName
  properties: {
    dnsPrefix: dnsPrefix
    agentPoolProfiles: [
      {
        name: 'agentpool'
        count: nodeCount
        vmSize: 'Standard_D2_v2'
        type: 'VirtualMachineScaleSets'
        mode: 'System'
      }
    ]
    identity: {
      type: 'SystemAssigned'
    }
    networkProfile: {
      networkPlugin: 'kubenet'
      loadBalancerSku: 'standard'
    }
  }
  dependsOn: [
    rg
    backupRg
  ]
}

resource backupVault 'Microsoft.DataProtection/backupVaults@2023-01-01' = {
  location: resourceGroupLocation
  name: backupVaultName
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    dataStoreType: datastoreType
    redundancy: redundancy
  }
  dependsOn: [
    aksCluster
  ]
}

resource backupPolicy 'Microsoft.DataProtection/backupVaults/backupPolicies@2023-01-01' = {
  name: '${backupVaultName}/${backupPolicyName}'
  properties: {
    backupRepeatingTimeIntervals: ['R/2024-04-14T06:33:16+00:00/PT4H']
    defaultRetentionRule: {
      lifeCycle: {
        duration: 'P7D'
        dataStoreType: 'OperationalStore'
      }
    }
  }
  dependsOn: [
    backupVault
  ]
}

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-05-01' = {
  location: backupResourceGroupLocation
  name: storageAccountName
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  dependsOn: [
    aksCluster
  ]
}

resource backupContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2021-04-01' = {
  name: '${storageAccount.name}/default/${backupContainerName}'
  properties: {
    publicAccess: 'None'
  }
  dependsOn: [
    storageAccount
  ]
}

resource backupExtension 'Microsoft.KubernetesConfiguration/extensions@2023-05-01' = {
  name: '${aksClusterName}/${backupExtensionName}'
  properties: {
    extensionType: backupExtensionType
    configurationSettings: {
      'configuration.backupStorageLocation.bucket': backupContainerName
      'configuration.backupStorageLocation.config.storageAccount': storageAccountName
      'configuration.backupStorageLocation.config.resourceGroup': backupResourceGroupName
      'configuration.backupStorageLocation.config.subscriptionId': subscription().subscriptionId
      'credentials.tenantId': subscription().tenantId
    }
  }
  dependsOn: [
    backupContainer
  ]
}

output aksClusterId string = aksCluster.id
output backupVaultId string = backupVault.id

Wdrażanie szablonu

Aby wdrożyć ten szablon, zapisz go w usłudze GitHub lub preferowanej lokalizacji, a następnie wklej następujący skrypt programu PowerShell w oknie powłoki. Aby wkleić kod, kliknij prawym przyciskiem myszy okno powłoki, a następnie wybierz polecenie Wklej.

$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 = "templateURI"

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

Następne kroki