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 を入力します。リソース
busyboxPod および PVC が作成されます。サンプルアプリケーションリポジトリーを
https://github.com/red-hat-storage/ocm-ramen-samplesとして使用します。Branch はrelease-4.15、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
$ oc get pods,pvc -n busybox-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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 が Hub クラスターにインストールされている。手順は、RHACM のドキュメント を参照してください。
プライマリーとセカンダリーの両方のマネージドクラスターが 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: Existstolerations: - key: cluster.open-cluster-management.io/unreachable operator: Exists - key: cluster.open-cluster-management.io/unavailable operator: ExistsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 許容が追加されない場合は、 Red Hat Advanced Cluster Management および OpenShift GitOps のアプリケーション配置許容範囲の設定 を参照してください。
手順
-
ハブクラスターで、All Clusters
Applications に移動し、Create application をクリックします。 - アプリケーションタイプを Argo CD ApplicationSet - プッシュモデル として選択します
- 一般ステップ 1 で、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.15として選択します。 -
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 リソースでアプリケーションを削除できます。