第9章 サンプルアプリケーションの作成

プライマリーマネージドクラスターからセカンダリーマネージドクラスターへのフェイルオーバーをテストし、また元に戻すには、サンプルアプリケーションが必要です。busybox というサンプルアプリケーションを例として使用します。

手順

  1. busybox サンプルアプリケーションのハブクラスターで namespace または プロジェクト を作成します。

    $ oc new-project busybox-sample
    注記

    必要に応じて、busybox-sample 以外のプロジェクト名を使用できます。Advanced Cluster Manager コンソールでサンプルアプリケーションをデプロイする場合は、この手順で作成したものと同じプロジェクト名を使用するようにしてください。

  2. DRPlacementControl リソースを作成します。

    DRPlacementControl は、ハブクラスターに OpenShift DR Hub Operator をインストールした後に利用可能な API です。これは、概説としては、DRPolicy の一部であるクラスター間でのデータ可用性に基づいて配置の決定をオーケストレーションする Advanced Cluster Manager PlacementRule リコンサイラーです。

    1. ハブクラスターで、busybox-sample プロジェクトで Installed Operators に移動し、OpenShift DR Hub Operator をクリックします。2 つの利用可能な API (DRPolicy と DRPlacementControl) が表示されるはずです。
    2. DRPlacementControl のインスタンスを作成してから、YAML ビューに移動します。busybox-sample プロジェクトが選択されていることを確認します。
    3. <cluster1> を Advanced Cluster Manager のマネージドクラスターの正しい名前に置き換えたあと、以下の YAML をファイル名 busybox-drpc.yaml にコピーして保存します。

      apiVersion: ramendr.openshift.io/v1alpha1
      kind: DRPlacementControl
      metadata:
        labels:
          app: busybox-sample
        name: busybox-drpc
      spec:
        drPolicyRef:
          name: odr-policy-5m
        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 namespace (または先に作成した namespace) に作成する必要があります。

  3. リソーステンプレートのデプロイ先のターゲットクラスターを定義する Placement Rule リソースを作成します。配置ルールを使用すると、アプリケーションのマルチクラスターデプロイメントが容易になります。

    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 アプリケーションの PlacementRule リソースを作成します。

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

      出力例:

      placementrule.apps.open-cluster-management.io/busybox-placement created
      重要

      このリソースは、busybox-sample namespace(または先に作成した namespace) に作成する必要があります。

  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を選択します。
    4. アプリケーションの Name (busybox など) および Namespace (busybox-sample など) を入力します。
    5. Repository location for resources セクションで Repository type Git を選択します。
    6. サンプルアプリケーションの github Branch および Path で、 Git リポジトリー URL を入力します。リソース busybox Pod および PVC が作成されます。

      Branchmain で、Pathbusybox-odr である https://github.com/RamenDR/ocm-ramen-samples として、サンプルアプリケーションリポジトリーを使用します。

      重要

      続行する前に、[Create Mirroring StorageClass resource] セクションで説明されているように、新しい StorageClass ocs-storagecluster-ceph-rbdmirror が作成されていることを確認してください。

      次のコマンドを使用して作成されていることを確認します。

      oc get storageclass | grep rbdmirror | awk '{print $1}'

      出力例:

      ocs-storagecluster-ceph-rbdmirror
    7. Select clusters to deploy to セクションまでフォームを下にスクロールして、Select an existing placement configuration をクリックします。
    8. ドロップダウンリストから Existing Placement Rule (busybox-placement など) を選択します。
    9. Save をクリックします。

      アプリケーションが作成されると、アプリケーションの詳細ページが表示されます。Resource topology セクションまでスクロールダウンできます。トポロジーの要素とアプリケーションに Green チェックマークが必要です。

      注記

      詳細な情報を表示するには、トポロジー要素のいずれかをクリックすると、トポロジービューの右側にウィンドウが表示されます。

  5. サンプルアプリケーションのデプロイメントおよびレプリケーションを確認します。

    busybox アプリケーションが (DRPlacementControl で指定された) preferredCluster にデプロイされたので、デプロイメントを検証できるようになりました。

    1. busybox が RHACM によってデプロイされたマネージドクラスターにログオンします。

      $ 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. Primary managed clusterSecondary マネージドクラスター の両方で以下のコマンドを実行して、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}` となっているはずです。

9.1. サンプルアプリケーションの削除

RHACM コンソールを使用してサンプルアプリケーション busybox を削除できます。

手順

  1. RHACM コンソールで、Applications に移動します。
  2. 削除するサンプルアプリケーションを検索します (例: busybox)。
  3. 削除するアプリケーションの横にある Action メニュー (⋮) をクリックします。
  4. Delete application をクリックします。

    Delete application を選択すると、アプリケーション関連のリソースも削除すべきかどうかを求める新規画面が表示されます。

  5. Remove application related resources チェックボックスを選択して、Subscription および PlacementRule を削除します。
  6. Delete をクリックします。これにより、Primary マネージドクラスター (またはアプリケーションが実行しているクラスター) の busybox アプリケーションが削除されます。
  7. RHACM コンソールを使用して削除されたリソースのほかに、busybox アプリケーションの削除直後に DRPlacementControl も削除する必要があります。

    1. ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト busybox-sample の Installed Operators に移動します。
    2. OpenShift DR Hub Operator をクリックした後、DRPlacementControl タブをクリックします。
    3. 削除する busybox アプリケーション DRPlacementControl の横にあるアクションメニュー (⋮) をクリックします。
    4. Delete DRPlacementControl をクリックします。
    5. Delete をクリックします。
注記

このプロセスを使用して、DRPlacementControl リソースでアプリケーションを削除できます。DRPlacementControl リソースは、CLI を使用してアプリケーション namespace で削除することもできます。