第 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
规格:
流程
- 以集群管理员身份登录 OpenShift Container Platform Web 控制台。
-
在 Administrator 视角中,点 Operators
Installed Operators。 -
从 Project 下拉菜单中选择您要创建和配置
RolloutManager
CR 的项目。 - 从安装的 Operator 中选择 Red Hat OpenShift GitOps。
- 在 Details 选项卡中,在 Provided APIs 部分下,点 RolloutManager 窗格中的 Create instance。
在 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
,则启用高可用性。
- 点 Create。
- 在 RolloutManager 选项卡的 RolloutManagers 部分下,验证 RolloutManager 实例的 Status 字段显示为 Phase: Available。
通过完成以下步骤验证 Rollouts 部署的状态:
-
在 Administrator 视角中,点 Workloads
Deployments。 - 单击 argo-rollouts 部署。
- 单击 Details 选项卡,并确认 Rollouts 部署中副本数现在已设置为 2。
点 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
-
在 Administrator 视角中,点 Workloads