第 11 章 创建示例应用程序
为了测试从主受管集群到二级受管集群的故障切换
,我们需要一个简单的应用程序。使用名为 busybox
的示例应用作为示例。
步骤
在 Hub 集群上为
busybox
示例应用程序创建一个命名空间或项目。$ oc new-project busybox-sample
注意如果需要,可以使用除
busybox-sample
以外的不同项目名称。在通过 Advanced Cluster Manager 控制台部署示例应用程序时,确保使用与此步骤中创建相同的项目名称。创建 DRPlacementControl 资源
DRPlacementControl 是一个 API,在 Hub 集群上安装 OpenShift DR Hub Operator 后可用。它基本上是一个 Advanced Cluster Manager PlacementRule 协调器,它根据作为 DRPolicy 一部分的集群中的数据可用性来编排放置决策。
-
在 Hub 集群中,导航到
busybox-sample
项目中的 Installed Operators,再单击 OpenShift DR Hub Operator。您应该会看到两个可用的 API,DRPolicy 和 DRPlacementControl。 -
为 DRPlacementControl 创建一个实例,然后进入 YAML 视图。确保已选中
busybox-sample
项目。 在将 <cluster1> 替换为 Advanced Cluster Manager 中的受管集群的正确名称后,将以下 YAML 保存到名为
busybox-drpc.yaml
的文件。修改具有所需复制间隔的 DRPolicy 的drPolicyRef
name。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-sample
命名空间(或您之前创建的任何命名空间)中创建。
-
在 Hub 集群中,导航到
创建 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
应用创建 Placement Rule 资源。$ oc create -f busybox-placementrule.yaml -n busybox-sample
输出示例:
placementrule.apps.open-cluster-management.io/busybox-placement created
重要此资源必须在
busybox-sample
命名空间(或您之前创建的任何命名空间)中创建。
使用 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
。 输入示例应用程序的 Git 存储库 URL、github Branch 和 Path,在其中创建资源
busybox
Pod 和 PVC。使用示例应用程序存储库作为
https://github.com/RamenDR/ocm-ramen-samples
,其中 Branch 是main
,Path 是busybox-odr
。重要在继续操作前,确保创建了新的 StorageClass
ocs-storagecluster-ceph-rbdmirror
,如创建 Mirror StorageClass 资源部分所述。使用以下命令验证是否已创建:
oc get storageclass | grep rbdmirror | awk '{print $1}'
输出示例:
ocs-storagecluster-ceph-rbdmirror
- 将表单向下滚动到 Select clusters to deploy 部分,然后点击 Select an existing placement configuration。
-
从下拉列表中选择 现有 Placement Rule (如
busybox-placement
)。 点击 Save。
在下一屏幕上,滚动到底部。您可以看到应用程序拓扑上有所有的绿色对勾图标。
注意要获取更多信息,请点击任何拓扑元素,拓扑视图右侧会显示一个窗口。
验证示例应用部署和复制。
现在
busybox
应用程序已部署到首选的集群(在 DRPlacementControl 中指定),可以验证部署。登录到您的受管集群,其中
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
通过对主受管集群和次受管集群运行以下命令,验证
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 控制台删除示例 application busybox
。
在故障转移和故障恢复(重复)测试完成以及应用程序已可以从 RHACM 和受管集群中删除之前,不应执行示例应用程序的说明。
流程
- 在 RHACM 控制台上,前往 Applications。
-
搜索要删除的示例应用程序(例如
busybox
)。 - 点击您要删除的应用程序旁边的 Action Menu (⋮)。
点击 Delete application。
选择了 Delete 应用时,将显示一个新屏幕,询问是否还应删除与应用相关的资源。
- 选中 Remove application 相关资源复选框,以删除 Subscription 和 PlacementRule。
- 单击 Delete。这将删除主受管集群(或应用程序所运行的任何群集)上的 busybox 应用程序。
除了使用 RHACM 控制台删除资源外,在删除
busybox
应用后,还必须立即删除DRPlacementControl
。-
登录到 Hub 集群的 OpenShift Web 控制台,再进入为
busybox-sample
项目安装的 Operators。 - 单击 OpenShift DR Hub Operator,然后单击 DRPlacementControl 选项卡。
-
点击您要删除的
busybox
应用程序 DRPlacementControl 旁边的 Action Menu (⋮)。 - 单击 Delete DRPlacementControl。
- 单击 Delete。
-
登录到 Hub 集群的 OpenShift Web 控制台,再进入为
此过程可用于使用 DRPlacementControl
资源删除任何应用。也可以使用 CLI,将 DRPlacementControl
资源删除到应用命名空间中。