このページでは、Google Distributed Cloud(GDC)エアギャップで復元プランを作成、編集、削除する方法について説明します。
復元プランは、対応するバックアップ行に事前に構成された復元シナリオです。復元プランでは、これらの構成を使用する権限をバックアップ作成者のロールを持つユーザーに割り当てることができます。
バックアップ作成者は、インシデントの発生時にバックアップを迅速かつ個別に復元できます。たとえば、デプロイされたアプリケーションのソフトウェア アップデートによって永続データが破損し、アプリケーションの名前空間が無効な状態になる場合があります。この場合、復元が必要です。
復元中に、必要に応じて一連の置換ルールを適用できます。これらのルールが一連のリソースに一致すると、これらのリソースの属性の現在の値が新しい値に置き換えられます。たとえば、置換ルールを使用すると、復元中にバックアップされたリソースの Namespace を変更して、ワークロードをある Namespace から別の Namespace に移行できます。
始める前に
復元プランを作成するには、次のものが必要です。
必要な ID とアクセスロール:
- ユーザー クラスタ バックアップ管理者: ユーザー クラスタのバックアップ プランや復元プランなどのバックアップ リソースを管理します。組織の IAM 管理者に、ユーザー クラスタ バックアップ管理者(
user-cluster-backup-admin
)ロールを付与するよう依頼します。詳細については、ロールの定義をご覧ください。 - アプリケーション オペレーターの場合は、ユーザー クラスタ バックアップ管理者の権限を持つ管理者に復元プランの作成を依頼してください。
- ユーザー クラスタ バックアップ管理者: ユーザー クラスタのバックアップ プランや復元プランなどのバックアップ リソースを管理します。組織の IAM 管理者に、ユーザー クラスタ バックアップ管理者(
復元プランの作成
GDC コンソールまたは API を使用して復元プランを作成します。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [復元プランを作成] をクリックします。
- [復元プランの基本] セクションで、次の操作を行い、[次へ] をクリックします。
- [復元プラン名] に、復元プランの名前を入力します。
- (省略可)[復元プランの説明] に、復元プランの説明を入力します。
- [ソースクラスタ] リストで、復元プランのソースクラスタを選択します。
- [プロジェクト] リストで、復元プランのプロジェクトを選択します。
- ソースクラスタに接続されているプロジェクトを選択します。
- [バックアップ プラン] フィールドで、復元するバックアップに対応する既存クラスタのバックアップ プランを選択します。
- [ターゲット クラスタ] フィールドで、バックアップを復元するターゲット クラスタを選択します。
- [名前空間付きリソースの選択] セクションで、次の操作を行い、[次へ] をクリックします。
- 復元する名前空間を選択します。
- バックアップ内のすべての名前空間付きリソースを復元するには、[すべての名前空間付きリソース] をクリックします。
- [選択した名前空間付きリソース] をクリックして、バックアップの復元に使用する名前空間を指定します。
- [クラスタの名前空間を編集]、[クラスタの名前空間を追加] の順にクリックして、名前空間を入力します。
- 名前空間とアプリケーション名を指定してリソースを追加するには、[選択した保護対象アプリケーション] をクリックします。
- 競合の処理方法を選択します。
- バックアップからの復元対象の名前空間がターゲット クラスタにすでに存在する場合、[競合があった場合は失敗(破壊的でない)] をクリックして復元に失敗します。
- バックアップの復元対象となる名前空間がターゲット クラスタにすでに存在する場合、[ロールバック(破壊的)] をクリックして、新しい名前空間を復元する前に既存の名前空間を削除します。
- ボリューム データの復元方法を選択します。
- [新しいボリュームをプロビジョニングし、バックアップからボリューム データを復元する] をクリックして、バックアップから新しい永続ディスクにボリューム データを復元します。
- [ボリューム データを復元しない] をクリックして、新しい永続ボリュームをプロビジョニングします。ターゲット クラスタに、
PersistentVolumeClaim
要件を満たすバインドされていない永続ボリュームが含まれている場合、クラスタはボリュームにバインドされます。 - ボリュームのバックアップ データを復元しない場合は、[データを含む既存のボリュームを再利用する] をクリックします。
PersistentVolumeClaims
は、既存の永続ディスクを参照するボリュームにバインドされます。
- 復元する名前空間を選択します。
- 省略可: [クラスタ スコープのリソースを選択する] セクションで、次の操作を行い、[次へ] をクリックします。
- [クラスタ スコープのリソースを復元しない] をクリックして、リソースの既存のバージョンを変更しないままにします。
- [GroupKind でクラスタ スコープのリソースを復元] をクリックして、これらのリソースを復元します。
- [GroupKinds を編集] をクリックして、クラスタ スコープのリソースを追加します。これらのタイプのリソースに一致する API グループとオブジェクトの種類を入力します。
- [既存のリソースを保持する] をクリックして、ターゲット クラスタにリソースが存在しない場合はリソースを作成します。
- [ターゲット クラスタ内のリソースを上書きする] をクリックして、リソースがすでにターゲット クラスタに存在する場合削除し、バックアップからコピーを復元します。
- 省略可: [置換ルールを追加する] セクションで、次の手順に沿って操作し、[次へ] をクリックします。
- [新しいルールを追加] をクリックします。
- [クラスタの Namespace] ボックスに、それらの Namespace 内のリソースと一致する Namespace のリストを入力します。
- GroupKind を追加するには、[GroupKind を追加] をクリックし、API グループとオブジェクトの種類を入力して、これらのタイプのリソースを照合します。
- [JSON path] フィールドに、置換が適用される照合対象リソース内のフィールドを識別する JSON パスを入力します。
- [元の値のパターン] フィールドに、新しい値と比較する元のパターンを入力します。
- [新しい値] フィールドに、一致した属性の現在の値を置き換える新しい値を入力します。
- [保存] をクリックします。
- [作成] をクリックします。
API
既存の ClusterBackupPlan
からの復元を計画する ClusterRestorePlan
カスタム リソースを作成します。ClusterRestorePlan
は、バックアップ作成者が復元を許可されているリソースと Namespace の正確なセットを割り当てます。ClusterRestorePlan
の例を次に示します。
apiVersion: backup.gdc.goog/v1
kind: ClusterRestorePlan
metadata:
name: restoreplan-sample
namespace: PROJECT_NAME
spec:
targetCluster:
targetClusterType: UserCluster
targetClusterName:
kind: "Cluster"
name: "user-vm-1"
description: "restores test clusters"
clusterBackupPlanName: "backupplan-sample"
clusterRestoreConfig:
volumeDataRestorePolicy: RestoreVolumeDataFromBackup
clusterResourceConflictPolicy: UseBackupVersion
namespacedResourceRestoreMode: DeleteAndRestore
namespacedResourceRestoreScope:
selectedNamespaces:
namespaces: ["nginx-2"]
clusterBackupRepositoryRef: "backup-repository"
substitutionRules:
- newValue: "newhippo"
originValuePattern: game-config-2
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- nginx-2
- newValue: "hippo"
originValuePattern: game-config
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- nginx-2
PROJECT_NAME
は、GDC プロジェクトの名前に置き換えます。
この例では次の値を使用します。
値 |
属性 |
説明 |
---|---|---|
clusterBackupPlanName |
復元する ClusterBackupPlan の名前。ClusterBackupPlan は ClusterRestorePlan と同じ Namespace に存在している必要があります。 |
|
targetClusterName |
このプランが関連付けられているプロジェクト内のソースクラスタの名前。 | |
description |
ClusterRestorePlan の目的に関するユーザー指定の説明。 |
|
clusterRestoreConfig |
復元プロセスの構成。 | |
clusterBackupRepositoryRef |
Restore リソースを保存するリポジトリを指定します。このリポジトリは、バックアップの元となるリポジトリとは異なる場合があります。リポジトリは、クラスタ内の ReadWrite リポジトリである必要があります。 |
|
clusterResourceConflictPolicy |
クラスタ リソースの競合(リソースがクラスタにすでに存在する場合など)を処理する動作を指定します。次のいずれかを指定します。
|
|
volumeDataRestorePolicy |
次のいずれかを指定します。
|
|
namespacedResourceRestoreMode |
復元する Namespace 付きリソースのセットがターゲット クラスタにすでに存在する場合の処理を行います。次のいずれかを指定します。
|
|
namespacedResourceRestoreScope |
復元が許可される Namespaces または ProtectedApplications を指定します。
|
|
substitutionRules |
復元中にバックアップされた Kubernetes リソースの値を置き換えるルール。リストが空の場合、置換は行われません。置換ルールは、定義された順序で順番に適用されます。ルールによる変更が後続のルールの照合ロジックに影響する可能性があるため、この順序は重要です。 |
ClusterRestorePlan
が作成されると、バックアップ作成者のロールを持つユーザーはバックアップを手動で復元できます。
復元プランを表示する
GDC コンソールを使用して復元プランを表示します。
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [プロジェクトを選択] をクリックして、ロールに応じて組織またはプロジェクトを選択します。
- ユーザー クラスタ バックアップ管理者: 組織を選択して組織内のすべての復元プランを表示するか、プロジェクトを選択してプロジェクト内のすべての復元プランを表示します。
- バックアップ作成者: プロジェクトを選択して、プロジェクト内のすべての復元プランを表示します。
- [復元プラン] タブをクリックします。
- リストで復元プランをクリックして、その詳細を表示します。
復元プランを編集する
編集する復元プランに関連付けられているバックアップ リポジトリの [リンクされたクラスタ(読み取り専用)] フィールドに値が設定されている場合、復元プランは 2 回作成されます。復元プランは、読み取り / 書き込みクラスタと読み取り専用クラスタの両方に伝播されます。
読み取り / 書き込みクラスタと読み取り専用クラスタの両方が設定されているバックアップ リポジトリが所有する復元プランを編集する場合は、TARGET CLUSTER
が読み取り / 書き込みクラスタに設定されている復元プランを編集する必要があります。
GDC コンソールを使用して復元プランを編集します。
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [プロジェクトを選択] をクリックして、ロールに応じて組織またはプロジェクトを選択します。
- ユーザー クラスタ バックアップ管理者: 組織を選択して組織内のすべての復元プランを表示するか、プロジェクトを選択してプロジェクト内のすべての復元プランを表示します。
- バックアップ作成者: プロジェクトを選択して、プロジェクト内のすべての復元プランを表示します。
- [復元プラン] タブをクリックします。
- 編集する復元プランの名前をクリックします。
- [プランの構成] タブをクリックして、変更可能なフィールドを表示します。
[名前空間付きリソース] の横にある edit 編集アイコンをクリックして、そのリソースを編集します。
[名前空間付きリソースの選択] セクションで、復元するバックアップの名前空間付きリソースを選択します。
- バックアップ内のすべての名前空間付きリソースを復元するには、[すべての名前空間付きリソース] を選択します。
[選択した名前空間付きリソース] を選択して、バックアップ内の選択した名前空間からリソースを復元します。
- [クラスタ名前空間の編集] を選択して、クラスタ名前空間を選択します。
- [クラスタ Namespace 1] フィールドに、Namespace の名前を入力します。
- [保存] をクリックします。
[選択した保護対象アプリケーション] を選択して、バックアップ内の選択した保護対象アプリケーションからリソースを復元します。
- [保護対象アプリケーションを編集] を選択して、Namespace と保護対象アプリケーションを選択します。
- [Namespace 1] フィールドに、Namespace の名前を入力します。
- [保護されたアプリケーション 1] フィールドに、保護されたアプリケーションの名前を入力します。
- [保存] をクリックします。
[クラスタ スコープのリソース] の横にある edit 編集アイコンをクリックして、そのリソースを編集します。
省略可: [クラスタ スコープのリソースを選択する] セクションで、API グループと
GroupKinds
を指定して復元するクラスタ スコープのリソースを選択し、競合をどのように解決するかを決定します。- [クラスタ スコープのリソースを復元しない] を選択して、復元プロセスからクラスタ スコープのリソースを削除します。
[GroupKind でクラスタ スコープのリソースを復元する] を選択して、指定した
GroupKind
でリソースを復元します。GroupKind
を指定するには、[GroupKind を編集] ボタンをクリックします。[GroupKind を追加] ボタンをクリックします。
GroupKind
の名前を入力します。[保存] をクリックします。
[競合処理] セクションで、リソースがすでにターゲット クラスタに存在する場合の処理を決定します。
- クラスタにリソースがまだ存在しない場合にリソースを作成するには、[既存のリソースを保持する] を選択します。
- [既存のリソースを上書きする] を選択して、検出された既存のリソースを削除し、このリソースを復元されたリソースに置き換えます。
[保存] ボタンをクリックして、変更を確定します。
[置換ルール] セクションで、[新しいルールを追加] ボタンをクリックして、新しい置換ルールを追加します。
- [クラスタの Namespace] フィールドに、この置換ルールを適用するクラスタ Namespace の名前を入力します。
- [GroupKind を追加] ボタンをクリックして、このルールを特定の
GroupKind
オブジェクトに適用します。 - [JSON パス] フィールドに、置換するリソース属性へのパスを JSON 形式で入力します。
- [元の値のパターン] フィールドに、属性の元の値と一致する正規表現を入力します。
- [新しい値] フィールドに、ターゲット フィールドに置き換える値を入力します。このフィールドが空白の場合、ターゲット フィールドはリソースから削除されます。
- [保存] ボタンをクリックして、新しい置換ルールの作成を完了します。
[置換ルール] セクションで、edit 編集アイコンをクリックして既存の置換ルールを編集します。
[置換ルール] セクションで、delete 削除アイコンをクリックして既存の置換ルールを削除します。
復元プランを削除する
RestorePlans
は、GDC コンソールから削除するか、Kubernetes API サーバーからリソースを直接削除することで削除できます。これにより、関連付けられた RestorePlan
アーティファクトがオブジェクト ストレージからクリーンアップされます。
コンソール
- GDC コンソールにログインします。
- ナビゲーション メニューで [Backup for Clusters] をクリックします。
- [プロジェクトを選択] をクリックして、ロールに応じて組織またはプロジェクトを選択します。
- ユーザー クラスタ バックアップ管理者: 組織を選択して組織内のすべての復元プランを表示するか、プロジェクトを選択してプロジェクト内のすべての復元プランを表示します。
- バックアップ作成者: プロジェクトを選択して、プロジェクト内のすべての復元プランを表示します。
- [復元プラン] タブをクリックします。
- 削除する復元プランの名前をクリックします。
- delete [削除] ボタンをクリックします。
- フィールドに復元プランの名前を入力します。
- [削除] ボタンをクリックして、この復元プランの削除を確定します。
API
復元プランのリソースを削除します。
kubectl delete clusterRestoreplan RESTORE_PLAN_NAME -n NAMESPACE
次のように置き換えます。
RESTORE_PLAN_NAME
: 復元プランの名前。NAMESPACE
: 復元プランを含む Namespace。