きめ細かい復元を有効にする


このページでは、きめ細かい粒度で復元するリソースを選択する方法について説明します。

概要

きめ細かい復元機能を使用すると、バックアップからリソースのサブセットを復元できます。きめ細かい復元機能を使用すると、親の復元プランで定義された復元スコープを調整できます。きめ細かい復元スコープが親の復元プランで定義された元のスコープと重複していない場合、リソースは復元されません。

きめ細かい復元機能は、個々のリソースレベルの次の競合処理モードを含む復元プランを有効にできます。

  • 統合をスキップ
  • 統合して置換
  • 統合してボリュームを置換

復元プランで Namespace レベルまたは ProtectedApplication レベルの競合処理モード(競合時の失敗ロールバックなど)を使用している場合、きめ細かい復元を有効にするには、サポートされているモードを使用するように復元プランを更新するか、新しい復元プランを作成する必要があります。復元モードの詳細については、復元中のリソース競合を処理するをご覧ください。

きめ細かい復元を使用するには、包含フィルタと除外フィルタで 1 つ以上のフィルタ条件を定義します。復元するバックアップから特定のサブセットのリソースを選択するか、サブセットを除くすべてのリソースを復元できます。包含フィルタと除外フィルタを同時に定義できます。包含フィルタを使用すると、そのフィルタに一致するリソースのみが復元されます。除外フィルタを使用すると、一致するリソースが復元プロセスから除外されます。包含フィルタと除外フィルタの両方が指定されている場合、最初に包含フィルタが適用され、次に除外フィルタが適用されます。つまり、除外フィルタが包含フィルタよりも優先されます。フィルタが指定されていない場合、親の復元プランで定義されたスコープ全体に対して復元が実行されます。

フィルタ条件を作成する際には、次の 4 つの属性を任意で指定できます。

  • GroupKind: リソースの Kubernetes API グループと種類
  • Namespace: Namespace スコープ リソースの Namespace
  • リソース名: リソースの名前
  • ラベル: Kubernetes のラベルに基づいてリソースを選択する Key-Value ペア

上記の 4 つの属性を組み合わせて、フィルタ条件を定義できます。複数の属性を指定した場合、属性間の関係は AND と見なされます。フィルタ条件で定義されたすべての属性に一致するリソースが選択されます。複数のフィルタ条件を同時に指定することもできます。異なるフィルタ条件間の関係は OR です。リソースは、指定されたフィルタ条件のいずれかに一致する場合に選択されます。

始める前に

一連の復元を計画します

きめ細かい復元フィルタを使用して復元を作成する

gcloud

  1. きめ細かい復元フィルタを使用して YAML または JSON ファイルを作成します。次の YAML 例を使用できます。

    exclusionFilters:
    - groupKind:
        resourceGroup: foo.io
        resourceKind: Bar
      name: name1
      namespace: ns1
    inclusionFilters:
    - labels:
        key1: value1
        key2: value2
    
  2. 作成したきめ細かい復元フィルタ ファイルを使用して復元を作成します。

    gcloud beta container backup-restore restores create RESTORE \
        --project=PROJECT_ID \
        --location=LOCATION \
        --restore-plan=RESTORE_PLAN \
        --backup=BACKUP \
        --filter-file=FILTER_FILE
    

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

    • RESTORE: 作成する復元の名前。
    • PROJECT_ID: Google Cloud プロジェクトの ID。
    • LOCATION: 親の復元プランのコンピューティング リージョン
    • RESTORE_PLAN: この復元の派生元である親の復元プランの名前。
    • BACKUP: 復元するバックアップ(親の復元プランが projects/PROJECT_ID/locations/LOCATION/backupPlans/BACKUP_PLAN/backups/BACKUP として参照しているバックアップ プランに配置する必要があります)。

    • FILTER_FILE: きめ細かい復元フィルタのパス。

    オプションの詳細なリストについては、gcloud beta container backup-restore restores create のドキュメントをご覧ください。

コンソール

Google Cloud コンソールできめ細かい復元を作成するには、次の操作を行います。

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

    Google Kubernetes Engine に移動

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

  3. [バックアップ] タブをクリックします。

  4. バックアップのリストで、復元するバックアップを選択して、[復元を設定する] をクリックします。

  5. このバックアップに適用されるプランのリストから、復元プランを選択します。

  6. 復元の名前説明(省略可)を入力します。

  7. [きめ細かい復元を有効にする] チェックボックスをオンにします。

  8. [包含フィルタ] または [除外フィルタ] セクションで、[フィルタ条件を追加] をクリックします。

  9. [復元フィルタ条件] で条件を定義し、[変更を保存] をクリックします。

  10. 条件を追加する場合は、[フィルタ条件を追加] をもう一度クリックします。

  11. [復元] をクリックします。

