Kubernetes 애플리케이션 추가 및 보호
NetApp Backup and Recovery 사용하면 kubeconfig 파일을 생성하고 업로드하지 않고도 Kubernetes 클러스터를 쉽게 검색할 수 있습니다. NetApp Console 사용자 인터페이스에서 복사한 간단한 명령을 사용하여 Kubernetes 클러스터를 연결하고 필요한 소프트웨어를 설치할 수 있습니다.
조직 관리자 또는 SnapCenter 관리자. "NetApp Backup and Recovery 액세스 역할에 대해 알아보세요" . "모든 서비스에 대한 NetApp Console 액세스 역할에 대해 알아보세요." .
새로운 Kubernetes 애플리케이션 추가 및 보호
Kubernetes 애플리케이션을 보호하는 첫 번째 단계는 NetApp Backup and Recovery 내에서 애플리케이션을 만드는 것입니다. 애플리케이션을 만들면 Kubernetes 클러스터에서 실행 중인 애플리케이션을 콘솔에 알리게 됩니다.
Kubernetes 애플리케이션을 추가하고 보호하려면 다음이 필요합니다."Kubernetes 워크로드 검색" .
-
NetApp Backup and Recovery 에서 *인벤토리*를 선택합니다.
-
Kubernetes 인스턴스를 선택하고 *보기*를 선택하여 해당 인스턴스와 연결된 리소스를 확인합니다.
-
응용 프로그램 탭을 선택하세요.
-
*애플리케이션 만들기*를 선택하세요.
-
애플리케이션의 이름을 입력하세요.
-
선택적으로 다음 필드 중 하나를 선택하여 보호하려는 리소스를 검색하세요.
-
연관된 클러스터
-
연관된 네임스페이스
-
리소스 유형
-
라벨 선택기
-
-
선택적으로, 클러스터 수준에서 범위가 지정된 리소스를 선택하려면 *클러스터 범위 리소스*를 선택합니다. 이 리소스를 포함하면 애플리케이션을 생성할 때 해당 리소스가 애플리케이션에 추가됩니다.
-
선택적으로 *검색*을 선택하여 검색 기준에 따라 리소스를 찾으세요.
콘솔은 검색 매개변수나 결과를 저장하지 않습니다. 매개변수는 애플리케이션에 포함될 수 있는 리소스를 선택한 Kubernetes 클러스터에서 검색하는 데 사용됩니다. -
콘솔에는 검색 기준과 일치하는 리소스 목록이 표시됩니다.
-
보호하려는 리소스가 목록에 포함되어 있으면 *다음*을 선택합니다.
-
선택적으로, 정책 영역에서 기존 보호 정책을 선택하여 애플리케이션을 보호하거나 새 정책을 만들 수 있습니다. 정책을 선택하지 않으면 애플리케이션은 보호 정책 없이 생성됩니다. 당신은 할 수 있습니다"보호 정책 추가" 나중에.
-
Prescripts and postscripts 영역에서 백업 작업 전이나 후에 실행하려는 Prescripts 또는 Postscripts 실행 후크를 활성화하고 구성합니다. 사전 스크립트 또는 사후 스크립트를 활성화하려면 이미 하나 이상을 만들어야 합니다."실행 후크 템플릿" .
-
*만들기*를 선택하세요.
애플리케이션이 생성되어 Kubernetes 인벤토리의 애플리케이션 탭에 있는 애플리케이션 목록에 나타납니다. NetApp Console 사용하면 설정에 따라 애플리케이션을 보호할 수 있으며, 백업 및 복구의 모니터링 영역에서 진행 상황을 모니터링할 수 있습니다.
-
타겟 애플리케이션 CR 파일을 생성합니다.
-
사용자 정의 리소스(CR) 파일을 생성하고 이름을 지정합니다(예:
my-app-name.yaml). -
다음 속성을 구성하십시오.
-
metadata.name: (Required) 애플리케이션 사용자 지정 리소스의 이름입니다. 보호 작업에 필요한 다른 CR 파일에서 이 값을 참조하므로 선택한 이름을 기억해 두십시오.
-
spec.includedNamespaces: (필수) 네임스페이스 및 레이블 선택기를 사용하여 애플리케이션에서 사용하는 네임스페이스와 리소스를 지정합니다. 애플리케이션 네임스페이스는 이 목록에 반드시 포함되어야 합니다. 레이블 선택기는 선택 사항이며, 지정된 각 네임스페이스 내의 리소스를 필터링하는 데 사용할 수 있습니다.
-
spec.includedClusterScopedResources: (선택 사항) 이 속성을 사용하여 애플리케이션 정의에 포함할 클러스터 범위 리소스를 지정합니다. 이 속성을 사용하면 그룹, 버전, 종류 및 레이블을 기준으로 이러한 리소스를 선택할 수 있습니다.
-
groupVersionKind: (필수) 클러스터 범위 리소스의 API 그룹, 버전 및 종류를 지정합니다.
-
labelSelector: (선택 사항) 레이블을 기준으로 클러스터 범위 리소스를 필터링합니다.
-
-
-
필요한 경우 다음 주석을 구성하십시오.
-
metadata.annotations.protect.trident.netapp.io/skip-vm-freeze: (선택 사항) 이 어노테이션은 KubeVirt 환경과 같이 스냅샷 전에 파일 시스템이 동결되는 가상 머신에서 정의된 애플리케이션에만 적용됩니다. 이 애플리케이션이 스냅샷 중에 파일 시스템에 쓸 수 있는지 여부를 지정합니다. true로 설정하면 애플리케이션은 전역 설정을 무시하고 스냅샷 중에 파일 시스템에 쓸 수 있습니다. false로 설정하면 애플리케이션은 전역 설정을 무시하고 스냅샷 중에 파일 시스템이 동결됩니다. 지정되었지만 애플리케이션 정의에 가상 머신이 없는 경우 어노테이션은 무시됩니다. 지정하지 않으면 애플리케이션은 "전역 파일 시스템 고정 설정"를 따릅니다.
-
protect.trident.netapp.io/protection-command: (선택 사항) 이 주석을 사용하여 Backup and Recovery에 애플리케이션을 보호하거나 보호를 중지하도록 지시합니다. 가능한 값은
protect또는 `unprotect`입니다. -
protect.trident.netapp.io/protection-policy-name: (선택 사항) 이 어노테이션을 사용하여 이 애플리케이션을 보호하는 데 사용할 NetApp Backup and Recovery 보호 정책의 이름을 지정합니다. 이 보호 정책은 NetApp Backup and Recovery에 이미 존재해야 합니다.
-
-
애플리케이션이 이미 생성된 후에 이 주석을 적용해야 하는 경우 다음 명령을 사용할 수 있습니다.
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"
protect.trident.netapp.io/protection-command: "protect"
protect.trident.netapp.io/protection-policy-name: "policy-name"
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또는 `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"`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 my-app-name.yaml