本頁說明如何在 Google Distributed Cloud (GDC) 氣隙環境中建立、編輯及刪除還原計畫。
還原方案是預先設定的還原情境,適用於相應的備份系列。還原方案可為具備備份建立者角色的使用者指派權限,讓他們使用這些設定。
發生事件時,備份建立者可以快速獨立還原備份。舉例來說,已部署應用程式中的軟體更新可能會導致持續性資料損毀,使應用程式命名空間處於無效狀態,因此需要還原。
還原期間,您可以選擇性地套用一組替代規則,用於比對一組資源,並將這些資源的屬性目前值替換為新值。舉例來說,替換規則可以在還原期間變更備份資源的命名空間,將工作負載從一個命名空間遷移至另一個命名空間。
事前準備
如要建立還原方案,您必須具備下列條件:
必要的身分與存取權角色:
- 使用者叢集備份管理員:管理使用者叢集中的備份資源,例如備份和還原計畫。請要求機構 IAM 管理員授予您「使用者叢集備份管理員」(
user-cluster-backup-admin
) 角色。詳情請參閱「角色定義」。 - 如果您是應用程式運算子,請要求具備使用者叢集備份管理員權限的管理員為您建立還原方案。
- 使用者叢集備份管理員:管理使用者叢集中的備份資源,例如備份和還原計畫。請要求機構 IAM 管理員授予您「使用者叢集備份管理員」(
建立還原方案
使用 GDC 控制台或 API 建立還原計畫。
控制台
- 登入 GDC 控制台。
- 在導覽選單中,按一下「Backup for Clusters」(叢集備份)。
- 按一下「建立還原方案」。
- 在「還原方案基本資訊」部分,完成下列步驟並按一下「下一步」:
- 在「還原計畫名稱」中,輸入還原計畫的名稱。
- (選用) 在「還原計畫說明」中輸入還原計畫的說明。
- 在「來源叢集」清單中,選擇還原計畫的來源叢集。
- 在「專案」清單中,選擇還原計畫的專案。
- 選取附加至來源叢集的專案。
- 在「備份方案」欄位中,為現有叢集選擇備份方案,該方案應與您要還原的備份相符。
- 在「目標叢集」欄位中,選擇要還原備份的目標叢集。
- 在「選擇命名空間資源」部分,完成下列步驟,然後按一下「下一步」:
- 選擇要還原的命名空間:
- 按一下「所有命名空間資源」,即可還原備份中的所有命名空間資源。
- 按一下「選取的命名空間資源」,指定要還原備份中的哪些命名空間。
- 按一下「編輯叢集命名空間」,然後按一下「新增叢集命名空間」,輸入命名空間。
- 按一下「選取的受保護應用程式」,指定命名空間和應用程式名稱,即可新增資源。
- 選擇如何處理衝突:
- 按一下「Fail on conflict (non-destructive)」(發生衝突時失敗 (非破壞性)),如果目標叢集中已有要從備份還原的命名空間,還原作業就會失敗。
- 如果備份中要還原的命名空間已存在於目標叢集中,請按一下「Rollback (destructive)」(回溯 (破壞性)),刪除現有的命名空間,再還原新的命名空間。
- 選擇還原磁碟區資料的方式:
- 按一下「佈建新的磁碟區,並從備份還原磁碟區資料」,從新永久磁碟上的備份還原磁碟區資料。
- 按一下「不還原磁碟區資料」,即可佈建新的永久磁碟區。如果目標叢集包含未繫結的永久磁碟區,且該磁碟區符合
PersistentVolumeClaim
的需求,叢集就會繫結至該磁碟區。 - 按一下「重複使用含有您資料的現有磁碟區」,即可不還原磁碟區備份資料。所有
PersistentVolumeClaims
都會繫結至參照現有永久磁碟的磁碟區。
- 選擇要還原的命名空間:
- 選用:在「選擇叢集範圍內的資源」部分,完成下列步驟,然後按一下「下一步」:
- 按一下「不還原叢集範圍內的資源」,讓資源維持現有版本。
- 按一下「依 GroupKind 還原叢集範圍內的資源」,即可還原這些資源。
- 按一下「編輯 GroupKinds」,即可新增更多叢集範圍資源。 輸入 API 群組和物件種類,比對這些類型中的資源。
- 按一下「保留現有資源」,即可在目標叢集中建立資源 (如果沒有的話)。
- 按一下「覆寫目標叢集中的資源」,刪除目標叢集中已有的資源,然後從備份還原副本。
- 選用:在「新增替代規則」部分,完成下列步驟並按一下「下一步」:
- 按一下「新增規則」。
- 在「叢集命名空間」方塊中,輸入要比對這些命名空間內資源的命名空間清單。
- 如要新增 GroupKind,請按一下「新增 GroupKind」,然後輸入「API 群組」和「物件種類」,以比對這些類型中的資源。
- 在「JSON 路徑」欄位中,輸入 JSON 路徑,識別相符資源中要套用替代項的欄位。
- 在「Original value pattern」(原始值模式) 欄位中,輸入要與新值比較的原始模式。
- 在「新值」欄位中,輸入要取代相符屬性目前值的新值。
- 按一下 [儲存]。
- 點選「建立」。
API
建立 ClusterRestorePlan
自訂資源,規劃從現有 ClusterBackupPlan
進行還原作業。ClusterRestorePlan
會指派備份建立者可還原的確切資源和命名空間組合。以下是 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 位於相同命名空間。 |
|
targetClusterName |
與此方案相關聯的專案中來源叢集名稱。 | |
description |
使用者提供的 ClusterRestorePlan 用途說明。 |
|
clusterRestoreConfig |
還原程序的設定。 | |
clusterBackupRepositoryRef |
指定要儲存 Restore 資源的存放區。這個存放區可以與備份來源的存放區不同。存放區必須是叢集中的 ReadWrite 存放區。 |
|
clusterResourceConflictPolicy |
指定處理叢集資源衝突的行為,例如資源是否已存在於叢集中。指定下列其中一個值:
|
|
volumeDataRestorePolicy |
指定下列其中一項:
|
|
namespacedResourceRestoreMode |
處理要還原的命名空間資源集已存在於目標叢集的情況。指定下列其中一項:
|
|
namespacedResourceRestoreScope |
指定允許還原的 Namespaces 或 ProtectedApplications 。
|
|
substitutionRules |
在還原期間,取代備份 Kubernetes 資源中的值。如果清單為空,表示不會發生任何替代情形。 系統會依定義的順序,依序套用替代規則。 這個順序非常重要,因為規則所做的變更可能會影響後續規則的相符邏輯。 |
建立 ClusterRestorePlan
後,具有備份建立者角色的使用者即可手動還原備份。
查看還原方案
使用 GDC 控制台查看還原計畫:
- 登入 GDC 控制台。
- 在導覽選單中,按一下「Backup for Clusters」(叢集備份)。
- 按一下「選取專案」,然後根據您的角色選取機構或專案:
- 使用者叢集備份管理員:選取機構即可查看機構中的所有還原方案,或選取專案即可查看專案中的所有還原方案。
- 備份建立者:選取專案,即可查看專案中的所有還原方案。
- 按一下「還原方案」分頁標籤。
- 按一下清單中的還原計畫,即可查看詳細資料。
編輯還原方案
如果與要編輯的還原方案相關聯的備份存放區,在建立還原方案時,「連結的叢集(唯讀)」欄位有值,則會建立兩次。還原方案會傳播至讀寫和唯讀叢集。
編輯備份存放區擁有的還原方案時,如果備份存放區同時設定了讀寫和唯讀叢集,您必須編輯 TARGET CLUSTER
設為讀寫叢集的還原方案。
使用 GDC 控制台編輯還原方案:
- 登入 GDC 控制台。
- 在導覽選單中,按一下「Backup for Clusters」(叢集備份)。
- 按一下「選取專案」,然後根據您的角色選取機構或專案:
- 使用者叢集備份管理員:選取機構即可查看機構中的所有還原方案,或選取專案即可查看專案中的所有還原方案。
- 備份建立者:選取專案,即可查看專案中的所有還原方案。
- 按一下「還原方案」分頁標籤。
- 按一下要編輯的還原計畫名稱。
- 按一下「計畫設定」分頁標籤,即可查看可修改的欄位。
按一下「命名空間資源」旁的「編輯」圖示 edit,即可編輯該資源:
在「選擇命名空間資源」專區中,選取要還原備份中的哪些命名空間資源:
- 選取「所有命名空間資源」,即可還原備份中的所有命名空間資源。
選取「已選取的命名空間資源」,從備份中選取的命名空間還原資源:
- 選取「編輯叢集命名空間」,然後選取叢集命名空間。
- 在「Cluster namespace 1」(叢集命名空間 1) 欄位中,輸入命名空間的名稱。
- 按一下「儲存」按鈕。
選取「選定的受保護應用程式」,從備份中選定的受保護應用程式還原資源:
- 選取「編輯受保護的應用程式」,然後選取命名空間和受保護的應用程式。
- 在「Namespace 1」(命名空間 1) 欄位中,輸入命名空間的名稱。
- 在「受保護的應用程式 1」欄位中,輸入受保護的應用程式名稱。
- 按一下「儲存」按鈕。
按一下「叢集範圍內的資源」旁的「編輯」圖示 edit,即可編輯該資源:
選用:在「選擇叢集範圍內的資源」專區中,指定 API 群組和
GroupKinds
,選取要還原的叢集範圍內資源,然後決定如何解決衝突問題:- 選取「不還原叢集範圍內的資源」,從還原程序中移除叢集範圍內的資源。
選取「按照 GroupKind 還原叢集範圍內的資源」,即可按照指定的
GroupKind
還原資源:如要指定
GroupKind
,請按一下「Edit GroupKind」按鈕。按一下「Add GroupKind」按鈕。
輸入
GroupKind
名稱。按一下「儲存」按鈕。
在「衝突處理」部分,決定目標叢集中已有資源時要採取的行動:
- 選取「保留現有資源」,在叢集上建立資源 (如果叢集上沒有資源)。
- 選取「覆寫現有資源」,刪除找到的所有現有資源,並以還原的資源取代。
按一下「儲存」按鈕,確認變更。
在「替代規則」部分,按一下「新增規則」按鈕,新增替代規則:
- 在「叢集命名空間」欄位中,輸入要套用這項替代規則的叢集命名空間名稱。
- 按一下「新增 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
:包含還原計畫的命名空間。