×

Argo Rollouts 支持在RolloutManager自定义资源 (CR) 中启用高可用性 (HA)。当您在 Argo Rollouts 中配置高可用性时,Red Hat OpenShift GitOps Operator 会使用RolloutManager CR 中的.spec.ha字段自动将 Argo Rollouts 控制器 Pod 的数量设置为 2。它还会激活领导者选举,允许 Pod 以主动-被动方式运行。单个 Pod 主动管理 Rollouts,而另一个 Pod 保持被动状态,确保额外的副本在节点发生故障时提供冗余和可用性。

此功能使 Rollouts 控制器受益,因为它确保其运行时无需停机或手动干预。它还在计划的维护期间运行,因为第二个副本确保控制器平稳运行。在 Argo Rollouts 中启用高可用性可确保控制器保持可靠和弹性,即使在节点故障或工作负载繁重的情况下也是如此。

Red Hat OpenShift GitOps Operator 还默认确保应用反亲和性规则。尽管这些规则不是用户定义的,但它们确保控制器 Pod 分布在不同的节点上,以避免单点故障,从而提供针对节点故障的弹性。

先决条件
  • 您已以管理员身份登录到 OpenShift Container Platform 集群。

  • 您已在 OpenShift Container Platform 集群上安装了Red Hat OpenShift GitOps

  • 您已在 OpenShift Container Platform 集群上安装了Argo Rollouts

配置 Argo Rollouts 的高可用性

要启用高可用性,请通过完成以下步骤来配置RolloutManager自定义资源 (CR) 中的ha规范

步骤
  1. 以集群管理员身份登录到 OpenShift Container Platform Web 控制台。

  2. 在**管理员**视角中,单击**Operators** → **已安装的 Operators**。

  3. 从**项目**下拉菜单中创建或选择要在其中创建和配置RolloutManager CR 的项目。

  4. 从已安装的 Operators 中选择**Red Hat OpenShift GitOps**。

  5. 在**详细信息**选项卡下的**提供的 API**部分,单击**RolloutManager**窗格中的**创建实例**。

  6. 创建 RolloutManager 页面上,选择YAML 视图并编辑 YAML。

    启用RolloutManager CR 中的ha 字段的示例
    apiVersion: argoproj.io/v1alpha1
    kind: RolloutManager
    metadata:
      name: argo-rollouts
      namespace: openshift-gitops
    spec:
      ha:
        enabled: true (1)
    1 指定是否启用高可用性。如果值设置为true,则启用高可用性。
  7. 点击创建

  8. RolloutManager选项卡下的RolloutManagers 部分,验证 RolloutManager 实例的状态字段是否显示阶段:可用

  9. 通过完成以下步骤来验证 Rollouts 部署的状态

    1. 管理员视角中,点击工作负载部署

    2. 点击argo-rollouts 部署。

    3. 点击详情选项卡并确认 Rollouts 部署中的副本数量现在设置为 2。

    4. 点击YAML选项卡并确认显示以下配置

      Argo Rollouts 部署配置文件示例
      kind: Deployment
      metadata:
        name: argo-rollouts
        namespace: openshift-gitops
      spec:
        replicas: 2 (1)
        selector:
          matchLabels:
            app.kubernetes.io/name: argo-rollouts
        template:
          metadata:
            creationTimestamp: null
            labels:
              app.kubernetes.io/name: argo-rollouts
          spec:
            containers:
                args:
                  - '--leader-elect'
                  - 'true' (2)
      1 指定 Pod 的数量。
      2 指定将--leader-elect=true标志传递给 Rollouts 部署。虽然此标志默认设置为true,但显式设置它可以确保始终强制执行领导者选举。