第11章 サンプルアプリケーションの作成
プライマリーマネージドクラスターからセカンダリーマネージドクラスターへの failover およびフェイルバックをテストするには、単純なアプリケーションが必要です。busybox というサンプルアプリケーションを例として使用します。
手順
busyboxサンプルアプリケーションのハブクラスターで namespace または プロジェクト を作成します。$ oc new-project busybox-sample
注記必要に応じて、
busybox-sample以外のプロジェクト名を使用できます。Advanced Cluster Manager コンソールでサンプルアプリケーションをデプロイする場合は、この手順で作成したものと同じプロジェクト名を使用するようにしてください。DRPlacementControl リソースを作成します。
DRPlacementControl は、ハブクラスターに OpenShift DR Hub Operator をインストールした後に利用可能な API です。これは、概説としては、DRPolicy の一部であるクラスター間でのデータ可用性に基づいて配置の決定をオーケストレーションする Advanced Cluster Manager PlacementRule リコンサイラーです。
-
ハブクラスターで、
busybox-sampleプロジェクトで Installed Operators に移動し、OpenShift DR Hub Operator をクリックします。2 つの利用可能な API (DRPolicy と DRPlacementControl) が表示されるはずです。 -
DRPlacementControl のインスタンスを作成してから、YAML ビューに移動します。
busybox-sampleプロジェクトが選択されていることを確認します。 <cluster1> を Advanced Cluster Manager のマネージドクラスターの正しい名前に置き換えたあと、以下の YAML をファイル名
busybox-drpc.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-samplenamespace (または先に作成した namespace) に作成する必要があります。
-
ハブクラスターで、
リソーステンプレートのデプロイ先のターゲットクラスターを定義する Placement Rule リソースを作成します。配置ルールを使用すると、アプリケーションのマルチクラスターデプロイメントが容易になります。
以下の 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アプリケーションの PlacementRule リソースを作成します。$ oc create -f busybox-placementrule.yaml -n busybox-sample
出力例:
placementrule.apps.open-cluster-management.io/busybox-placement created
重要このリソースは、
busybox-samplenamespace (または先に作成した namespace) に作成する必要があります。
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を選択します。
-
アプリケーションの Name (
busyboxなど) および Namespace (busybox-sampleなど) を入力します。 -
Repository location for resources セクションで Repository type
Gitを選択します。 サンプルアプリケーションの github Branch および Path で、 Git リポジトリー URL を入力します。リソース
busyboxPod および PVC が作成されます。Branch が
mainで、Path はbusybox-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
- Select clusters to deploy to セクションまでフォームを下にスクロールして、Select an existing placement configuration をクリックします。
-
ドロップダウンリストから Existing Placement Rule (
busybox-placementなど) を選択します。 Save をクリックします。
次に表示される画面で下部までスクロールします。アプリケーショントポロジーのチェックマークがすべて緑であることが確認できるはずです。
注記詳細な情報を表示するには、トポロジー要素のいずれかをクリックすると、トポロジービューの右側にウィンドウが表示されます。
サンプルアプリケーションのデプロイメントおよびレプリケーションを確認します。
busyboxアプリケーションが (DRPlacementControl で指定された) preferredCluster にデプロイされたので、デプロイメントを検証できるようになりました。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
レプリケーションリソースも
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
Primary managed cluster と Secondary マネージドクラスター の両方で以下のコマンドを実行して、
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 を削除できます。
サンプルアプリケーションを削除する手順は、フェイルオーバーとフォールバック (再配置) のテストが完了し、アプリケーションを RHACM とマネージドクラスターから削除する準備ができるまで実行しないでください。
手順
- RHACM コンソールで、Applications に移動します。
-
削除するサンプルアプリケーションを検索します (例:
busybox)。 - 削除するアプリケーションの横にある Action メニュー (⋮) をクリックします。
Delete application をクリックします。
Delete application を選択すると、アプリケーション関連のリソースも削除すべきかどうかを求める新規画面が表示されます。
- Remove application related resources チェックボックスを選択して、Subscription および PlacementRule を削除します。
- Delete をクリックします。これにより、Primary マネージドクラスター (またはアプリケーションが実行しているクラスター) の busybox アプリケーションが削除されます。
RHACM コンソールを使用して削除されたリソースのほかに、
busyboxアプリケーションの削除直後にDRPlacementControlも削除する必要があります。-
ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト
busybox-sampleの Installed Operators に移動します。 - OpenShift DR Hub Operator をクリックした後、DRPlacementControl タブをクリックします。
-
削除する
busyboxアプリケーション DRPlacementControl の横にあるアクションメニュー (⋮) をクリックします。 - Delete DRPlacementControl をクリックします。
- Delete をクリックします。
-
ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト
このプロセスを使用して、DRPlacementControl リソースでアプリケーションを削除できます。DRPlacementControl リソースは、CLI を使用してアプリケーション namespace で削除することもできます。