3.11. 障害復旧ソリューションをテストするためのサンプルアプリケーションを作成する
OpenShift Data Foundation Disaster Recovery (DR) ソリューションは、RHACM によって管理されるサブスクリプションベースおよび ApplicationSet ベースのアプリケーションの障害復旧をサポートします。詳細は、サブスクリプション と ApplicationSet のドキュメントを参照してください。
次のセクションでは、アプリケーションを作成して DRPolicy をアプリケーションに適用する方法について詳しく説明します。
cluster-admin パーミッションを持たない OpenShift ユーザーは、ナレッジ記事 で、障害復旧アクションを実行するために必要なパーミッションをアプリケーションユーザーに割り当てる方法を参照してください。
クラスター管理者権限を持たない OpenShift ユーザーは、ApplicationSet ベースのアプリケーションを作成できません。
3.11.1. サブスクリプションベースのアプリケーション
3.11.1.1. サンプルのサブスクリプションベースのアプリケーションを作成する
プライマリーマネージドクラスター から セカンダリーマネージドクラスター への failover
および relocate
をテストするには、サンプルアプリケーションが必要です。
前提条件
- 一般消費用のアプリケーションを作成する場合は、アプリケーションが 1 つのクラスターのみにデプロイされるようにします。
-
busybox
というサンプルアプリケーションを例として使用します。 - アプリケーションのすべての外部ルートが、アプリケーションがフェイルオーバーまたは再配置されたときのトラフィックリダイレクト用に Global Traffic Manager (GTM) または Global Server Load Balancing (GLSB) サービスを使用して設定されていることを確認します。
ベストプラクティスとして、一緒に属する Red Hat Advanced Cluster Management (RHACM) サブスクリプションをグループ化し、それらをグループとして DR で保護する単一の配置ルールを参照します。さらに、フェイルオーバーや再配置などの将来の DR アクションのために、その配置ルールを、サブスクリプションを論理的にグループ化する単一のアプリケーションとして作成します。
注記関連のないサブスクリプションが配置アクションで同じ配置ルールを参照している場合、配置ルールを参照するすべてのサブスクリプションが DR ワークフローによって制御されるため、これらのサブスクリプションも DR で保護されます。
手順
- ハブクラスターで、Applications に移動し、Create application をクリックします。
- 種類は Subscriptionを選択します。
-
アプリケーションの Name (
busybox
など) および Namespace (busybox-sample
など) を入力します。 -
Repository location for resources セクションで Repository type
Git
を選択します。 サンプルアプリケーションの github Branch および Path で、Git リポジトリー URL を入力します。リソース
busybox
Pod および PVC が作成されます。サンプルアプリケーションリポジトリーに
https://github.com/red-hat-storage/ocm-ramen-samples
を使用します。Branch はrelease-4.16
、Path はbusybox-odr-metro
です。Deploy application resources on clusters with all specified labels が表示されるまで、フォームを下にスクロールします。
- グローバル Cluster sets、またはお使いの環境で、正しいマネージドクラスターが含まれるクラスターを選択します。
- ラベル <name> を追加し、その値を マネージドクラスター 名に設定します。
右上隅にある 作成 をクリックします。
後続の画面で、
Topology
タブに移動します。アプリケーショントポロジーのチェックマークがすべて緑であることが確認できるはずです。注記詳細な情報を表示するには、トポロジー要素のいずれかをクリックすると、トポロジービューの右側にウィンドウが表示されます。
サンプルアプリケーションのデプロイを検証しています。
busybox
アプリケーションが優先クラスターにデプロイされたので、デプロイを検証できます。RHACM によって
busybox
がデプロイされたマネージドクラスターにログインします。$ oc get pods,pvc -n busybox-sample
出力例:
NAME READY STATUS RESTARTS AGE pod/busybox-67bf494b9-zl5tr 1/1 Running 0 77s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/busybox-pvc Bound pvc-c732e5fe-daaf-4c4d-99dd-462e04c18412 5Gi RWO ocs-storagecluster-ceph-rbd 77s
3.11.1.2. サンプルアプリケーションにデータポリシーを適用する
前提条件
- データポリシーで参照される両方のマネージドクラスターがアクセス可能である。そうでない場合、両方のクラスターがオンラインになるまで、アプリケーションが障害復旧で保護されません。
手順
-
ハブクラスターで、All Clusters
Applications に移動します。 - アプリケーションの最後にあるアクションメニューをクリックして、使用可能なアクションのリストを表示します。
-
Manage data policy
Assign data policy をクリックします。 - Policy を選択し、Next をクリックします。
Application resource を選択し、PVC label selector を使用して、選択したアプリケーションリソースの
PVC label
を選択します。注記選択したアプリケーションリソースに対して複数の PVC ラベルを選択できます。Add application resource オプションを使用して、複数のリソースを追加することもできます。
- すべてのアプリケーションリソースを追加したら、Next をクリックします。
-
Policy configuration details
を確認し、Assign をクリックします。新しく割り当てられたデータポリシーがManage data policy
モーダルリストビューに表示されます。 アプリケーションページで、割り当てられたポリシーの詳細を表示できることを確認します。
- アプリケーションページで、Data policy 列に移動し、policy link をクリックしてビューをデプロイメントします。
- 割り当てられたポリシーの数と、フェイルオーバーおよび再配置のステータスが表示されることを確認します。
- View more details をクリックして、アプリケーションで使用されているポリシーによる進行中のアクティビティーのステータスを表示します。
-
DRPolicy をアプリケーションに適用した後、drpc yaml 出力で
ClusterDataProtected
がTrue
に設定されているかどうかを確認します。
3.11.2. ApplicationSet ベースのアプリケーション
3.11.2.1. ApplicationSet ベースのアプリケーションの作成
前提条件
- Red Hat OpenShift GitOps Operator が、ハブクラスター、プライマリーマネージドクラスター、セカンダリーマネージドクラスター の 3 つのクラスターすべてにインストールされている。手順については、Web コンソールでの Red Hat OpenShift GitOps Operator のインストール を参照してください。
ハブクラスターで、プライマリークラスターとセカンダリーマネージドクラスターの両方が GitOps に登録されている。登録手順については、マネージドクラスターの GitOps への登録 を参照してください。次に、
GitOpsCluster
リソースによる両方のマネージドクラスターの登録に使用される Placement に、クラスターが使用不可になった場合に対処するための toleration があるかどうかを確認します。oc get placement <placement-name> -n openshift-gitops -o yaml
コマンドを使用して、次の toleration が Placement に追加されているかどうかを確認できます。tolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: Exists
toleration が追加されていない場合は、Red Hat Advanced Cluster Management および OpenShift GitOps のアプリケーション配置 toleration の設定 を参照してください。
-
プライマリー マネージドクラスターと セカンダリー マネージドクラスターの両方で
ClusterRoleBinding
yaml が作成済みである。手順については、RHACM ドキュメントの前提条件の章 を参照してください。
手順
-
ハブクラスターで、All Clusters
Applications に移動し、Create application をクリックします。 - アプリケーションタイプとして Argo CD ApplicationSet - Pull model を選択します。
- General ステップで、Application set name を入力します。
-
Argo サーバー
openshift-gitops
を選択し、Requeue time を180
秒に設定します。 - Next をクリックします。
-
Repository location for resources セクションで Repository type
Git
を選択します。 サンプルアプリケーションの github Branch および Path で、Git リポジトリー URL を入力します。リソース busybox Pod および PVC が作成されます。
- サンプルアプリケーションリポジトリーに https://github.com/red-hat-storage/ocm-ramen-samples を使用します。
-
Revision に
release-4.16
を選択します。 -
Path に
busybox-odr-metro
を選択します。
- Remote namespace の値 (例: busybox-sample) を入力し、Next をクリックします。
要件に応じて Sync policy 設定を選択するか、デフォルトの選択をそのまま使用して、Next をクリックします。
1 つ以上のオプションを選択できます。
- ラベル式で、ラベル <name> を追加し、その値を マネージドクラスター 名に設定します。
- Next をクリックします。
- 設定の詳細を確認し、Submit をクリックします。
3.11.2.2. ApplicationSet ベースのサンプルアプリケーションにデータポリシーを適用する
前提条件
- データポリシーで参照される両方のマネージドクラスターがアクセス可能である。そうでない場合、両方のクラスターがオンラインになるまで、アプリケーションが障害復旧で保護されません。
手順
-
ハブクラスターで、All Clusters
Applications に移動します。 - アプリケーションの最後にあるアクションメニューをクリックして、使用可能なアクションのリストを表示します。
-
Manage data policy
Assign data policy をクリックします。 - Policy を選択し、Next をクリックします。
Application resource を選択し、PVC label selector を使用して、選択したアプリケーションリソースの
PVC label
を選択します。注記選択したアプリケーションリソースに対して複数の PVC ラベルを選択できます。
- すべてのアプリケーションリソースを追加したら、Next をクリックします。
-
Policy configuration details
を確認し、Assign をクリックします。新しく割り当てられたデータポリシーがManage data policy
モーダルリストビューに表示されます。 アプリケーションページで、割り当てられたポリシーの詳細を表示できることを確認します。
- アプリケーションページで、Data policy 列に移動し、policy link をクリックしてビューをデプロイメントします。
- 割り当てられたポリシーの数と、フェイルオーバーおよび再配置のステータスが表示されることを確認します。
-
DRPolicy をアプリケーションに適用した後、drpc yaml 出力で
ClusterDataProtected
がTrue
に設定されているかどうかを確認します。
3.11.3. サンプルアプリケーションの削除
このセクションでは、RHACM コンソールを使用してサンプルアプリケーションの Busybox
を削除する手順を説明します。
DR で保護されたアプリケーションを削除する場合は、DRPolicy に属する両方のクラスターへのアクセスが必要です。これは、保護されたすべての API リソースと、それぞれの S3 ストア内のリソースが、DR 保護の削除の一環として確実に消去されるようにするためです。いずれかのクラスターへのアクセスが正常でない場合、ハブ上のアプリケーションの DRPlacementControl
リソースを削除すると、Deleting の状態のままになります。
前提条件
- サンプルアプリケーションを削除する手順は、フェイルオーバーと再配置のテストが完了し、アプリケーションを RHACM とマネージドクラスターから削除する準備ができるまで実行しないでください。
手順
- RHACM コンソールで、Applications に移動します。
-
削除するサンプルアプリケーションを検索します (例:
busybox
)。 - 削除するアプリケーションの横にある Action メニュー (⋮) をクリックします。
Delete application をクリックします。
Delete application を選択すると、アプリケーション関連のリソースも削除すべきかどうかを求める新規画面が表示されます。
- Remove application related resources チェックボックスを選択して、Subscription および PlacementRule を削除します。
- Delete をクリックします。これにより、Primary マネージドクラスター (またはアプリケーションが実行しているクラスター) の busybox アプリケーションが削除されます。
RHACM コンソールを使用して削除されたリソースに加えて、
busybox
アプリケーションの削除後にDRPlacementControl
が自動削除されない場合は、DRPlacementControl も削除します。ハブクラスターの OpenShift Web コンソールにログインし、プロジェクト
busybox-sample
の Installed Operators に移動します。ApplicationSet アプリケーションの場合は、プロジェクトを
openshift-gitops
として選択します。- OpenShift DR Hub Operator をクリックした後、DRPlacementControl タブをクリックします。
-
削除する
busybox
アプリケーション DRPlacementControl の横にあるアクションメニュー (⋮) をクリックします。 - Delete DRPlacementControl をクリックします。
- Delete をクリックします。
このプロセスを使用して、DRPlacementControl
リソースでアプリケーションを削除できます。