第 8 章 为 Argo Rollouts 启用高可用性支持


Argo Rollouts 支持在 RolloutManager 自定义资源(CR)中启用高可用性(HA)。当您在 Argo Rollouts 中配置高可用性时,Red Hat OpenShift GitOps Operator 会自动使用 RolloutManager CR 中的 .spec.ha 字段为 Argo Rollouts 控制器将 pod 数量设置为 2。它还激活领导选举机制,允许 Pod 在主动 - 被动进程中运行。单个 pod 会主动管理推出部署,而其他 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

8.1. 为 Argo Rollouts 配置高可用性

要启用高可用性,请完成以下步骤,在 RolloutManager 自定义资源(CR)中配置 ha 规格:

流程

  1. 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
  2. Administrator 视角中,点 Operators Installed Operators
  3. Project 下拉菜单中选择您要创建和配置 RolloutManager CR 的项目。
  4. 从安装的 Operator 中选择 Red Hat OpenShift GitOps
  5. Details 选项卡中,在 Provided APIs 部分下,点 RolloutManager 窗格中的 Create instance
  6. Create 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. Create
  8. RolloutManager 选项卡的 RolloutManagers 部分下,验证 RolloutManager 实例的 Status 字段显示为 Phase: Available
  9. 通过完成以下步骤验证 Rollouts 部署的状态:

    1. Administrator 视角中,点 Workloads Deployments
    2. 单击 argo-rollouts 部署。
    3. 单击 Details 选项卡,并确认 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,但明确设置它可确保领导选举保持一致强制执行。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.