4.2. 启用 Argo CD Application Controller 的分片的动态扩展
分片的动态扩展只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,Argo CD Application Controller 将集群分配给分片。如果您使用 循环
分片算法,则这个静态分配可能会导致分片的分布不均匀,特别是在添加或删除副本时。您可以启用动态扩展分片,以便根据给定时间由 Argo CD Application Controller 管理的集群数量自动调整分片数量。这样可确保分片被良好平衡并优化计算资源的使用。
启用动态扩展后,您无法手动修改分片计数。系统根据给定时间由 Argo CD Application Controller 管理的集群数量自动调整分片数量。
4.2.1. 在 web 控制台中启用分片的动态扩展
您可以使用 OpenShift Container Platform Web 控制台启用分片的动态扩展。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps Operator。
流程
-
在 OpenShift Container Platform Web 控制台的 Administator 视角中,进入 Operators
Installed Operators。 - 在 Installed Operators 列表中,选择 Red Hat OpenShift GitOps Operator,然后点 ArgoCD 选项卡。
-
选择您要为其启用分片动态扩展的 Argo CD 实例名称,如
openshift-gitops
。 点 YAML 选项卡,然后编辑并配置
spec.controller.sharding
属性,如下所示:启用动态扩展的 Argo CD YAML 文件示例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: openshift-gitops namespace: openshift-gitops spec: controller: sharding: dynamicScalingEnabled: true 1 minShards: 1 2 maxShards: 3 3 clustersPerShard: 1 4
点击 Save。
此时会出现成功通知警报
openshift-gitops 到版本 <version>
。注意如果编辑默认的
openshift-gitops
实例,则会显示 Managed 资源 对话框。再次单击 Save 以确认更改。
验证
通过检查命名空间中的 pod 数量来验证分片是否已启用:
-
进入 Workloads
StatefulSets。 -
从 Project 下拉列表中选择部署了 Argo CD 实例的命名空间,如
openshift-gitops
。 -
点具有 Argo CD 实例名称的
StatefulSet
对象的名称,如openshift-gitops-apllication-controller
。 -
点 Pods 选项卡,然后验证 pod 的数量等于或大于您在 Argo CD
YAML
文件中设置的minShards
的值。
4.2.2. 使用 CLI 启用分片的动态扩展
您可以使用 OpenShift CLI (oc
)启用分片的动态扩展。
先决条件
- 您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps Operator。
-
您可以使用
cluster-admin
权限访问集群。
流程
-
使用
oc
工具以具有cluster-admin
权限的用户身份登录集群。 运行以下命令来启用动态扩展:
$ oc patch argocd <argocd_instance> -n <namespace> --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":<value>,"maxShards":<value>,"clustersPerShard":<value>}}}}'
示例命令
$ oc patch argocd openshift-gitops -n openshift-gitops --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}}}}' 1
- 1
- 示例命令为
openshift-gitops
命名空间中的openshift-gitops
Argo CD 实例启用动态扩展,并将分片的最小分片数量设置为1
,分片的最大数量设置为3
,每个分片的集群数量设为1
。minShard
和clustersPerShard
的值必须设置为1
或更高。maxShard
的值必须等于或大于minShard
的值。
输出示例
argocd.argoproj.io/openshift-gitops patched
验证
检查 Argo CD 实例的
spec.controller.sharding
属性:$ oc get argocd <argocd_instance> -n <namespace> -o jsonpath='{.spec.controller.sharding}'
示例命令
$ oc get argocd openshift-gitops -n openshift-gitops -o jsonpath='{.spec.controller.sharding}'
启用分片动态扩展时的输出示例
{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}
-
可选:通过检查 OpenShift Container Platform Web 控制台中 Argo CD 实例的配置
YAML
文件中的spec.controller.sharding
属性来验证是否启用了动态扩展。 检查 Argo CD Application Controller pod 的数量:
$ oc get pods -n <namespace> -l app.kubernetes.io/name=<argocd_instance>-application-controller
示例命令
$ oc get pods -n openshift-gitops -l app.kubernetes.io/name=openshift-gitops-application-controller
输出示例
NAME READY STATUS RESTARTS AGE openshift-gitops-application-controller-0 1/1 Running 0 2m 1
- 1
- Argo CD Application Controller pod 的数量必须大于或等于
minShard
的值。