第9章 サンプルアプリケーションの作成
プライマリーマネージドクラスターからセカンダリーマネージドクラスターへのフェイルオーバーをテストし、また元に戻すには、サンプルアプリケーションが必要です。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
にコピーして保存します。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
-
一意の
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
namespace (または先に作成した 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: ramen
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) に作成する必要があります。
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 を入力します。リソース
busybox
Pod および 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 をクリックします。
アプリケーションが作成されると、アプリケーションの詳細ページが表示されます。Resource topology セクションまでスクロールダウンできます。トポロジーの要素とアプリケーションに Green チェックマークが必要です。
注記詳細な情報を表示するには、トポロジー要素のいずれかをクリックすると、トポロジービューの右側にウィンドウが表示されます。
サンプルアプリケーションのデプロイメントおよびレプリケーションを確認します。
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
レプリケーションリソースも
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
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}`
となっているはずです。
9.1. サンプルアプリケーションの削除
RHACM コンソールを使用してサンプルアプリケーション busybox
を削除できます。
手順
- 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 で削除することもできます。