復元中にリソースの競合を処理する


このページでは、復元プランで名前空間付きリソースとクラスタ スコープ リソースの競合処理戦略を構成する方法について説明します。

クラスタに復元するときに、次のシナリオでリソースの競合が発生することがあります。

  • リソースがすでにプロビジョニングされている既存のクラスタに復元する。
  • Kubernetes リソースが GitOps やオペレーターなどのツールによって管理されている。

Backup for GKE には、復元プランで指定できるクラスタ スコープのリソースと名前空間付きリソースの競合処理を定義するためのさまざまなオプションが用意されています。

クラスタ スコープ リソースの競合処理の復元

クラスタ スコープのリソースの競合に対処するには、復元プランで次のオプションを構成します。

  • ターゲット クラスタにリソースを保持(破壊的でない): ターゲット クラスタに同じ名前のリソースが存在する場合は、そのままにします。
  • ターゲット クラスタ内のリソースを置き換える(破壊的): リソースがターゲット クラスタにすでに存在する場合は、削除してバックアップからコピーを復元します。

gcloud

クラスタ スコープのリソースの競合に対処するために、既存の復元プランを更新します。

gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --cluster-resource-conflict-policy=CLUSTER_RESOURCE_CONFLICT_POLICY

次のように置き換えます。

  • RESTORE_PLAN: 更新する復元プランの名前。
  • PROJECT_ID: Google Cloud プロジェクトの ID。
  • LOCATION: リソースのコンピューティング リージョンus-central1 など)。
  • CLUSTER_RESOURCE_CONFLICT_POLICY: 選択したクラスタ リソースの復元時の競合を処理する方法を定義します。以下のいずれかの方法を選択します。

    • use-existing-version: 復元中のリソースがすでにターゲット クラスタに存在する場合、Backup for GKE は既存のリソースを保持します。
    • use-backup-version: 復元中のリソースがすでにターゲット クラスタに存在する場合、Backup for GKE は既存のリソースをバックアップの新しいリソースに置き換えます。

コンソール

Google Cloud コンソールでクラスタ スコープ リソースの競合ポリシーを更新するには、次の操作を行います。

  1. Google Cloud コンソールで、Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. ナビゲーション メニューで [Backup for GKE] をクリックします。

  3. [復元プラン] タブをクリックします。

  4. 復元プランの名前をクリックします。

  5. [詳細] タブをクリックします。

  6. [構成の復元] セクションの [クラスタ スコープのリソース] セクションに移動し、[編集] をクリックします。

  7. [競合処理の定義] で、競合処理オプションを選択します。

  8. [保存] をクリックします。

名前空間付きリソースの競合処理の復元

復元プランで、次のオプションを構成して、名前空間付きリソースの競合を管理できます。名前空間付きリソースの競合処理は、次のレベルで指定できます。

  • 個々のリソース
  • Namespace と ProtectedApplication

個々のリソースの競合を処理するオプションは次のとおりです。

  • 統合をスキップ(非破壊的): 特定のリソースがすでに存在する場合、バックアップからのリソースの復元をスキップします。
  • 統合してボリュームを置換(破壊的): 特定のリソースがすでに存在する場合、そのリソースの復元はスキップしますが、ボリューム データ復元ポリシーに従って基盤となる永続ボリュームを置換します。統合してボリュームを置換することにより、データのみの復元が可能になります。
  • 統合して置換(破壊的): 特定のリソースがすでに存在する場合、ボリューム データ復元ポリシーに従って、そのリソースをバックアップから復元し、関連するボリューム データを置換します。

NamespaceProtectedApplication に属するすべてのリソースの競合を処理するオプションは次のとおりです。

  • 競合で失敗(破損なし): バックアップからの復元対象の Namespace たは ProtectedApplication がターゲット クラスタにすでに存在する場合、復元は失敗します。
  • ロールバック(破壊的): ターゲット クラスタに、クラスタへの復元対象となる Namespace または ProtectedApplication が含まれている場合、新しいリソースが復元される前に既存のリソース グループが削除されます。

gcloud

名前空間付きリソースの競合を処理するために、既存の復元プランを更新します。

gcloud beta container backup-restore restore-plans update RESTORE_PLAN \
    --project=PROJECT_ID \
    --location=LOCATION \
    --namespaced-resource-restore-mode=NAMESPACED_RESOURCE_RESTORE_MODE

次のように置き換えます。

  • RESTORE_PLAN: 更新する復元プランの名前。
  • PROJECT_ID: Google Cloud プロジェクトの ID。
  • LOCATION: リソースのコンピューティング リージョンus-central1 など)。
  • NAMESPACED_RESOURCE_RESTORE_MODE: 名前空間付きのリソースの復元時に発生する競合の処理方法を定義します。以下のいずれかの方法を選択します。

    • merge-skip-on-conflict: 競合する個々のリソースをスキップします。
    • merge-replace-volume-on-conflict: 競合する個々のリソースはスキップしますが、基盤となる永続ボリューム データは置き換えます。
    • merge-replace-on-conflict: 競合する個々のリソースと基盤となる永続ボリューム データを置き換えます。
    • fail-on-conflict: 競合する Namespace または ProtectedApplication で失敗します。
    • delete-and-restore: 競合する Namespace または ProtectedApplication をロールバックします。

コンソール

Google Cloud コンソールで名前空間付きリソースの競合ポリシーを更新するには、次の操作を行います。

  1. Google Cloud コンソールで、Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. ナビゲーション メニューで [Backup for GKE] をクリックします。

  3. [復元プラン] タブをクリックします。

  4. 復元プランの名前をクリックします。

  5. [詳細] タブをクリックします。

  6. [構成の復元] セクションの [名前空間付きリソース] セクションに移動し、[編集] をクリックします。

  7. [競合処理の定義] で、競合処理オプションを選択します。

  8. [保存] をクリックします。

次の表に、一般的なシナリオで推奨される競合処理戦略を示します。

シナリオ 名前空間付きリソースに推奨される競合処理を使用する クラスタ スコープのリソースに推奨される競合処理を使用する
まったく新しいクラスタに復元する 競合により失敗 ターゲット クラスタにリソースを保持
Namespace または ProtectedApplication 全体をロールバックする 削除して復元 該当なし
ボリュームのない GitOps 管理クラスタに復元する 統合をスキップ ターゲット クラスタにリソースを保持
GitOps で管理されているクラスタのデータのみを復元する 統合してボリュームを置換 ターゲット クラスタにリソースを保持
選択したワークロードとボリューム データをロールバックする 統合して置換 ターゲット クラスタ内のリソースを置き換える

次のステップ