11장. 샘플 애플리케이션 생성
기본 관리 클러스터에서 보조 관리 클러스터로 장애 조치를 테스트하고 다시 간단한 애플리케이션이 필요합니다. 예제로 busybox 라는 샘플 애플리케이션을 사용합니다.
절차
busybox샘플 애플리케이션에 사용할 Hub 클러스터에 네임스페이스 또는 프로젝트를 생성합니다.$ oc new-project busybox-sample
참고원하는 경우
busybox-sample이외의 다른 프로젝트 이름을 사용할 수 있습니다. 이 단계에서 생성되는 프로젝트 이름과 동일한 프로젝트 이름을 사용하도록 Advanced Cluster Manager 콘솔을 통해 샘플 애플리케이션을 배포할 때 확인합니다.DRPlacementControl 리소스 만들기
DRPlacementControl는 OpenShift DR Hub Operator가 Hub 클러스터에 설치된 후 사용할 수 있는 API입니다. DRPolicy의 일부인 클러스터 전체의 데이터 가용성을 기반으로 배치 결정을 조정하는 고급 Cluster Manager PlacementRule 조정기입니다.
-
Hub 클러스터에서
busybox-sample프로젝트에서 Installed Operators로 이동하여 OpenShift DR Hub Operator 를 클릭합니다. 두 개의 사용 가능한 API, DRPolicy 및 DRPlacementControl이 표시되어야 합니다. -
DRPlacementControl 인스턴스를 만든 다음 YAML 보기로 이동합니다.
busybox-sample프로젝트가 선택되었는지 확인합니다. < cluster1>을 Advanced Cluster Manager에서 관리 클러스터 의 올바른 이름으로 대체한 후
busybox-drpc.yaml파일 이름에 다음 YAML을 저장합니다. 원하는 복제 간격이 있는 DRPolicy 의drPolicyRef이름을 수정합니다.apiVersion: ramendr.openshift.io/v1alpha1 kind: DRPlacementControl metadata: labels: app: busybox-sample name: busybox-drpc spec: drPolicyRef: name: odr-policy-5m ## <-- Modify to specify desired DRPolicy and RPO placementRef: kind: PlacementRule name: busybox-placement preferredCluster: <cluster1> pvcSelector: matchLabels: appname: busybox-
고유한
busybox-drpc.yaml파일의 콘텐츠를 YAML 보기(원래 콘텐츠 전체 교체)로 복사합니다. YAML 보기 화면에서 Create(만들기 )를 클릭합니다.
다음 CLI 명령을 사용하여 이 리소스를 생성할 수도 있습니다.
$ oc create -f busybox-drpc.yaml -n busybox-sample
출력 예:
drplacementcontrol.ramendr.openshift.io/busybox-drpc created
중요이 리소스는
busybox-sample네임스페이스 또는 이전에 생성한 네임스페이스에서 생성해야 합니다.
-
Hub 클러스터에서
리소스 템플릿을 배포할 수 있는 대상 클러스터를 정의하는 배치 규칙 리소스를 만듭니다. 배치 규칙을 사용하여 애플리케이션의 다중 클러스터 배포를 용이하게 합니다.
다음 YAML을 복사하여
busybox-placementrule.yaml파일 이름에 저장합니다.apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: labels: app: busybox-sample name: busybox-placement spec: clusterConditions: - status: "True" type: ManagedClusterConditionAvailable clusterReplicas: 1 schedulerName: ramenbusybox-sample애플리케이션의 배치 규칙 리소스를 생성합니다.$ oc create -f busybox-placementrule.yaml -n busybox-sample
출력 예:
placementrule.apps.open-cluster-management.io/busybox-placement created
중요이 리소스는
busybox-sample네임스페이스 또는 이전에 생성한 네임스페이스에서 생성해야 합니다.
RHACM 콘솔을 사용하여 샘플 애플리케이션 생성
아직 로그인하지 않은 경우 OpenShift 자격 증명을 사용하여 RHACM 콘솔에 로그인합니다.
$ oc get route multicloud-console -n open-cluster-management -o jsonpath --template="https://{.spec.host}/multicloud/applications{'\n'}"출력 예:
https://multicloud-console.apps.perf3.example.com/multicloud/applications
- Applications (애플리케이션) 로 이동하여 Create Application(애플리케이션 만들기)을 클릭합니다.
- Subscription (서브스크립션)으로 type(유형)을 선택합니다.
-
애플리케이션 이름 (예:
busybox) 및 네임스페이스 (예:busybox-sample)를 입력합니다. -
resources의 Repository location(리포지토리 위치) 섹션에서 Repository type
Git(리포지토리 유형Git )을 선택합니다. 샘플 애플리케이션의 Git 리포지토리 URL, 리소스
busyboxPod 및 PVC가 생성될 github 분기 및 경로를 입력합니다.분기 가
주이며 경로가busybox-odr인https://github.com/RamenDR/ocm-ramen-samples샘플 애플리케이션 리포지토리를 사용합니다.중요계속하기 전에 새 StorageClass
ocs-storagecluster-ceph-rbdmirror가 상세한 대로 생성되었는지 확인합니다. https://access.redhat.com/documentation/en-us/red_hat_openshift_data_foundation/4.10/html-single/configuring_openshift_data_foundation_for_regional-dr_with_advanced_cluster_management#proc_creating-mirroring-storageclass-resource_rhodf다음 명령을 사용하여 생성되었는지 확인합니다.
oc get storageclass | grep rbdmirror | awk '{print $1}'출력 예:
ocs-storagecluster-ceph-rbdmirror
- 양식을 아래로 스크롤하여 Select an existing placement configuration( 클러스터 선택)을 클릭하고 Select an existing placement configuration (기존 배치 구성 선택)을 클릭합니다.
-
드롭다운 목록에서 an Existing Placement Rule (예:
busybox-placement)을 선택합니다. 저장을 클릭합니다.
후속 화면에서 아래쪽으로 스크롤합니다.On the follow-on screen scroll to the bottom. 애플리케이션 토폴로지에 모든 그린 확인 표시가 있는지 확인해야 합니다.
참고자세한 내용을 보려면 토폴로지 요소 중 하나를 클릭하면 토폴로지 보기 오른쪽에 창이 표시됩니다.
샘플 애플리케이션 배포 및 복제를 확인합니다.
busybox애플리케이션이 기본 클러스터에 배포되었으므로(DRPlacementControl에 지정됨) 배포를 검증할 수 있습니다.RHACM에서
busybox를 배포한 관리형 클러스터에 로그인합니다.$ oc get pods,pvc -n busybox-sample
출력 예:
NAME READY STATUS RESTARTS AGE pod/busybox 1/1 Running 0 6m NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/busybox-pvc Bound pvc-a56c138a-a1a9-4465-927f-af02afbbff37 1Gi RWO ocs-storagecluster-ceph-rbd 6m
busyboxPVC에 대한 복제 리소스도 생성되었는지 확인합니다.$ oc get volumereplication,volumereplicationgroup -n busybox-sample
출력 예:
NAME AGE VOLUMEREPLICATIONCLASS PVCNAME DESIREDSTATE CURRENTSTATE volumereplication.replication.storage.openshift.io/busybox-pvc 6m odf-rbd-volumereplicationclass busybox-pvc primary Primary NAME AGE volumereplicationgroup.ramendr.openshift.io/busybox-drpc 6m
기본 관리 클러스터와 보조 관리 클러스터에서 다음 명령을 실행하여
busybox볼륨이 대체 클러스터에 복제되었는지 확인합니다.$ oc get cephblockpool ocs-storagecluster-cephblockpool -n openshift-storage -o jsonpath='{.status.mirroringStatus.summary}{"\n"}'출력 예:
{"daemon_health":"OK","health":"OK","image_health":"OK","states":{"replaying":2}}참고두 관리 클러스터 모두 새 상태가
"states":{"replaying":2}'인 것과 정확히 동일해야 합니다.
11.1. 샘플 애플리케이션 삭제
RHACM 콘솔을 사용하여 샘플 애플리케이션 busybox 를 삭제할 수 있습니다.
샘플 애플리케이션을 삭제하는 지침은 장애 조치(failover) 및 실패(relocate) 테스트가 완료되고 애플리케이션이 RHACM 및 관리되는 클러스터에서 제거할 준비가 될 때까지 실행되지 않아야 합니다.
절차
- RHACM 콘솔에서 Applications (애플리케이션)로 이동합니다.
-
삭제할 샘플 애플리케이션(예:
busybox)을 검색합니다. - 삭제할 애플리케이션 옆에 있는 작업 메뉴(kube) 를 클릭합니다.
Delete application (애플리케이션 삭제)을 클릭합니다.
애플리케이션을 삭제하면 애플리케이션 관련 리소스도 삭제해야 하는지를 묻는 새 화면이 나타납니다.
- Remove application related resources (애플리케이션 관련 리소스 제거) 확인란을 선택하여 Subscription(서브스크립션) 및 PlacementRule(배치)을 삭제합니다.
- 삭제를 클릭합니다. 그러면 기본 관리 클러스터(또는 애플리케이션이 실행 중인 모든 클러스터)에서 busybox 애플리케이션이 삭제됩니다.
RHACM 콘솔을 사용하여 삭제된 리소스 외에도
busybox애플리케이션을 삭제한 직후DRPlacementControl도 삭제해야 합니다.-
Hub 클러스터의 OpenShift 웹 콘솔에 로그인하고
busybox-sample프로젝트에 대해 설치된 Operator로 이동합니다. - OpenShift DR Hub Operator 를 클릭한 다음 DRPlacementControl 탭을 클릭합니다.
-
삭제할
busybox애플리케이션 DRPlacementControl 옆에 있는 작업 메뉴(kube) 를 클릭합니다. - Delete DRPlacementControl(DRPlacementControl 삭제)를 클릭합니다.
- 삭제를 클릭합니다.
-
Hub 클러스터의 OpenShift 웹 콘솔에 로그인하고
이 프로세스는 DRPlacementControl 리소스로 애플리케이션을 삭제하는 데 사용할 수 있습니다. CLI를 사용하여 애플리케이션 네임스페이스에서도 DRPlacementControl 리소스를 삭제할 수 있습니다.