きめ細かい復元フィルタ ファイルの例

以下の例では、Google Cloud CLI で使用される YAML 形式で記載しています。また、Google Cloud コンソールの手順も示します。

単一の Namespace スコープのリソースを復元する

この例では、Namespace webserver で名前 nginx-vars のリソース種別 ConfigMap を復元します。そのために、きめ細かい復元 InclusionFilters を使用してリソースを選択します。core グループのリソースを選択する場合は、resourceGroup に空の文字列を使用します。

gcloud

  inclusionFilters:
  - groupKind:
      resourceKind: ConfigMap
    name: nginx-vars
    namespace: webserver

コンソール

  1. きめ細かい復元フィルタを使用して復元を作成する手順で行ったように、きめ細かい復元を有効にします。
  2. [包含フィルタ] で、[フィルタ条件を追加] をクリックします。
  3. [リソース名] フィールドに「nginx-vars」と入力します。
  4. [名前空間] フィールドに「webserver」と入力します。
  5. [オブジェクトの種類] フィールドに「ConfigMap」と入力します。
  6. [保存] をクリックします。

単一クラスタ スコープのリソースを除外する

この例では、名前が sc1 の 1 つのリソース GroupKind storage.k8s.io/StorageClass を除く、使用可能なすべてのリソースを復元します。そのため、きめ細かい復元 ExclusionFilters を使用して、そのリソースを除外します。

gcloud

exclusionFilters:
- groupKind:
    resourceGroup: storage.k8s.io
    resourceKind: StorageClass
  name: sc1

コンソール

  1. きめ細かい復元フィルタを使用して復元を作成する手順で行ったように、きめ細かい復元を有効にします。
  2. [除外フィルタ] セクションで、[フィルタ条件を追加] をクリックします。
  3. [リソース名] フィールドに「sc1」と入力します。
  4. [API グループ] フィールドに「storage.k8s.io」と入力します。
  5. [オブジェクトの種類] フィールドに「StorageClass」と入力します。
  6. [保存] をクリックします。

2 つのラベルを使用してリソースを復元する

この例では、ラベル key1:value1key2:value2 の両方を持つリソースを復元します。きめ細かい復元 InclusionFilters を使用してリソースを選択します。

gcloud

inclusionFilters:
- labels:
    key1: value1
    key2: value2

コンソール

  1. きめ細かい復元フィルタを使用して復元を作成する手順で行ったように、きめ細かい復元を有効にします。
  2. [包含フィルタ] で、[フィルタ条件を追加] をクリックします。
  3. [ラベル] セクションで、次の操作を行います。

    1. [ラベルを追加] をクリックします。
    2. [Key 1] フィールドに「key1」と入力します。
    3. [Value 1] に「value1」と入力します。
    4. [ラベルを追加] をクリックします。
    5. [Key 2] フィールドに「key2」と入力します。
    6. [Value 2] に「value2」と入力します。
  4. [保存] をクリックします。

一部の GroupKind のリソースをすべて除外する

この例では、GroupKind ConfigMapstorage.k8s.io/StorageClass を除くすべての利用可能なリソースを復元します。この 2 つの GroupKind を除外するには、きめ細かい復元 ExclusionFilters を使用します。

gcloud

exclusionFilters:
- groupKind:
    resourceKind: ConfigMap
- groupKind:
    resourceGroup: storage.k8s.io
    resourceKind: StorageClass

コンソール

  1. きめ細かい復元フィルタを使用して復元を作成する手順で行ったように、きめ細かい復元を有効にします。
  2. [除外フィルタ] セクションで、[フィルタ条件を追加] をクリックします。
    1. [オブジェクトの種類] フィールドに「ConfigMap」と入力します。
    2. [保存] をクリックします。
  3. [除外フィルタ] セクションで、[フィルタ条件を追加] をクリックします。
    1. [API グループ] フィールドに「storage.k8s.io」と入力します。
    2. [オブジェクトの種類] フィールドに「StorageClass」と入力します。
    3. [保存] をクリックします。