Trident Protect로 관리할 애플리케이션을 정의합니다
애플리케이션 CR 및 연결된 AppVault CR을 생성하여 Trident Protect로 관리할 애플리케이션을 정의할 수 있습니다.
AppVault CR을 작성합니다
응용 프로그램에서 데이터 보호 작업을 수행할 때 사용할 AppVault CR을 만들어야 하며 Trident Protect가 설치된 클러스터에 AppVault CR이 있어야 합니다. AppVault CR은 사용자 환경에 따라 다릅니다. AppVault CRS의 예는 을 참조하십시오 "AppVault 사용자 지정 리소스."
응용 프로그램을 정의합니다
Trident Protect로 관리하려는 각 애플리케이션을 정의해야 합니다. 응용 프로그램 CR을 수동으로 생성하거나 Trident Protect CLI를 사용하여 관리할 응용 프로그램을 정의할 수 있습니다.
-
대상 응용 프로그램 CR 파일을 만듭니다.
-
사용자 정의 리소스(CR) 파일을 만들고 이름을 지정합니다(예:
maria-app.yaml
). -
다음 특성을 구성합니다.
-
metadata.name: (required) 응용 프로그램 사용자 정의 리소스의 이름입니다. 보호 작업에 필요한 다른 CR 파일이 이 값을 참조하기 때문에 선택하는 이름을 확인합니다.
-
spec.includedNamespaces: (required) 네임스페이스 및 레이블 선택기를 사용하여 응용 프로그램에서 사용하는 네임스페이스와 리소스를 지정합니다. 응용 프로그램 네임스페이스는 이 목록의 일부여야 합니다. 레이블 선택기는 선택 사항이며 지정된 각 네임스페이스 내에서 리소스를 필터링하는 데 사용할 수 있습니다.
-
spec.includedClusterScopedResources: (Optional) 이 속성을 사용하여 응용 프로그램 정의에 포함될 클러스터 범위 리소스를 지정합니다. 이 속성을 사용하면 해당 그룹, 버전, 종류 및 레이블을 기반으로 이러한 리소스를 선택할 수 있습니다.
-
groupVersionKind: (required) 클러스터 범위 리소스의 API 그룹, 버전 및 종류를 지정합니다.
-
labelSelector: (Optional) 레이블을 기반으로 클러스터 범위 리소스를 필터링합니다.
-
-
metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (Optional) 이 주석은 KubeVirt 환경과 같이 스냅샷 전에 파일 시스템이 정지되는 가상 머신에서 정의된 애플리케이션에만 적용됩니다. 이 애플리케이션이 스냅샷 중에 파일 시스템에 쓸 수 있는지 여부를 지정합니다. true로 설정하면 응용 프로그램은 전역 설정을 무시하고 스냅샷 중에 파일 시스템에 쓸 수 있습니다. false로 설정하면 응용 프로그램에서 전역 설정을 무시하고 스냅샷 중에 파일 시스템이 고정됩니다. 지정되었지만 응용 프로그램에 가상 머신이 애플리케이션 정의에 없는 경우 주석은 무시됩니다. 지정하지 않으면 응용 프로그램이 을 "Global Trident Protect Freeze(전체 고정 보호) 설정입니다"따릅니다.
-
-
응용 프로그램이 이미 생성된 후에 이 주석을 적용해야 하는 경우 다음 명령을 사용할 수 있습니다.
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
-
(선택 사항) 특정 레이블이 표시된 리소스를 포함하거나 제외하는 필터링을 추가합니다.
-
resourceFilter.resourceSelectionCriteria:(필터링에 필요)
Include
resourceMatchers에 정의된 리소스를 포함하거나 제외하려면 또는 을Exclude
사용합니다. 다음 resourceMatchers 매개 변수를 추가하여 포함하거나 제외할 리소스를 정의합니다.-
resourceFilter.resourceMatchers: resourceMatcher 개체의 배열입니다. 이 배열에서 여러 요소를 정의하는 경우 해당 요소는 OR 연산으로 일치하고 각 요소(그룹, 종류, 버전) 내의 필드는 AND 연산으로 일치합니다.
-
resourceMatchers[].group:(Optional) 필터링할 리소스의 그룹입니다.
-
* resourceMatchers [].kind *: (Optional) 필터링할 리소스의 종류입니다.
-
resourceMatchers [ ].version: (Optional) 필터링할 리소스의 버전입니다.
-
resourceMatchers[].names:(Optional) 필터링할 리소스의 Kubernetes metadata.name 필드에 있는 이름입니다.
-
*resourceMatchers [].namespaces *: (Optional) 필터링할 리소스의 Kubernetes metadata.name 필드에 있는 네임스페이스입니다.
-
resourceMatchers [ ].labelSelectors: (Optional) 에 정의된 대로 리소스의 Kubernetes metadata.name 필드에 있는 레이블 선택기 문자열입니다. "Kubernetes 문서" 예를 들면 다음과 `"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"]
-
-
환경에 맞게 응용 프로그램 CR을 만든 후 CR을 적용합니다. 예를 들면 다음과 같습니다.
kubectl apply -f maria-app.yaml
-
다음 예제 중 하나를 사용하여 응용 프로그램 정의를 만들고 적용합니다. 대괄호 안의 값을 사용자 환경의 정보로 바꿉니다. 예제에 표시된 인수를 사용하여 쉼표로 구분된 목록을 사용하여 응용 프로그램 정의에 네임스페이스와 리소스를 포함할 수 있습니다.
스냅샷을 생성하는 동안 애플리케이션이 파일 시스템에 쓸 수 있는지 여부를 지정하기 위해 앱을 생성할 때 주석을 선택적으로 사용할 수 있습니다. 이는 스냅샷이 발생하기 전에 파일 시스템이 정지되는 KubeVirt 환경과 같이 가상 시스템에서 정의된 애플리케이션에만 적용됩니다. 주석을 로 `true`설정하면 응용 프로그램은 전역 설정을 무시하고 스냅샷 중에 파일 시스템에 쓸 수 있습니다. 로 `false`설정하면 애플리케이션에서 전역 설정을 무시하고 스냅샷 중에 파일 시스템이 고정됩니다. 주석을 사용하지만 응용 프로그램에 가상 머신이 애플리케이션 정의에 없는 경우 주석은 무시됩니다. 주석을 사용하지 않으면 응용 프로그램이 을 "Global Trident Protect Freeze(전체 고정 보호) 설정입니다"따릅니다.
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"]}]'
-