PowerShell を使用して Azure Kubernetes Service を復元する
この記事では、Azure PowerShell を使用して、Azure Backup で作成された復元ポイントから Azure Kubernetes クラスターを復元する方法について説明します。
Azure Backup では、クラスターにインストールする必要があるバックアップ拡張機能を使用して、AKS クラスター (クラスター リソースとクラスターにアタッチされている永続ボリューム) をバックアップできるようになりました。 バックアップ コンテナーは、このバックアップ拡張機能を介してクラスターと通信し、バックアップ操作と復元操作を実行します。
"元の場所への復旧 (OLR)" (バックアップされた AKS クラスターでの復元) と "代替場所への復旧 (ALR)" (別の AKS クラスターでの復元) の両方を実行できます。 項目レベルの復旧 (ILR) バックアップから、復元する項目を選ぶこともできます。
注意
復元操作を開始する前に、ターゲット クラスターにバックアップ拡張機能がインストールされ、Backup ボールトに対して信頼されたアクセスが有効になっている必要があります。 詳細情報。
コマンドで使われる各リソースに関連する必要な詳細で変数を初期化します。
バックアップ コンテナーのサブスクリプション ID
$vaultSubId = "xxxxxxxx-xxxx-xxxx-xxxx"
バックアップ コンテナーが属しているリソース グループ
$vaultRgName = "testBkpVaultRG"
バックアップ コンテナーの名前
$vaultName = "TestBkpVault"
バックアップ コンテナーが属しているリージョン
$restoreLocation = "vaultRegion" #example eastus
代替 AKS クラスターへの復元が実行される場合、ターゲット AKS クラスターの ID
$targetAKSClusterId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.ContainerService/managedClusters/PSAKSCluster2"
開始する前に
AKS バックアップを使用すると、(バックアップされた) 元の AKS クラスターおよび代替 AKS クラスターに復元できます。 AKS バックアップでは、完全復元と項目レベルの復元を実行できます。 復元構成を使い、復元されるクラスター リソースに基づいてパラメーターを定義できます。
ターゲット AKS クラスターにバックアップ拡張機能をインストールする必要があります。 また、Backup コンテナーと AKS クラスターの間で信頼されたアクセスを有効にする必要があります。
制限事項およびサポートされているシナリオの詳細については、サポート マトリックスを参照してください。
AKS クラスターに復元する
適切な回復ポイントのフェッチ
Get-AzDataProtectionBackupInstance
コマンドレットを使用してすべてのインスタンスをフェッチし、該当するインスタンスを識別します。
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName $vaultRgName -VaultName $vaultName
Az.Resourcegraph
および Search-AzDataProtectionBackupInstanceInAzGraph
コマンドレットを使用し、複数のコンテナーとサブスクリプション内のインスタンスにまたがって検索することもできます。
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -Subscription $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService -ProtectionStatus ProtectionConfigured
インスタンスが特定されたら、関連する復元ポイントをフェッチします。 おそらく、上記のコマンドの出力配列から、3 番目のバックアップ インスタンスが復元されます。
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName $vaultRgName -VaultName $vaultName -BackupInstanceName $AllInstances[2].BackupInstanceName
復元要求を準備する
New-AzDataProtectionRestoreConfigurationClientObject
コマンドレットを使用して復元構成を準備し、ターゲット AKS クラスターに復元する項目を定義します。
$aksRestoreCriteria = New-AzDataProtectionRestoreConfigurationClientObject -DatasourceType AzureKubernetesService -PersistentVolumeRestoreMode RestoreWithVolumeData -IncludeClusterScopeResource $true -NamespaceMapping @{"sourceNamespace"="targetNamespace"}
関連するすべての詳細を含む復元要求を準備するには、Initialize-AzDataProtectionRestoreRequest
コマンドレットを使用します。
バックアップされた元の AKS クラスターへの復元を実行する場合は、次の形式のコマンドレットを使います
$aksRestoreRequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureKubernetesService -SourceDataStore OperationalStore -RestoreLocation $restoreLocation -RestoreType OriginalLocation -RecoveryPoint $rp[0].Property.RecoveryPointId -RestoreConfiguration $aksRestoreCriteria -BackupInstance $AllInstances[2]
代わりの AKS クラスターへの復元を実行する場合は、次の形式のコマンドレットを使います
$aksRestoreRequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureKubernetesService -SourceDataStore OperationalStore -RestoreLocation $restoreLocation -RestoreType AlternateLocation -TargetResourceId $targetAKSClusterId -RecoveryPoint $rp[0].Property.RecoveryPointId -RestoreConfiguration $aksRestoreCriteria -BackupInstance $AllInstances[2]
復元のトリガー
復元操作をトリガーする前に、先に作成した復元要求を検証します。
$validateRestore = Test-AzDataProtectionBackupInstanceRestore -SubscriptionId $vaultSubId -ResourceGroupName $vaultRgName -VaultName $vaultName -RestoreRequest $aksRestoreRequest -Name $AllInstances[2].BackupInstanceName
注意
復元操作中、Backup ボールトと AKS クラスターには、復元を実行するために特定のロールが割り当てられている必要があります。
- "ターゲット AKS" クラスターには、"スナップショット リソース グループ" に対する "共同作成者" ロールが必要です。
- バックアップ拡張機能にアタッチされている "ユーザー ID" には、バックアップが格納されている "ストレージ アカウント" に対する "ストレージ アカウント共同作成者" ロールが必要です。
- "Backup ボールト" には、"ターゲット AKS クラスター" と "スナップショット リソース グループ" に対する "閲覧者" ロールが必要です。
次に、Start-AzDataProtectionBackupInstanceRestore
コマンドレットを使って、前に準備した要求で復元操作をトリガーします。
$restoreJob = Start-AzDataProtectionBackupInstanceRestore -SubscriptionId $vaultSubId -ResourceGroupName $vaultRgName -VaultName $vaultName -BackupInstanceName $AllInstances[2].BackupInstanceName -Parameter $aksRestoreRequest
ジョブの追跡
Get-AzDataProtectionJob
コマンドレットを使用して、すべてのジョブを追跡します。 すべてのジョブを一覧表示し、特定のジョブの詳細を取得できます。 Az.ResourceGraph
を使用して、すべてのバックアップ コンテナーにまたがるすべてのジョブを追跡することもできます。
関連するジョブを取得するには、Search-AzDataProtectionJobInAzGraph
コマンドレットを使用します。ジョブは任意の Backup ボールトにまたがっている場合があります。
$job = Search-AzDataProtectionJobInAzGraph -Subscription -SubscriptionId $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService -Operation Restore