使用Trident Protect迁移应用程序
您可以通过恢复备份数据在集群之间或不同的存储类之间迁移您的应用程序。
|
迁移应用程序时、为该应用程序配置的所有执行挂钩都会随该应用程序一起迁移。如果存在还原后执行挂钩、则它会在还原操作中自动运行。 |
备份和还原操作
要在以下情况下执行备份和还原操作、您可以自动执行特定的备份和还原任务。
克隆到同一集群
要将应用程序克隆到同一集群、请创建快照或备份并将数据还原到同一集群。
克隆到其他集群
要将应用程序克隆到其他集群(执行跨集群克隆)、请在源集群上创建备份、然后将备份还原到其他集群。确保目标集群上已安装Trident Protect。
|
您可以使用在不同集群之间复制应用程序"SnapMirror 复制"。 |
将应用程序从一个存储类迁移到另一个存储类
您可以通过将备份还原到目标存储类,将应用程序从一个存储类迁移到另一个存储类。
例如(从还原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:(required_)此自定义资源的名称;请为您的环境选择一个唯一且合理的名称。
-
spec.appArchivePath:AppVault中存储快照内容的路径。您可以使用以下命令查找此路径:
kubectl get snapshots <my-snapshot-name> -n trident-protect -o jsonpath='{.status.appArchivePath}'
-
spec.appVaultRef:(required)存储快照内容的AppVault的名称。
-
。spec.namespaceMapping:还原操作的源命名空间到目标命名空间的映射。将和 `my-destination-namespace`替换 `my-source-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.resourceSourcesionCriteri:(筛选时需要) `include or exclude`用于包含或排除在resourceMatchers中定义的资源。添加以下resourceMatchers参数以定义要包括或排除的资源:
-
resourceFilter.resourceMatcher:resourceMatcher对象数组。如果在此数组中定义多个元素,它们将作为OR操作进行匹配,每个元素(组、种类、版本)中的字段将作为AND操作进行匹配。
-
resourceMatcher[].group:(可 选)要筛选的资源的组。
-
resourceMatcher[].KIND:(可 选)要筛选的资源种类。
-
resourceMatcher[].version:(可 选)要筛选的资源版本。
-
resourceMatcher[].names:(可 选)要筛选的资源的Kubernetes metadata.name字段中的名称。
-
resourceMatcher[].namespies:(可 选)要筛选的资源的Kubernetes metadata.name字段中的命名空间。
-
*resourceMatcher[].labelSelectors *:(可 选)资源的Kubernetes metadata.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>
-