使用Trident Protect 遷移應用程式
您可以透過還原備份資料在叢集之間或不同的儲存類別之間遷移您的應用程式。
|
|
遷移應用程式時,為該應用程式配置的所有執行鉤子都會隨應用程式一起遷移。如果存在恢復後執行鉤子,它將作為恢復操作的一部分自動運行。 |
備份和復原作業
針對以下場景,您可以自動執行特定的備份和復原任務,以執行備份和復原作業。
克隆到同一群集
若要將應用程式複製到同一個集群,請建立快照或備份,然後將資料還原到同一個集群。
-
執行下列操作之一:
-
在同一群集上,根據您建立的是快照還是備份,執行下列其中一項:
克隆到不同的集群
若要將應用程式複製到不同的叢集(執行跨叢集克隆),請在來源叢集上建立備份,然後將備份還原到不同的叢集。確保目標叢集上安裝了Trident保護。
|
|
您可以使用以下方法在不同的叢集之間複製應用程式"SnapMirror複製"。 |
-
確保目標叢集上已配置包含備份的物件儲存桶的 AppVault CR。
-
在目標集群上,"從備份中恢復數據" 。
將應用程式從一個儲存類別遷移到另一個儲存類
您可以透過將備份還原到目標儲存類,將應用程式從一個儲存類別遷移到另一個儲存類別。
例如(不包括恢復 CR 中的金鑰):
apiVersion: protect.trident.netapp.io/v1
kind: SnapshotRestore
metadata:
name: "${snapshotRestoreCRName}"
spec:
appArchivePath: "${snapshotArchivePath}"
appVaultRef: "${appVaultCRName}"
namespaceMapping:
- destination: "${destinationNamespace}"
source: "${sourceNamespace}"
storageClassMapping:
- destination: "${destinationStorageClass}"
source: "${sourceStorageClass}"
resourceFilter:
resourceMatchers:
kind: Secret
version: v1
resourceSelectionCriteria: exclude
-
建立自訂資源 (CR) 檔案並將其命名為
trident-protect-snapshot-restore-cr.yaml。 -
在您建立的文件中,配置以下屬性:
-
metadata.name: (必填) 此自訂資源的名稱;請為您的環境選擇一個唯一且有意義的名稱。
-
spec.appArchivePath: AppVault 內儲存快照內容的路徑。您可以使用以下命令尋找此路徑:
kubectl get snapshots <my-snapshot-name> -n trident-protect -o jsonpath='{.status.appArchivePath}' -
spec.appVaultRef: (必要) 儲存快照內容的 AppVault 的名稱。
-
spec.namespaceMapping:恢復作業的來源命名空間到目標命名空間的對應。代替 `my-source-namespace`和 `my-destination-namespace`利用來自周圍環境的資訊。
--- apiVersion: protect.trident.netapp.io/v1 kind: SnapshotRestore metadata: name: my-cr-name namespace: trident-protect spec: appArchivePath: my-snapshot-path appVaultRef: appvault-name namespaceMapping: [{"source": "my-source-namespace", "destination": "my-destination-namespace"}]
-
-
如果您需要僅選擇要復原的應用程式的某些資源,則可以新增篩選條件,以包含或排除具有特定標籤的資源:
-
resourceFilter.resourceSelectionCriteria:(篩選時必備)使用 `include or exclude`包含或排除 resourceMatchers 中定義的資源。新增以下 resourceMatchers 參數以定義要包含或排除的資源:
-
resourceFilter.resourceMatchers:resourceMatcher 物件陣列。如果在該數組中定義多個元素,則它們之間按 OR 運算匹配,每個元素內的字段(組、種類、版本)之間按 AND 運算匹配。
-
resourceMatchers[].group: (可選) 要篩選的資源群組。
-
resourceMatchers[].kind: (可選) 要篩選的資源類型。
-
resourceMatchers[].version: (可選) 要篩選的資源版本。
-
resourceMatchers[].names: (可選) 要過濾的資源的 Kubernetes 元資料.name 欄位中的名稱。
-
resourceMatchers[].namespaces: (可選) 要篩選的資源的 Kubernetes 元資料.name 欄位中的命名空間。
-
resourceMatchers[].labelSelectors: (可選) 資源的 Kubernetes 元資料.name 欄位中的標籤選擇器字串,如在下列位置定義: "Kubernetes 文檔" 。例如:
"trident.netapp.io/os=linux"。例如:
-
-
spec: resourceFilter: resourceSelectionCriteria: "include" resourceMatchers: - group: my-resource-group-1 kind: my-resource-kind-1 version: my-resource-version-1 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] - group: my-resource-group-2 kind: my-resource-kind-2 version: my-resource-version-2 names: ["my-resource-names"] namespaces: ["my-resource-namespaces"] labelSelectors: ["trident.netapp.io/os=linux"] -
-
填寫完後 `trident-protect-snapshot-restore-cr.yaml`將檔案的值正確後,套用 CR:
kubectl apply -f trident-protect-snapshot-restore-cr.yaml
-
將快照還原到不同的命名空間,並將括號中的值替換為您環境中的資訊。
-
這
snapshot`參數使用命名空間和快照名稱,格式如下 `<namespace>/<name>。 -
這
namespace-mapping`此參數使用冒號分隔的命名空間,將來源命名空間對應到正確的目標命名空間,格式如下: `source1:dest1,source2:dest2。例如:
tridentctl-protect create snapshotrestore <my_restore_name> --snapshot <namespace/snapshot_to_restore> --namespace-mapping <source_to_destination_namespace_mapping> -