PowerShell を使用して Azure Kubernetes Service を復元する
この記事では、Azure PowerShell を使用して、Azure Backup で作成された復元ポイントから Azure Kubernetes クラスターを復元する方法について説明します。
Azure Backup は、バックアップ拡張機能を使用して、クラスター リソースやアタッチされた永続ボリュームなどの AKS クラスターのバックアップをサポートしています。 この拡張機能はクラスターにインストールする必要があります。これにより、Backup ボールトとの通信が可能になり、バックアップ操作と復元操作を実行できます。
同じ AKS クラスターで "元の場所への復旧 (OLR)" を実行するか、別の AKS クラスターで "代替場所への復旧 (ALR)" を実行できます。 項目レベルの回復 (ILR) を使用すると、バックアップから復元する特定の項目を選択できます。
Note
復元操作を開始する前に、ターゲット クラスターにバックアップ拡張機能がインストールされ、Backup ボールトに対して信頼されたアクセスが有効になっていることを確認します。 詳細情報。
前提条件
AKS クラスターの復元を開始する前に、次の前提条件を満たしていることを必ず確認してください。
AKS バックアップを使用すると、(バックアップされた) 元の AKS クラスターおよび代替 AKS クラスターに復元できます。 AKS バックアップでは、完全復元と項目レベルの復元を実行できます。 復元構成を使い、復元用のクラスター リソースに基づいてパラメーターを定義できます。
ターゲット AKS クラスターにバックアップ拡張機能をインストールする必要があります。 また、Backup コンテナーと AKS クラスターの間で信頼されたアクセスを有効にする必要があります。
制限事項およびサポートされているシナリオの詳細については、サポート マトリックスを参照してください。
リソース コマンドの変数を初期化する
ここでは、コマンドで使用する各リソースに必要な詳細を指定します。
バックアップ コンテナーのサブスクリプション 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 クラスターに復元する
適切な回復ポイントのフェッチ
関連する復旧ポイントをフェッチするには、次のコマンドレットを実行します。
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
Note
復元操作中、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 を使用して、すべての Backup ボールトを対象にすべてのジョブを追跡します。
任意の Backup ボールトにまたがっている関連するジョブを取得するには、Search-AzDataProtectionJobInAzGraph
コマンドレットを使用します。
$job = Search-AzDataProtectionJobInAzGraph -Subscription -SubscriptionId $vaultSubId -ResourceGroup $vaultRgName -Vault $vaultName -DatasourceType AzureKubernetesService -Operation Restore