Trident Protect를 사용하여 애플리케이션을 마이그레이션하세요.
백업 데이터를 복원하여 클러스터 간에 또는 다른 스토리지 클래스로 애플리케이션을 마이그레이션할 수 있습니다.
|
|
애플리케이션을 마이그레이션할 때 애플리케이션에 대해 구성된 모든 실행 후크가 애플리케이션과 함께 마이그레이션됩니다. 복원 후 실행 후크가 있는 경우 복원 작업의 일부로 자동으로 실행됩니다. |
백업 및 복원 작업
다음 시나리오에 대한 백업 및 복원 작업을 수행하려면 특정 백업 및 복원 작업을 자동화할 수 있습니다.
동일한 클러스터에 클론 생성
애플리케이션을 동일한 클러스터에 복제하려면 스냅샷 또는 백업을 생성하고 데이터를 동일한 클러스터로 복원합니다.
-
다음 중 하나를 수행합니다.
-
동일한 클러스터에서 스냅샷을 생성했는지 백업을 생성했는지에 따라 다음 중 하나를 수행하십시오.
다른 클러스터로 클론
애플리케이션을 다른 클러스터로 복제(클러스터 간 복제)하려면 소스 클러스터에서 백업을 생성한 다음 해당 백업을 다른 클러스터로 복원하십시오. Trident Protect가 타겟 클러스터에 설치되어 있는지 확인하십시오.
|
|
"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 metadata.name 필드에 있는 이름입니다.
-
resourceMatchers[].namespaces: (선택 사항) 필터링할 리소스의 Kubernetes metadata.name 필드에 있는 네임스페이스입니다.
-
resourceMatchers[].labelSelectors: (선택 사항) "Kubernetes 문서"에 정의된 리소스의 Kubernetes metadata.name 필드에 있는 레이블 선택기 문자열입니다. 예:
"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> -