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

Trident Protect를 사용하여 관리를 위한 애플리케이션 정의

기여자 netapp-aruldeepa

Trident Protect로 관리하려는 애플리케이션을 정의하려면 애플리케이션 CR과 관련 AppVault CR을 생성하면 됩니다.

AppVault CR 만들기

애플리케이션에서 데이터 보호 작업을 수행할 때 사용할 AppVault CR을 만들어야 하며, AppVault CR은 Trident Protect가 설치된 클러스터에 있어야 합니다. AppVault CR은 사용자 환경에 따라 다릅니다. AppVault CR의 예는 다음을 참조하세요."AppVault 사용자 정의 리소스."

응용 프로그램 정의

Trident Protect로 관리하려는 각 애플리케이션을 정의해야 합니다. 수동으로 애플리케이션 CR을 생성하거나 Trident Protect CLI를 사용하여 관리를 위한 애플리케이션을 정의할 수 있습니다.

CR을 사용하여 애플리케이션 추가
단계
  1. 대상 애플리케이션 CR 파일을 만듭니다.

    1. 사용자 정의 리소스(CR) 파일을 만들고 이름을 지정합니다(예: maria-app.yaml ).

    2. 다음 속성을 구성합니다.

      • metadata.name: (필수) 애플리케이션 사용자 정의 리소스의 이름입니다. 보호 작업에 필요한 다른 CR 파일이 이 값을 참조하므로 선택한 이름을 기록해 두세요.

      • spec.includedNamespaces: (필수) 네임스페이스와 레이블 선택기를 사용하여 애플리케이션이 사용하는 네임스페이스와 리소스를 지정합니다. 애플리케이션 네임스페이스는 이 목록에 포함되어야 합니다. 레이블 선택기는 선택 사항이며 지정된 각 네임스페이스 내의 리소스를 필터링하는 데 사용할 수 있습니다.

      • spec.includedClusterScopedResources: (선택 사항) 이 특성을 사용하여 애플리케이션 정의에 포함될 클러스터 범위 리소스를 지정합니다. 이 속성을 사용하면 그룹, 버전, 종류 및 레이블을 기준으로 리소스를 선택할 수 있습니다.

        • groupVersionKind: (필수) 클러스터 범위 리소스의 API 그룹, 버전 및 종류를 지정합니다.

        • labelSelector: (선택 사항) 레이블을 기준으로 클러스터 범위 리소스를 필터링합니다.

      • metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (선택 사항) 이 주석은 KubeVirt 환경과 같이 스냅샷 전에 파일 시스템이 정지되는 가상 머신에서 정의된 애플리케이션에만 적용됩니다. 스냅샷 중에 이 애플리케이션이 파일 시스템에 쓸 수 있는지 여부를 지정합니다. true로 설정하면 애플리케이션은 글로벌 설정을 무시하고 스냅샷 중에 파일 시스템에 쓸 수 있습니다. false로 설정하면 애플리케이션은 글로벌 설정을 무시하고 스냅샷을 찍는 동안 파일 시스템이 동결됩니다. 지정되었지만 애플리케이션 정의에 가상 머신이 없는 경우 주석은 무시됩니다. 지정하지 않으면 응용 프로그램은 다음을 따릅니다."글로벌 Trident 보호 동결 설정" .

애플리케이션이 이미 생성된 후에 이 주석을 적용해야 하는 경우 다음 명령을 사용할 수 있습니다.

kubectl annotate application -n <application CR namespace> <application CR name> protect.trident.netapp.io/skip-vm-freeze="true"

+
YAML 예시:

+

apiVersion: protect.trident.netapp.io/v1
kind: Application
metadata:
  annotations:
    protect.trident.netapp.io/skip-vm-freeze: "false"
  name: my-app-name
  namespace: my-app-namespace
spec:
  includedNamespaces:
    - namespace: namespace-1
      labelSelector:
        matchLabels:
          app: example-app
    - namespace: namespace-2
      labelSelector:
        matchLabels:
          app: another-example-app
  includedClusterScopedResources:
    - groupVersionKind:
        group: rbac.authorization.k8s.io
        kind: ClusterRole
        version: v1
      labelSelector:
        matchLabels:
          mylabel: test
  1. (선택 사항) 특정 레이블이 표시된 리소스를 포함하거나 제외하는 필터링을 추가합니다.

    • resourceFilter.resourceSelectionCriteria: (필터링에 필요) 사용 Include 또는 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" .

          참고 둘 다 resourceFilter 그리고 labelSelector 사용됩니다, resourceFilter 먼저 실행한 다음 labelSelector 결과 리소스에 적용됩니다.

      예를 들어:

    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"]
  2. 환경에 맞게 애플리케이션 CR을 만든 후 CR을 적용합니다. 예를 들어:

    kubectl apply -f maria-app.yaml
단계
  1. 다음 예제 중 하나를 사용하여 애플리케이션 정의를 만들고 적용하고, 괄호 안의 값을 사용자 환경의 정보로 바꿉니다. 예제에 표시된 인수와 함께 쉼표로 구분된 목록을 사용하여 애플리케이션 정의에 네임스페이스와 리소스를 포함할 수 있습니다.

    스냅샷 중에 애플리케이션이 파일 시스템에 쓸 수 있는지 여부를 지정하기 위해 앱을 생성할 때 주석을 사용할 수 있습니다. 이는 스냅샷 전에 파일 시스템이 정지되는 KubeVirt 환경과 같은 가상 머신에서 정의된 애플리케이션에만 적용됩니다. 주석을 다음과 같이 설정하면 true , 애플리케이션은 글로벌 설정을 무시하고 스냅샷 동안 파일 시스템에 쓸 수 있습니다. 이것을 설정하면 false , 애플리케이션은 글로벌 설정을 무시하고 스냅샷을 찍는 동안 파일 시스템이 동결됩니다. 주석을 사용하지만 애플리케이션 정의에 가상 머신이 없는 경우 주석은 무시됩니다. 주석을 사용하지 않으면 응용 프로그램은 다음을 따릅니다."글로벌 Trident 보호 동결 설정" .

    CLI를 사용하여 애플리케이션을 생성할 때 주석을 지정하려면 다음을 사용할 수 있습니다. --annotation 깃발.

    • 애플리케이션을 만들고 파일 시스템 동결 동작에 대한 글로벌 설정을 사용합니다.

      tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace>
    • 애플리케이션을 생성하고 파일 시스템 정지 동작에 대한 로컬 애플리케이션 설정을 구성합니다.

      tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --annotation protect.trident.netapp.io/skip-vm-freeze=<"true"|"false">

      사용할 수 있습니다 --resource-filter-include 그리고 --resource-filter-exclude 리소스를 포함하거나 제외하기 위한 플래그 resourceSelectionCriteria 다음 예에서 볼 수 있듯이 그룹, 종류, 버전, 레이블, 이름 및 네임스페이스와 같은 것들이 있습니다.

    tridentctl-protect create application <my_new_app_cr_name> --namespaces <namespaces_to_include> --csr <cluster_scoped_resources_to_include> --namespace <my-app-namespace> --resource-filter-include '[{"Group":"apps","Kind":"Deployment","Version":"v1","Names":["my-deployment"],"Namespaces":["my-namespace"],"LabelSelectors":["app=my-app"]}]'