Skip to main content
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

Trident Protect를 사용하여 애플리케이션 마이그레이션

기여자 netapp-aruldeepa

백업 데이터를 복원하여 클러스터 간이나 다른 스토리지 클래스로 애플리케이션을 마이그레이션할 수 있습니다.

참고 애플리케이션을 마이그레이션하면 해당 애플리케이션에 구성된 모든 실행 후크가 앱과 함께 마이그레이션됩니다. 복원 후 실행 후크가 있는 경우 복원 작업의 일부로 자동으로 실행됩니다.

백업 및 복원 작업

다음 시나리오에 대한 백업 및 복원 작업을 수행하려면 특정 백업 및 복원 작업을 자동화할 수 있습니다.

동일한 클러스터에 복제

동일한 클러스터에 애플리케이션을 복제하려면 스냅샷이나 백업을 생성하고 동일한 클러스터에 데이터를 복원합니다.

단계
  1. 다음 중 하나를 수행하세요.

  2. 동일한 클러스터에서 스냅샷이나 백업을 생성했는지에 따라 다음 중 하나를 수행합니다.

다른 클러스터에 복제

다른 클러스터에 애플리케이션을 복제하려면(클러스터 간 복제 수행) 소스 클러스터에 백업을 만든 다음, 해당 백업을 다른 클러스터로 복원합니다. 대상 클러스터에 Trident Protect가 설치되어 있는지 확인하세요.

참고 다음을 사용하여 다른 클러스터 간에 애플리케이션을 복제할 수 있습니다."SnapMirror 복제" .
단계
  1. "백업을 만듭니다".

  2. 백업이 포함된 개체 스토리지 버킷에 대한 AppVault CR이 대상 클러스터에 구성되었는지 확인하세요.

  3. 대상 클러스터에서"백업에서 데이터를 복원합니다" .

한 스토리지 클래스에서 다른 스토리지 클래스로 애플리케이션 마이그레이션

대상 스토리지 클래스에 백업을 복원하여 애플리케이션을 한 스토리지 클래스에서 다른 스토리지 클래스로 마이그레이션할 수 있습니다.

예를 들어 (복원 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을 사용하여 스냅샷을 복원합니다.
단계
  1. 사용자 정의 리소스(CR) 파일을 만들고 이름을 지정합니다. trident-protect-snapshot-restore-cr.yaml .

  2. 생성한 파일에서 다음 속성을 구성합니다.

    • 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"}]
  3. 선택적으로, 복원할 애플리케이션의 특정 리소스만 선택해야 하는 경우 특정 레이블로 표시된 리소스를 포함하거나 제외하는 필터링을 추가합니다.

    • 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 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"]
  4. 다음을 채운 후 trident-protect-snapshot-restore-cr.yaml 올바른 값으로 파일을 만들고 CR을 적용하세요.

    kubectl apply -f trident-protect-snapshot-restore-cr.yaml
CLI를 사용하여 스냅샷 복원
단계
  1. 괄호 안의 값을 사용자 환경의 정보로 바꿔서 스냅샷을 다른 네임스페이스로 복원합니다.

    • 그만큼 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>