apiVersion: argoproj.io/v1alpha1
kind: RolloutManager
metadata:
name: argo-rollouts
namespace: openshift-gitops
spec:
ha:
enabled: true (1)
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。
要启用高可用性,请通过完成以下步骤来配置RolloutManager
自定义资源 (CR) 中的ha
规范
以集群管理员身份登录到 OpenShift Container Platform Web 控制台。
在**管理员**视角中,单击**Operators** → **已安装的 Operators**。
从**项目**下拉菜单中创建或选择要在其中创建和配置RolloutManager
CR 的项目。
从已安装的 Operators 中选择**Red Hat OpenShift GitOps**。
在**详细信息**选项卡下的**提供的 API**部分,单击**RolloutManager**窗格中的**创建实例**。
在创建 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 ,则启用高可用性。 |
点击创建。
在RolloutManager选项卡下的RolloutManagers 部分,验证 RolloutManager 实例的状态字段是否显示阶段:可用。
通过完成以下步骤来验证 Rollouts 部署的状态
在管理员视角中,点击工作负载→部署。
点击argo-rollouts 部署。
点击详情选项卡并确认 Rollouts 部署中的副本数量现在设置为 2。
点击YAML选项卡并确认显示以下配置
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 ,但显式设置它可以确保始终强制执行领导者选举。 |