搜索

第 11 章 创建示例应用程序

download PDF

为了测试从主受管集群到二级受管集群的故障切换,我们需要一个简单的应用程序。使用名为 busybox 的示例应用作为示例。

步骤

  1. 在 Hub 集群上为 busybox 示例应用程序创建一个命名空间项目

    $ oc new-project busybox-sample
    注意

    如果需要,可以使用除 busybox-sample 以外的不同项目名称。在通过 Advanced Cluster Manager 控制台部署示例应用程序时,确保使用与此步骤中创建相同的项目名称。

  2. 创建 DRPlacementControl 资源

    DRPlacementControl 是一个 API,在 Hub 集群上安装 OpenShift DR Hub Operator 后可用。它基本上是一个 Advanced Cluster Manager PlacementRule 协调器,它根据作为 DRPolicy 一部分的集群中的数据可用性来编排放置决策。

    1. 在 Hub 集群中,导航到 busybox-sample 项目中的 Installed Operators,再单击 OpenShift DR Hub Operator。您应该会看到两个可用的 API,DRPolicy 和 DRPlacementControl。
    2. DRPlacementControl 创建一个实例,然后进入 YAML 视图。确保已选中 busybox-sample 项目。
    3. 在将 <cluster1> 替换为 Advanced Cluster Manager 中的受管集群的正确名称后,将以下 YAML 保存到名为 busybox-drpc.yaml 的文件。修改具有所需复制间隔的 DRPolicydrPolicyRef 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
    4. 将唯一 busybox-drpc.yaml 文件的内容复制到 YAML 视图(完全替换原始内容)。
    5. 在 YAML 视图屏幕上点 Create

      您还可以使用以下 CLI 命令创建此资源:

      $ oc create -f busybox-drpc.yaml -n busybox-sample

      输出示例:

      drplacementcontrol.ramendr.openshift.io/busybox-drpc created
      重要

      此资源必须在 busybox-sample 命名空间(或您之前创建的任何命名空间)中创建。

  3. 创建 Placement Rule 资源,以定义可以部署资源模板的目标集群。使用放置规则促进应用程序的多集群部署。

    1. 将以下 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
    2. busybox-sample 应用创建 Placement Rule 资源。

      $ oc create -f busybox-placementrule.yaml -n busybox-sample

      输出示例:

      placementrule.apps.open-cluster-management.io/busybox-placement created
      重要

      此资源必须在 busybox-sample 命名空间(或您之前创建的任何命名空间)中创建。

  4. 使用 RHACM 控制台创建示例应用程序

    1. 如果尚未登录,请使用您的 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
    2. 导航到 Applications,再单击 Create application
    3. 选择类型 Subscription
    4. 输入应用程序 Name (如 busybox)和 Namespace (如 busybox-sample)。
    5. 在 Repository location for resources 部分中,选择 Repository type Git
    6. 输入示例应用程序的 Git 存储库 URL、github BranchPath,在其中创建资源 busybox Pod 和 PVC。

      使用示例应用程序存储库作为 https://github.com/RamenDR/ocm-ramen-samples,其中 BranchmainPathbusybox-odr

      重要

      在继续操作前,确保创建了新的 StorageClass ocs-storagecluster-ceph-rbdmirror,如创建 Mirror StorageClass 资源部分所述。

      使用以下命令验证是否已创建:

      oc get storageclass | grep rbdmirror | awk '{print $1}'

      输出示例:

      ocs-storagecluster-ceph-rbdmirror
    7. 将表单向下滚动到 Select clusters to deploy 部分,然后点击 Select an existing placement configuration
    8. 从下拉列表中选择 现有 Placement Rule (如 busybox-placement)。
    9. 点击 Save

      在下一屏幕上,滚动到底部。您可以看到应用程序拓扑上有所有的绿色对勾图标。

      注意

      要获取更多信息,请点击任何拓扑元素,拓扑视图右侧会显示一个窗口。

  5. 验证示例应用部署和复制。

    现在 busybox 应用程序已部署到首选的集群(在 DRPlacementControl 中指定),可以验证部署。

    1. 登录到您的受管集群,其中 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
    2. 验证是否也为 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
    3. 通过对主受管集群次受管集群运行以下命令,验证 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 和受管集群中删除之前,不应执行示例应用程序的说明。

流程

  1. 在 RHACM 控制台上,前往 Applications
  2. 搜索要删除的示例应用程序(例如 busybox)。
  3. 点击您要删除的应用程序旁边的 Action Menu (⋮)
  4. 点击 Delete application

    选择了 Delete 应用时,将显示一个新屏幕,询问是否还应删除与应用相关的资源。

  5. 选中 Remove application 相关资源复选框,以删除 Subscription 和 PlacementRule。
  6. 单击 Delete。这将删除主受管集群(或应用程序所运行的任何群集)上的 busybox 应用程序。
  7. 除了使用 RHACM 控制台删除资源外,在删除 busybox 应用后,还必须立即删除 DRPlacementControl

    1. 登录到 Hub 集群的 OpenShift Web 控制台,再进入为 busybox-sample 项目安装的 Operators。
    2. 单击 OpenShift DR Hub Operator,然后单击 DRPlacementControl 选项卡。
    3. 点击您要删除的 busybox 应用程序 DRPlacementControl 旁边的 Action Menu (⋮)
    4. 单击 Delete DRPlacementControl
    5. 单击 Delete
注意

此过程可用于使用 DRPlacementControl 资源删除任何应用。也可以使用 CLI,将 DRPlacementControl 资源删除到应用命名空间中。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.