本文說明如何在 Google Distributed Cloud (GDC) 實體隔離環境中,建立、編輯及刪除還原方案。
還原方案是預先設定的還原情境,適用於對應的一系列備份。還原方案可指派權限,讓具備備份建立者角色的使用者使用這些設定。
發生事件時,備份建立者可以快速獨立還原備份。舉例來說,已部署應用程式中的軟體更新可能會損毀永久資料,導致應用程式命名空間處於無效狀態,需要還原。
還原期間,您可以選擇套用一組替換規則,用於比對一組資源,並將這些資源的屬性目前值替換為新值。舉例來說,替代規則可以在還原期間變更備份資源的命名空間,將工作負載從一個命名空間遷移至另一個命名空間。
事前準備
要求 IAM 角色
如要建立還原方案,請要求 IAM 機構組織管理員授予使用者叢集備份管理員 (user-cluster-backup-admin) 角色。這個角色可建立、取得、列出、監控、更新、修補及刪除使用者叢集中的備份資源,例如備份方案和還原方案。
如果您是應用程式操作員,請要求具備使用者叢集備份管理員權限的管理員,為您建立還原方案。
建立還原方案
使用 GDC 控制台或 API 建立還原方案。
控制台
- 登入 GDC 控制台。
- 在導覽選單中,按一下「Backup for Clusters」。
- 按一下「Create Restore Plan」(建立還原方案)。
- 在「Restore plan basics」(還原方案基本資訊) 專區中,完成下列步驟,然後按一下「Next」(下一步):
- 在「Restore plan name」(還原方案名稱) 中,輸入還原方案的名稱。
- (選用) 在「Restore plan description」(還原方案說明) 中,輸入還原方案的說明。
- 在「Source cluster」(來源叢集) 清單中,選擇還原方案的來源叢集。
- 在「Project」(專案) 清單中,選擇還原方案的專案。
- 選取附加至來源叢集的專案。
- 在「Backup plan」(備份方案) 欄位中,選擇現有叢集的備份方案,該方案應對應至要還原的備份。
- 在「Target cluster」(目標叢集) 欄位中,選擇要還原備份的目標叢集。
- 在「Choose namespaced resources」(選擇命名空間資源) 專區中,完成下列步驟,然後按一下「Next」(下一步):
- 選擇要還原的命名空間:
- 按一下「Selected namespaced resources」(所選命名空間資源),指定要還原的備份命名空間。
- 依序點選「Edit cluster namespaces」(編輯叢集命名空間) 和「Add cluster namespace」(新增叢集命名空間),輸入命名空間。
- 按一下「Selected protected applications」(所選受保護的應用程式),指定命名空間和應用程式名稱來新增資源。
- 按一下「Selected namespaced resources」(所選命名空間資源),指定要還原的備份命名空間。
- 選擇如何處理衝突:
- 如果從備份還原的目標命名空間已存在於目標叢集,請按一下「Fail on conflict (non-destructive)」(發生衝突時失敗 (非破壞性)),讓還原作業失敗。
- 如果目標叢集內已有要從備份還原的命名空間,請按一下「Rollback (destructive)」(復原 (破壞性)),先刪除現有命名空間,再還原新的命名空間。
- 選擇還原磁碟區資料的方式:
- 按一下「Provision new volumes and restore volume data from backup」(佈建新的磁碟區,並從備份還原磁碟區資料),即可將備份中的磁碟區資料還原至新的永久磁碟。
- 按一下「Don't restore volume data」(不還原磁碟區資料),佈建新的永久磁碟區。如果目標叢集含有符合
PersistentVolumeClaim要求的未繫結永久磁碟區,叢集就會繫結至該磁碟區。 - 按一下「Reuse existing volumes containing your data」(重複使用含有貴機構資料的現有磁碟區),不還原磁碟區備份資料。所有
PersistentVolumeClaims都會繫結至參照現有永久磁碟的磁碟區。
- 選擇要還原的命名空間:
- 選用:在「Choose cluster-scoped resources」(選取叢集範圍內的資源) 區段中,完成下列步驟,然後按一下「Next」(下一步):
- 按一下「Don't restore cluster-scoped resources」(不還原叢集範圍內的資源),保留現有版本的資源。
- 按一下「Restore cluster-scoped resources」(還原叢集範圍內的資源),依 GroupKind 還原這些資源。
- 按一下「Edit GroupKinds」(編輯 GroupKind),新增更多叢集範圍內的資源。輸入「API group」(API 群組) 和「Object kind」(物件種類),比對這些類型的資源。
- 按一下「Preserve existing resources」(保留現有資源),在目標叢集沒有資源時建立資源。
- 按一下「Overwrite resources in target cluster」(覆寫目標叢集中的資源),即可刪除目標叢集中已有的資源,並從備份還原副本。
- 選用:在「Add substitution rules」(新增替代規則) 專區中,完成下列步驟,然後按一下「Next」(下一步):
- 按一下「新增規則」。
- 在「Cluster namespaces」(叢集命名空間) 方塊中,輸入命名空間清單,比對這些命名空間中的資源。
- 如要新增 GroupKind,請按一下「Add GroupKind」(新增 GroupKind),然後輸入「API group」(API 群組) 和「Object kind」(物件種類),比對這些類型的資源。
- 在「JSON path」(JSON 路徑) 欄位中,輸入 JSON 路徑,用於識別相符資源中要套用替換作業的欄位。
- 在「Original value pattern」(原始值模式) 欄位中,輸入要與新值比較的原始模式。
- 在「新值」欄位中輸入新值,取代相符屬性的目前值。
- 按一下 [儲存]。
- 點選「建立」。
API
建立 ClusterRestorePlan 自訂資源,規劃從現有 ClusterBackupPlan 還原。ClusterRestorePlan 會指派備份建立者可還原的確切資源和命名空間組合。以下是 ClusterRestorePlan 的範例:
apiVersion: backup.gdc.goog/v1
kind: ClusterRestorePlan
metadata:
name: RESTORE_PLAN_NAME
namespace: PROJECT_NAME
spec:
targetCluster:
targetClusterType: UserCluster
targetClusterName:
kind: "Cluster"
name: CLUSTER_NAME
description: RESTORE_PLAN_DESCRIPTION
clusterBackupPlanName: CLUSTER_BACKUP_PLAN_NAME
clusterRestoreConfig:
volumeDataRestorePolicy: RestoreVolumeDataFromBackup
clusterResourceConflictPolicy: UseBackupVersion
namespacedResourceRestoreMode: DeleteAndRestore
namespacedResourceRestoreScope:
selectedNamespaces:
namespaces: [NAME_SPACE]
clusterBackupRepositoryRef: CLUSTER_BACKUP_REPOSITORY
substitutionRules:
- newValue: NEW_CONFIG_VALUE
originValuePattern: VALUE_PATTERN
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- NAME_SPACE
- newValue: NEW_CONFIG_VALUE
originValuePattern: VALUE_PATTERN
target:
groupKinds:
jsonPath: '{.metadata.name}'
namespaces:
- NAME_SPACE
更改下列內容:
- 將
RESTORE_PLAN_NAME替換為還原方案名稱。 - 將
PROJECT_NAME替換為 GDC 專案名稱。 - 將
CLUSTER_NAME替換為叢集名稱。
本範例使用下列值:
值 |
屬性 |
說明 |
|---|---|---|
targetClusterName |
與這項方案相關聯的專案中,來源叢集的名稱。 | |
description |
使用者提供的ClusterRestorePlan用途說明。 |
|
clusterBackupPlanName |
要還原的 ClusterBackupPlan 名稱。ClusterBackupPlan 必須與 ClusterRestorePlan 位於相同的命名空間。 |
|
clusterRestoreConfig |
還原程序的設定。 | |
volumeDataRestorePolicy |
指定下列其中一項:
|
|
clusterResourceConflictPolicy |
指定處理叢集資源衝突的行為,例如資源已存在於叢集。指定下列其中一項:
|
|
namespacedResourceRestoreMode |
處理要還原的命名空間資源集已存在於目標叢集的情況。指定下列其中一項:
|
|
namespacedResourceRestoreScope |
指定可還原哪些 Namespaces 或 ProtectedApplications。
|
|
clusterBackupRepositoryRef |
指定要儲存 Restore 資源的存放區。這個存放區可以與備份來源存放區不同。存放區必須是叢集中的 ReadWrite 存放區。 |
|
substitutionRules |
在還原期間替換已備份 Kubernetes 資源中值的規則。如果清單空白,則不會進行替換。
系統會依定義的順序套用替代規則。
這個順序很重要,因為規則所做的變更可能會影響後續規則的比對邏輯。每項規則都會指定 target、要比對的 originValuePattern (VALUE_PATTERN),以及要替換的 newValue (NEW_CONFIG_VALUE)。target 可包含 namespaces,用於設定規則範圍 (NAME_SPACE)。 |
建立 ClusterRestorePlan 後,具備備份建立者角色的使用者可以手動還原備份。
查看還原方案
使用 GDC 控制台查看還原方案:
- 登入 GDC 控制台。
- 在導覽選單中,按一下「Backup for Clusters」。
- 按一下「Select project」(選取專案),根據您的角色選取組織或專案:
- 使用者叢集備份管理員:選取組織即可查看組織中的所有還原方案,選取專案則可查看專案中的所有還原方案。
- 備份建立者:選取專案,即可查看專案中的所有還原方案。
- 按一下「還原方案」分頁標籤。
- 在清單中點選還原方案,即可查看詳細資料。
編輯還原方案
如果與要編輯的還原方案相關聯的備份存放區,在建立還原方案時,Linked Cluster(read-only) 欄位有值,則會建立兩次。還原方案會傳播至讀寫和唯讀叢集。
如果備份存放區同時設有讀寫和唯讀叢集,您在編輯該存放區擁有的還原方案時,必須將 TARGET CLUSTER 設為讀寫叢集。
使用 GDC 控制台編輯還原方案:
- 登入 GDC 控制台。
- 在導覽選單中,按一下「Backup for Clusters」。
- 按一下「Select project」(選取專案),根據您的角色選取組織或專案:
- 使用者叢集備份管理員:選取組織即可查看組織中的所有還原方案,選取專案則可查看專案中的所有還原方案。
- 備份建立者:選取專案,即可查看專案中的所有還原方案。
- 按一下「還原方案」分頁標籤。
- 按一下要編輯的還原方案名稱。
- 按一下「Plan Configuration」分頁標籤,查看可修改的欄位。
按一下「命名空間資源」旁的「編輯」圖示 edit,即可編輯該資源:
在「Choose namespaced resources」(選擇命名空間資源) 專區,選取要還原備份中的哪些命名空間資源:
選取「Selected namespaced resources」(所選命名空間資源),從備份中的所選命名空間還原資源:
- 選取「Edit Cluster Namespaces」(編輯叢集命名空間),選取叢集命名空間。
- 在「叢集命名空間 1」欄位中,輸入命名空間的名稱。
- 按一下 [Save] 按鈕。
選取「Selected protected applications」(所選受保護的應用程式),從備份中選取的受保護應用程式還原資源:
- 選取「編輯受保護的應用程式」,選取命名空間和受保護的應用程式。
- 在「Namespace 1」(命名空間 1) 欄位中,輸入命名空間的名稱。
- 在「Protected application 1」欄位中,輸入受保護應用程式的名稱。
- 按一下 [Save] 按鈕。
按一下「Cluster-scoped resources」(叢集範圍資源) 旁的「Edit」(編輯) 圖示 edit,即可編輯該資源:
選用:在「Choose cluster-scoped resources」(選取叢集範圍內的資源) 區段中,指定 API 群組和
GroupKinds,選取要還原的叢集範圍內資源,並決定如何解決衝突:- 選取「Don't restore cluster-scoped resources」(不還原叢集範圍內的資源),即可從還原程序中移除叢集範圍內的資源。
選取「Restore cluster-scoped resources by GroupKind」(依 GroupKind 還原叢集範圍內的資源),依指定的
GroupKind還原資源:如要指定
GroupKind,請按一下「Edit GroupKind」(編輯 GroupKind) 按鈕。按一下「Add GroupKind」按鈕。
輸入
GroupKind名稱。按一下 [Save] 按鈕。
在「Conflict handling」(衝突處理) 部分,決定目標叢集內已有相同資源時要採取的行動:
- 選取「保留現有資源」,即可在叢集內建立尚不存在的資源。
- 選取「覆寫現有資源」,即可刪除找到的任何現有資源,並以還原的資源取代。
點選「儲存」按鈕確認變更。
在「Substitution rules」(替代規則) 區段中,按一下「Add New Rule」(新增規則) 按鈕,新增替代規則:
- 在「Cluster namespaces」(叢集命名空間) 欄位中,輸入要套用這項替代規則的叢集命名空間名稱。
- 點選「Add GroupKind」按鈕,將這項規則套用至特定
GroupKind物件。 - 在「JSON path」(JSON 路徑) 欄位中,以 JSON 格式輸入要替換的資源屬性路徑。
- 在「原始值模式」欄位中,輸入與屬性原始值相符的規則運算式。
- 在「新值」欄位中,輸入要替換目標欄位的值。如果這個欄位留空,系統會從資源中移除目標欄位。
- 按一下「Save」(儲存) 按鈕,完成建立新的替代規則。
在「Substitution rules」(替代規則) 部分,按一下「編輯」圖示 edit,即可編輯現有替代規則。
在「Substitution rules」(替代規則) 專區中,按一下「Delete」(刪除) 圖示 delete,即可刪除現有的替代規則。
刪除還原方案
您可以透過 GDC 控制台刪除 RestorePlans,或直接從 Kubernetes API 伺服器刪除資源。這會從物件儲存庫中清除任何相關聯的 RestorePlan 構件。
控制台
- 登入 GDC 控制台。
- 在導覽選單中,按一下「Backup for Clusters」。
- 按一下「Select project」(選取專案),根據您的角色選取組織或專案:
- 使用者叢集備份管理員:選取組織即可查看組織中的所有還原方案,選取專案則可查看專案中的所有還原方案。
- 備份建立者:選取專案,即可查看專案中的所有還原方案。
- 按一下「還原方案」分頁標籤。
- 按一下要刪除的還原方案名稱。
- 按一下「delete 刪除」按鈕。
- 在欄位中輸入還原方案名稱。
- 點選「刪除」按鈕,確認刪除這個還原方案。
API
刪除還原方案資源:
kubectl delete clusterRestoreplan RESTORE_PLAN_NAME -n NAMESPACE
更改下列內容:
RESTORE_PLAN_NAME:還原方案的名稱。NAMESPACE:還原方案所在的命名空間。