啟用精細還原功能

本頁面說明如何選取更精細的資源進行還原。

總覽

精細還原功能可讓您從備份還原部分資源。精細還原功能可彈性調整父項還原方案中定義的還原範圍。如果細部還原範圍與父項還原方案中定義的原始範圍沒有重疊,系統就不會還原任何資源。

您可以為還原方案啟用精細還原功能,並在個別資源層級設定衝突處理模式:

  • 合併/略過
  • 合併/替換
  • 合併/替換磁碟區

如果還原計畫使用命名空間或 ProtectedApplication 層級的衝突處理模式 (例如「Fail on conflict」或「Rollback」),且您想啟用精細還原功能,則必須更新還原計畫,改用支援的模式,或建立新的還原計畫。如要進一步瞭解還原模式,請參閱「處理還原期間的資源衝突」。

如要使用精細還原功能,請在納入和排除篩選器下定義一或多個篩選條件。您可以從備份中選取特定資源子集進行還原,或還原除了子集以外的所有資源。您可以同時定義納入和排除篩選器。如果使用「包含」篩選器,系統只會還原符合這些篩選條件的資源。如果使用排除篩選器,系統會從還原程序中排除相符的資源。如果同時指定納入和排除篩選器,系統會先套用納入篩選器,再套用排除篩選器。也就是說,排除篩選器的優先順序高於納入篩選器。如未指定篩選條件,系統會還原上層還原計畫中定義的整個範圍。

建構篩選條件時,有四個選用屬性:

  • GroupKind:資源的 Kubernetes API 群組和種類
  • 命名空間:命名空間範圍資源的命名空間
  • 資源名稱:資源的名稱
  • 標籤:鍵/值配對,可根據 Kubernetes 標籤選取資源

您可以結合使用上述四種屬性,定義篩選條件。如果指定多個屬性,屬性之間的關係會視為 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:專案的 ID。 Google Cloud
    • 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. 在導覽選單中,點選「GKE 備份」。

  3. 按一下 [備份] 分頁標籤。

  4. 在備份清單中,選取要還原的備份,然後按一下「設定還原」。

  5. 從適用於這項備份的方案清單中,選擇還原方案。

  6. 輸入還原作業的「名稱」和「說明」 (選填)。

  7. 勾選「啟用精細還原功能」核取方塊。

  8. 在「包含篩選器」或「排除篩選器」部分,點選「新增篩選條件」。

  9. 在「還原篩選條件」中定義條件,然後按一下「儲存變更」。

  10. 如要新增更多條件,請再次點選「新增篩選條件」。

  11. 按一下「還原」。

精細還原篩選器檔案範例

以下範例採用 Google Cloud CLI 使用的 YAML 格式,或 Google Cloud 控制台的逐步說明。

還原單一命名空間範圍資源

這個範例會使用精細還原 InclusionFilters 選取資源,在命名空間 webserver 中還原名稱為 nginx-vars 的資源種類 ConfigMap。如要選擇 core 群組下的資源,請使用 resourceGroup 的空字串。

gcloud

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

控制台

  1. 按照「使用精細還原篩選器建立還原作業」程序,啟用精細還原功能。
  2. 在「包含」篩選器部分,按一下「新增篩選條件」。
  3. 在「Resource name」(資源名稱) 欄位中輸入 nginx-vars。
  4. 在「Namespace」(命名空間) 欄位中輸入 webserver。
  5. 在「Object kind」(物件種類) 欄位中輸入 ConfigMap。
  6. 按一下 [儲存變更]。

排除單一叢集範圍內的資源

這個範例會還原所有可用資源,但排除名稱為 sc1 的資源 GroupKind storage.k8s.io/StorageClass,並使用精細還原 ExclusionFilters 排除該資源。

gcloud

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

控制台

  1. 按照「使用精細還原篩選器建立還原作業」程序,啟用精細還原功能。
  2. 在「排除篩選器」部分,按一下「新增篩選條件」。
  3. 在「Resource name」(資源名稱) 欄位中輸入 sc1。
  4. 在「API group」(API 群組) 欄位中輸入 storage.k8s.io。
  5. 在「Object kind」(物件種類) 欄位中,輸入 StorageClass。
  6. 按一下 [儲存變更]。

還原具有兩個標籤的資源

這個範例會使用精細復原 InclusionFilters 選取資源,復原同時具有 key1:value1 和 key2:value2 標籤的資源。

gcloud

inclusionFilters:
- labels:
    key1: value1
    key2: value2

控制台

  1. 如建立精細還原篩選器程序所述,啟用精細還原功能。
  2. 在「包含」篩選器部分,按一下「新增篩選條件」。
  3. 在「Labels」(標籤) 部分:

    1. 按一下 [Add label] (新增標籤)。
    2. 在「Key 1」(金鑰 1) 欄位中輸入 key1。
    3. 在「Value 1」(值 1) 欄位中輸入 value1。
    4. 按一下「新增標籤」。
    5. 在「Key 2」欄位中輸入 key2。
    6. 在「值 2」欄位中輸入 value2。
  4. 按一下 [儲存變更]。

排除某些 GroupKind 的所有資源

這個範例會還原所有可用資源,但 GroupKind ConfigMap 和 storage.k8s.io/StorageClass 除外,並使用精細還原 ExclusionFilters 排除這兩個 GroupKind。

gcloud

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

控制台

  1. 按照「使用精細還原篩選器建立還原作業」程序,啟用精細還原功能。
  2. 在「排除篩選器」部分,按一下「新增篩選條件」。
    1. 在「Object kind」(物件種類) 欄位中,輸入 ConfigMap。
    2. 按一下 [儲存變更]。
  3. 在「排除篩選器」部分,按一下「新增篩選條件」。
    1. 在「API group」(API 群組) 欄位中輸入 storage.k8s.io。
    2. 在「Object kind」(物件種類) 欄位中,輸入 StorageClass。
    3. 按一下 [儲存變更]。