11장. 샘플 애플리케이션 생성

기본 관리 클러스터에서 보조 관리 클러스터로 장애 조치를 테스트하고 다시 간단한 애플리케이션이 필요합니다. 예제로 busybox 라는 샘플 애플리케이션을 사용합니다.

절차

  1. busybox 샘플 애플리케이션에 사용할 Hub 클러스터에 네임스페이스 또는 프로젝트를 생성합니다.

    $ oc new-project busybox-sample
    참고

    원하는 경우 busybox-sample 이외의 다른 프로젝트 이름을 사용할 수 있습니다. 이 단계에서 생성되는 프로젝트 이름과 동일한 프로젝트 이름을 사용하도록 Advanced Cluster Manager 콘솔을 통해 샘플 애플리케이션을 배포할 때 확인합니다.

  2. DRPlacementControl 리소스 만들기

    DRPlacementControl는 OpenShift DR Hub Operator가 Hub 클러스터에 설치된 후 사용할 수 있는 API입니다. DRPolicy의 일부인 클러스터 전체의 데이터 가용성을 기반으로 배치 결정을 조정하는 고급 Cluster Manager PlacementRule 조정기입니다.

    1. Hub 클러스터에서 busybox-sample 프로젝트에서 Installed Operators로 이동하여 OpenShift DR Hub Operator 를 클릭합니다. 두 개의 사용 가능한 API, DRPolicy 및 DRPlacementControl이 표시되어야 합니다.
    2. DRPlacementControl 인스턴스를 만든 다음 YAML 보기로 이동합니다. busybox-sample 프로젝트가 선택되었는지 확인합니다.
    3. < cluster1>을 Advanced Cluster Manager에서 관리 클러스터 의 올바른 이름으로 대체한 후 busybox-drpc.yaml 파일 이름에 다음 YAML을 저장합니다. 원하는 복제 간격이 있는 DRPolicydrPolicyRef 이름을 수정합니다.

      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
    4. 고유한 busybox-drpc.yaml 파일의 콘텐츠를 YAML 보기(원래 콘텐츠 전체 교체)로 복사합니다.
    5. YAML 보기 화면에서 Create(만들기 )를 클릭합니다.

      다음 CLI 명령을 사용하여 이 리소스를 생성할 수도 있습니다.

      $ oc create -f busybox-drpc.yaml -n busybox-sample

      출력 예:

      drplacementcontrol.ramendr.openshift.io/busybox-drpc created
      중요

      이 리소스는 busybox-sample 네임스페이스 또는 이전에 생성한 네임스페이스에서 생성해야 합니다.

  3. 리소스 템플릿을 배포할 수 있는 대상 클러스터를 정의하는 배치 규칙 리소스를 만듭니다. 배치 규칙을 사용하여 애플리케이션의 다중 클러스터 배포를 용이하게 합니다.

    1. 다음 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: ramen
    2. busybox-sample 애플리케이션의 배치 규칙 리소스를 생성합니다.

      $ oc create -f busybox-placementrule.yaml -n busybox-sample

      출력 예:

      placementrule.apps.open-cluster-management.io/busybox-placement created
      중요

      이 리소스는 busybox-sample 네임스페이스 또는 이전에 생성한 네임스페이스에서 생성해야 합니다.

  4. RHACM 콘솔을 사용하여 샘플 애플리케이션 생성

    1. 아직 로그인하지 않은 경우 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
    2. Applications (애플리케이션) 로 이동하여 Create Application(애플리케이션 만들기)을 클릭합니다.
    3. Subscription (서브스크립션)으로 type(유형)을 선택합니다.
    4. 애플리케이션 이름 (예: busybox) 및 네임스페이스 (예: busybox-sample)를 입력합니다.
    5. resources의 Repository location(리포지토리 위치) 섹션에서 Repository type Git(리포지토리 유형 Git )을 선택합니다.
    6. 샘플 애플리케이션의 Git 리포지토리 URL, 리소스 busybox Pod PVC가 생성될 github 분기 및 경로를 입력합니다.

      분기 이며 경로가 busybox-odrhttps://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
    7. 양식을 아래로 스크롤하여 Select an existing placement configuration( 클러스터 선택)을 클릭하고 Select an existing placement configuration (기존 배치 구성 선택)을 클릭합니다.
    8. 드롭다운 목록에서 an Existing Placement Rule (예: busybox-placement)을 선택합니다.
    9. 저장을 클릭합니다.

      후속 화면에서 아래쪽으로 스크롤합니다.On the follow-on screen scroll to the bottom. 애플리케이션 토폴로지에 모든 그린 확인 표시가 있는지 확인해야 합니다.

      참고

      자세한 내용을 보려면 토폴로지 요소 중 하나를 클릭하면 토폴로지 보기 오른쪽에 창이 표시됩니다.

  5. 샘플 애플리케이션 배포 및 복제를 확인합니다.

    busybox 애플리케이션이 기본 클러스터에 배포되었으므로(DRPlacementControl에 지정됨) 배포를 검증할 수 있습니다.

    1. 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
    2. busybox PVC에 대한 복제 리소스도 생성되었는지 확인합니다.

      $ 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
    3. 기본 관리 클러스터와 보조 관리 클러스터에서 다음 명령을 실행하여 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 및 관리되는 클러스터에서 제거할 준비가 될 때까지 실행되지 않아야 합니다.

절차

  1. RHACM 콘솔에서 Applications (애플리케이션)로 이동합니다.
  2. 삭제할 샘플 애플리케이션(예: busybox)을 검색합니다.
  3. 삭제할 애플리케이션 옆에 있는 작업 메뉴(kube) 를 클릭합니다.
  4. Delete application (애플리케이션 삭제)을 클릭합니다.

    애플리케이션을 삭제하면 애플리케이션 관련 리소스도 삭제해야 하는지를 묻는 새 화면이 나타납니다.

  5. Remove application related resources (애플리케이션 관련 리소스 제거) 확인란을 선택하여 Subscription(서브스크립션) 및 PlacementRule(배치)을 삭제합니다.
  6. 삭제를 클릭합니다. 그러면 기본 관리 클러스터(또는 애플리케이션이 실행 중인 모든 클러스터)에서 busybox 애플리케이션이 삭제됩니다.
  7. RHACM 콘솔을 사용하여 삭제된 리소스 외에도 busybox 애플리케이션을 삭제한 직후 DRPlacementControl 도 삭제해야 합니다.

    1. Hub 클러스터의 OpenShift 웹 콘솔에 로그인하고 busybox-sample 프로젝트에 대해 설치된 Operator로 이동합니다.
    2. OpenShift DR Hub Operator 를 클릭한 다음 DRPlacementControl 탭을 클릭합니다.
    3. 삭제할 busybox 애플리케이션 DRPlacementControl 옆에 있는 작업 메뉴(kube) 를 클릭합니다.
    4. Delete DRPlacementControl(DRPlacementControl 삭제)를 클릭합니다.
    5. 삭제를 클릭합니다.
참고

이 프로세스는 DRPlacementControl 리소스로 애플리케이션을 삭제하는 데 사용할 수 있습니다. CLI를 사용하여 애플리케이션 네임스페이스에서도 DRPlacementControl 리소스를 삭제할 수 있습니다.