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

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

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

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

백업 및 복원 작업

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

동일한 클러스터에 클론 생성

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

단계
  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 문서"에 정의된 리소스의 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>