声明性集群配置
使用 OpenShift GitOps 配置 OpenShift 集群,并使用 GitOps CLI 在默认和代码模式中创建并同步应用程序
摘要
第 1 章 通过部署带有集群配置的应用程序来配置 OpenShift 集群 复制链接链接已复制到粘贴板!
使用 Red Hat OpenShift GitOps,您可以将 Argo CD 配置为将 Git 目录的内容与包含集群自定义配置的应用程序递归同步。
1.1. 先决条件 复制链接链接已复制到粘贴板!
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
1.2. 使用 Argo CD 实例管理集群范围的资源 复制链接链接已复制到粘贴板!
要管理集群范围的资源,请更新 Red Hat OpenShift GitOps Operator 的现有 Subscription
对象,并将 Argo CD 实例的命名空间添加到 spec
部分中的 ARGOCD_CLUSTER_CONFIG_NAMESPACES
环境变量中。
流程
- 在 Web 控制台的 Administrator 视角中,进入到 Operators → Installed Operators → Red Hat OpenShift GitOps → Subscription。
- 单击 Actions 列表,然后单击 Edit Subscription。
在 openshift-gitops-operator 订阅详情页面的 YAML 选项卡下,通过将 Argo CD 实例的命名空间添加到
spec
部分中的ARGOCD_CLUSTER_CONFIG_NAMESPACES
环境变量来编辑Subscription
YAML 文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 单击 Save and Reload。
要验证 Argo CD 实例是否已配置有集群角色来管理集群范围的资源,请执行以下步骤:
- 导航到 User Management → Roles,然后从 Filter 列表中选择 Cluster-wide Roles。
使用 Search by name 字段搜索
argocd-application-controller
。Roles 页面显示创建的集群角色。
提示或者,在 OpenShift CLI 中运行以下命令:
oc auth can-i create oauth -n openshift-gitops --as system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controller
oc auth can-i create oauth -n openshift-gitops --as system:serviceaccount:openshift-gitops:openshift-gitops-argocd-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出
yes
代表 Argo 实例配置了集群角色来管理集群范围的资源。否则,检查您的配置并根据需要执行必要的步骤。
1.3. Argo CD 实例的默认权限 复制链接链接已复制到粘贴板!
默认情况下,Argo CD 实例具有以下权限:
-
Argo CD 实例具有
admin
权限,以便仅管理部署它的命名空间中的资源。例如,在 foo 命名空间中部署的 Argo CD 实例具有admin
权限,仅管理该命名空间的资源。 Argo CD 具有以下集群范围的权限,因为 Argo CD 需要对资源进行集群范围的
读取
权限才能正常工作:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以编辑运行 Argo CD 的
argocd-server
和argocd-application-controller
组件使用的集群角色,以便写入
权限仅限于您希望 Argo CD 管理的命名空间和资源。oc edit clusterrole argocd-server oc edit clusterrole argocd-application-controller
$ oc edit clusterrole argocd-server $ oc edit clusterrole argocd-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 在集群级别运行 Argo CD 实例 复制链接链接已复制到粘贴板!
默认 Argo CD 实例和附带的控制器(由 Red Hat OpenShift GitOps Operator 安装)现在可以通过设置一个简单的配置切换在集群的基础架构节点上运行。
流程
标记现有节点:
oc label node <node-name> node-role.kubernetes.io/infra=""
$ oc label node <node-name> node-role.kubernetes.io/infra=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果需要,您还可以在基础架构节点上应用污点并隔离工作负载,并防止其他工作负载在这些节点上调度:
oc adm taint nodes -l node-role.kubernetes.io/infra \ infra=reserved:NoSchedule infra=reserved:NoExecute
$ oc adm taint nodes -l node-role.kubernetes.io/infra \ infra=reserved:NoSchedule infra=reserved:NoExecute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
GitOpsService
自定义资源中添加runOnInfra
切换:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果将污点添加到节点,则将
容限
添加到GitOpsService
自定义资源中。Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过在控制台 UI 中查看 Pods → Pod details,验证
openshift-gitops
命名空间中的工作负载现在已调度到基础架构节点上。
任何手工添加到默认 Argo CD 自定义资源中的 nodeSelectors
和 tolerations
,都会被 GitOpsService
自定义资源的 tolerations
覆盖。
1.5. 使用 Argo CD 仪表板创建应用程序 复制链接链接已复制到粘贴板!
Argo CD 提供了一个仪表板,供您创建应用程序。
此示例工作流逐步指导您完成将 Argo CD 配置为递归将 cluster
目录中的内容同步到 cluster-configs-
应用程序。目录定义了 OpenShift Container Platform Web 控制台集群配置,在 web 控制台中的
菜单下向 Red Hat Developer Blog - Kubernetes 添加链接,并在集群中定义命名空间
spring-petclinic
。
先决条件
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
- 已登陆到 Argo CD 实例。
流程
- 在 Argo CD 控制面板中,单击 NEW APP 以添加新 Argo CD 应用。
对于此工作流,使用以下配置创建一个 cluster-configs 应用程序:
- 应用程序名称
-
cluster-configs
- project
-
default
- 同步策略
-
Manual(手动)
- 仓库 URL
-
https://github.com/redhat-developer/openshift-gitops-getting-started
- 修订
-
HEAD
- 路径
-
cluster
- 目的地
-
https://kubernetes.default.svc
- 命名空间
-
spring-petclinic
- Directory Recurse
-
checked
- 单击 CREATE 以创建应用程序。
- 打开 Web 控制台的 Administrator 视角,再展开 Administration → Namespaces。
-
搜索并选择命名空间,然后在 Label 字段中输入
argocd.argoproj.io/managed-by=openshift-gitops
,以便openshift-gitops
命名空间中的 Argo CD 实例可以管理您的命名空间。
1.6. 使用 oc 工具创建应用程序 复制链接链接已复制到粘贴板!
您可以使用 oc
工具在终端中创建 Argo CD 应用程序。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
- 已登陆到 Argo CD 实例。
流程
下载 示例应用程序:
git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
$ git clone git@github.com:redhat-developer/openshift-gitops-getting-started.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建应用程序:
oc create -f openshift-gitops-getting-started/argo/app.yaml
$ oc create -f openshift-gitops-getting-started/argo/app.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
oc get
命令以查看所创建的应用程序:oc get application -n openshift-gitops
$ oc get application -n openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在部署应用程序的命名空间中添加标签,以便
openshift-gitops
命名空间中的 Argo CD 实例可以管理它:oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
$ oc label namespace spring-petclinic argocd.argoproj.io/managed-by=openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. 使用 GitOps CLI 在默认模式中创建应用程序 复制链接链接已复制到粘贴板!
您可以使用 GitOps argocd
CLI 在默认模式中创建应用程序。
此示例工作流逐步指导您完成将 Argo CD 配置为递归将 cluster
目录中的内容同步到 cluster-configs-
应用程序。目录定义 OpenShift Container Platform 集群配置和集群中的 spring-petclinic
命名空间。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
-
已安装 OpenShift CLI(
oc
)。 -
已安装 Red Hat OpenShift GitOps
argocd
CLI。 - 已登陆到 Argo CD 实例。
流程
获取 Argo CD 服务器的
admin
帐户密码:ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
$ ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 Argo CD 服务器 URL:
SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
$ SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
admin
帐户密码并用单引号括起来来登录到 Argo CD 服务器:重要用单引号括起密码可确保 shell 不会误解特殊字符,如
$
。始终使用单引号括起密码的字面值。argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
$ argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
$ argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过列出所有应用程序,验证您是否可以在默认模式下运行
argocd
命令:argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,则现有应用程序将使用以下标头列出:
输出示例
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以默认模式创建应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 标记
spring-petclinic
目标命名空间,使其由openshif-gitops
Argo CD 实例管理:oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的应用程序,以确认应用程序是否已成功创建:
argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 虽然
cluster-configs
Argo CD 应用程序具有Healthy
状态,但它不会因为没有
同步策略而自动同步,从而导致它处于OutOfSync
状态。
1.8. 使用 GitOps CLI 以核心模式创建应用程序 复制链接链接已复制到粘贴板!
您可以使用 GitOps argocd
CLI 在 core
模式中创建应用程序。
此示例工作流逐步指导您完成将 Argo CD 配置为递归将 cluster
目录中的内容同步到 cluster-configs-
应用程序。目录定义 OpenShift Container Platform 集群配置和集群中的 spring-petclinic
命名空间。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
-
已安装 OpenShift CLI(
oc
)。 -
已安装 Red Hat OpenShift GitOps
argocd
CLI。
流程
使用
oc
CLI 工具登录到 OpenShift Container Platform 集群:oc login -u <username> -p <password> <server_url>
$ oc login -u <username> -p <password> <server_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
$ oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
kubeconfig
文件中是否正确设置了上下文:oc config current-context
$ oc config current-context
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将当前上下文的默认命名空间设置为
openshift-gitops
:oc config set-context --current --namespace openshift-gitops
$ oc config set-context --current --namespace openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置以下环境变量来覆盖 Argo CD 组件名称:
export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
$ export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过列出所有应用程序,验证您是否可以在
core
模式下运行argocd
命令:argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,则现有应用程序将使用以下标头列出:
输出示例
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以
core
模式创建应用程序:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 标记
spring-petclinic
目标命名空间,使其由openshif-gitops
Argo CD 实例管理:oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
$ oc label ns spring-petclinic "argocd.argoproj.io/managed-by=openshift-gitops"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出可用的应用程序,以确认应用程序是否已成功创建:
argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 虽然
cluster-configs
Argo CD 应用程序具有Healthy
状态,但它不会因为没有
同步策略而自动同步,从而导致它处于OutOfSync
状态。
1.9. 将应用程序与 Git 存储库同步 复制链接链接已复制到粘贴板!
您可以通过修改 Argo CD 的同步策略,将应用程序与 Git 存储库同步。策略修改会自动将集群配置的更改从 Git 存储库应用到集群。
流程
- 在 Argo CD 仪表板中,cluster-configs Argo CD 应用程序的状态为 Missing 和 OutOfSync。因为应用程序配置了手动同步策略,所以 Argo CD 不会自动同步。
- 点 cluster-configs 标题上的 SYNC,查看更改,然后点 SYNCHRONIZE。Argo CD 将自动检测 Git 存储库中的任何更改。如果更改了配置,Argo CD 会将 cluster-configs 的状态改为 OutOfSync。您可以修改 Argo CD 的同步策略,以自动将 Git 存储库中的更改应用到集群。
- 现在,cluster-configs Argo CD 应用程序的状态为 Healthy 和 Synced。点 cluster-configs 标题检查同步资源的详情及其在集群中的状态。
-
进入到 OpenShift Container Platform Web 控制台并点击
以验证 Red Hat Developer Blog - Kubernetes 的链接现在是否存在。
导航到 Project 页面并搜索
spring-petclinic
命名空间,以验证它是否已添加到集群中。集群配置已成功与集群同步。
1.10. 使用 GitOps CLI 以默认模式同步应用程序 复制链接链接已复制到粘贴板!
您可以使用 GitOps argocd
CLI 在默认模式下同步应用程序。
此示例工作流逐步指导您完成将 Argo CD 配置为递归将 cluster
目录中的内容同步到 cluster-configs-
应用程序。目录定义 OpenShift Container Platform 集群配置和集群中的 spring-petclinic
命名空间。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
- 已登陆到 Argo CD 实例。
-
已安装 OpenShift CLI(
oc
)。 -
已安装 Red Hat OpenShift GitOps
argocd
CLI。
流程
获取 Argo CD 服务器的
admin
帐户密码:ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
$ ADMIN_PASSWD=$(oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 Argo CD 服务器 URL:
SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
$ SERVER_URL=$(oc get routes openshift-gitops-server -n openshift-gitops -o jsonpath='{.status.ingress[0].host}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
admin
帐户密码并用单引号括起来来登录到 Argo CD 服务器:重要用单引号括起密码可确保 shell 不会误解特殊字符,如
$
。始终使用单引号括起密码的字面值。argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
$ argocd login --username admin --password ${ADMIN_PASSWD} ${SERVER_URL}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
$ argocd login --username admin --password '<password>' openshift-gitops.openshift-gitops.apps-crc.testing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因为应用程序配置了
none
同步策略,所以您必须手动触发同步操作:argocd app sync openshift-gitops/app-cluster-configs
$ argocd app sync openshift-gitops/app-cluster-configs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出应用程序,以确认应用程序具有
Healthy
和Synced
状态:argocd app list
$ argocd app list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.11. 使用 GitOps CLI 以核心模式同步应用程序 复制链接链接已复制到粘贴板!
您可以使用 GitOps argocd
CLI 在 core
模式中同步应用程序。
此示例工作流逐步指导您完成将 Argo CD 配置为递归将 cluster
目录中的内容同步到 cluster-configs-
应用程序。目录定义 OpenShift Container Platform 集群配置和集群中的 spring-petclinic
命名空间。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift GitOps Operator。
-
已安装 OpenShift CLI(
oc
)。 -
已安装 Red Hat OpenShift GitOps
argocd
CLI。
流程
使用
oc
CLI 工具登录到 OpenShift Container Platform 集群:oc login -u <username> -p <password> <server_url>
$ oc login -u <username> -p <password> <server_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
$ oc login -u kubeadmin -p '<password>' https://api.crc.testing:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
kubeconfig
文件中是否正确设置了上下文:oc config current-context
$ oc config current-context
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将当前上下文的默认命名空间设置为
openshift-gitops
:oc config set-context --current --namespace openshift-gitops
$ oc config set-context --current --namespace openshift-gitops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置以下环境变量来覆盖 Argo CD 组件名称:
export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
$ export ARGOCD_REPO_SERVER_NAME=openshift-gitops-repo-server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因为应用程序配置了
none
同步策略,所以您必须手动触发同步操作:argocd app sync --core openshift-gitops/app-cluster-configs
$ argocd app sync --core openshift-gitops/app-cluster-configs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出应用程序,以确认应用程序具有
Healthy
和Synced
状态:argocd app list --core
$ argocd app list --core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.12. 集群配置的内置权限 复制链接链接已复制到粘贴板!
默认情况下,Argo CD 实例具有管理特定集群范围资源的权限,如集群 Operator、可选 OLM Operator 和用户管理。
Argo CD 没有 cluster-admin 权限。
Argo CD 实例的权限:
Resources | 描述 |
---|---|
资源组 | 配置用户或管理员 |
| 由 OLM 管理的可选 Operator |
| 组、用户及其权限 |
| 由 CVO 管理的 control plane Operator,用于配置集群范围的构建配置、registry 配置和调度程序策略 |
| Storage |
| 控制台自定义 |
1.13. 为集群配置添加权限 复制链接链接已复制到粘贴板!
您可以授予 Argo CD 实例的权限来管理集群配置。创建具有额外权限的集群角色,然后创建新的集群角色绑定以将集群角色与服务帐户关联。
先决条件
-
您可以使用
cluster-admin
权限访问 OpenShift Container Platform 集群,并登录到 web 控制台。 - 在集群中安装了 Red Hat OpenShift GitOps Operator。
流程
在 Web 控制台中,选择 User Management → Roles → Create Role。使用以下
ClusterRole
YAML 模板来添加规则来指定额外权限。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create 添加集群角色。
- 要创建集群角色绑定,请选择 User Management → Role Bindings → Create Binding。
- 从 Project 列表中选择 All Projects。
- 点 Create binding。
- 将 Binding type 选择为 Cluster-wide role binding(ClusterRoleBinding)。
- 为 RoleBinding 名称 输入一个唯一值。
- 从下拉列表中选择新创建的集群角色或现有集群角色。
选择 Subject 作为 ServiceAccount,并提供 Subject 命名空间和名称。
-
主题命名空间:
openshift-gitops
主题名称:
openshift-gitops-argocd-application-controller
注意Subject name 的值取决于您要为其创建集群角色和集群角色绑定的 GitOps control plane 组件。
-
主题命名空间:
点 Create。
ClusterRoleBinding
对象的 YAML 文件如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.14. 使用 Red Hat OpenShift GitOps 安装 OLM Operator 复制链接链接已复制到粘贴板!
带有集群配置的 Red Hat OpenShift GitOps 管理特定集群范围的资源,并负责安装集群 Operator 或任何命名空间范围的 OLM Operator。
考虑作为集群管理员的情况,您必须安装 OLM Operator,如 Tekton。您可以使用 OpenShift Container Platform Web 控制台手动安装 Tekton Operator 或 OpenShift CLI,在集群中手动安装 Tekton 订阅和 Tekton Operator 组。
Red Hat OpenShift GitOps 将 Kubernetes 资源放置在 Git 存储库中。作为集群管理员,使用 Red Hat OpenShift GitOps 管理和自动化其他 OLM Operator 安装,而无需手动步骤。例如,在使用 Red Hat OpenShift GitOps 将 Tekton 订阅放在 Git 仓库后,Red Hat OpenShift GitOps 会自动从 Git 仓库获取此 Tekton 订阅,并在集群中安装 Tekton Operator。
1.14.1. 安装集群范围的 Operator 复制链接链接已复制到粘贴板!
Operator Lifecycle Manager (OLM) 为集群范围的 Operator 使用 openshift-operators
命名空间中的默认 global-operators
Operator 组。因此,您不必在 Gitops 仓库中管理 OperatorGroup
资源。但是,对于命名空间范围的 Operator,您必须管理该命名空间中的 OperatorGroup
资源。
要安装集群范围的 Operator,请在 Git 仓库中创建并放置所需 Operator 的 Subscription
资源。
示例:Grafana Operator 订阅
1.14.2. 安装 namepace-scoped Operator 复制链接链接已复制到粘贴板!
要安装命名空间范围的 Operator,请在 Git 仓库中创建并放置所需 Operator 的 Subscription
和 OperatorGroup
资源。
示例:Ansible Automation Platform Resource Operator
当使用 Red Hat OpenShift GitOps 部署多个 Operator 时,您必须在对应的命名空间中创建单个 Operator 组。如果一个命名空间中存在多个 Operator 组,则在该命名空间中创建的任何 CSV 都会变为带有 TooManyOperatorGroups
原因的 failure
状态。在相应命名空间中的 Operator 组数量达到一个后,所有以前有 failure
状态的 CSV 都会过渡到 pending
状态。您需要手动批准待处理的安装计划以完成 Operator 安装。
第 2 章 通过为集群范围的实例创建用户定义的集群角色来自定义权限 复制链接链接已复制到粘贴板!
对于默认的集群范围的实例,Red Hat OpenShift GitOps Operator 授予管理特定集群范围资源的额外权限。因此,作为集群管理员,当您将 Argo CD 部署为集群范围的实例时,Operator 会为 GitOps control plane 组件创建额外的集群角色和集群角色绑定。这些集群角色和集群角色绑定提供了 Argo CD 在集群级别操作的额外权限。
如果您不希望集群范围的实例具有所有 Operator-given 权限,并选择向集群范围资源添加或删除权限,您必须首先禁用为集群范围的实例创建默认集群角色。然后,您可以为以下集群范围的实例自定义权限:
- 默认 ArgoCD 实例(默认集群范围的实例)
- 用户定义的集群范围的 Argo CD 实例
本指南提供了一些示例,可帮助您创建用户定义的集群范围的 Argo CD 实例,在定义的命名空间中部署 Argo CD 应用程序,其中包含集群的自定义配置,禁用为集群范围的实例创建默认集群角色,并通过为 GitOps control plane 组件创建新的集群角色来自定义权限。
作为开发者,如果您要创建 Argo CD 应用程序并部署集群范围的资源,请确保集群管理员为它们授予必要的权限。
否则,在 Argo CD 协调后,您将在应用程序的 Status
字段中看到与以下示例类似的身份验证错误消息:
身份验证错误消息示例
persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.
persistentvolumes is forbidden: User "system:serviceaccount:gitops-demo:argocd-argocd-application-controller" cannot create resource "persistentvolumes" in API group "" at the cluster scope.
2.1. 先决条件 复制链接链接已复制到粘贴板!
- 您已在 OpenShift Container Platform 集群上安装 Red Hat OpenShift GitOps 1.13.0 或更高版本。
-
已安装 OpenShift CLI(
oc
)。 -
已安装 Red Hat OpenShift GitOps
argocd
CLI。 -
您已在定义的命名空间中安装了 集群范围的 Argo CD 实例。例如,
spring-petclinic
命名空间。 您已验证了用户定义的集群范围的实例配置了以下组件的集群角色和集群角色绑定:
- Argo CD Application Controller
- Argo CD 服务器
- Argo CD ApplicationSet Controller (提供 ApplicationSet Controller 会被创建)
您已使用
spring-petclinic
命名空间中的customclusterrole
路径 部署了cluster-configs
Argo CD 应用程序,并创建了test-gitops-ns
命名空间和test-gitops-pv
持久性卷资源。注意cluster-configs
Argo CD 应用程序必须由用户定义的集群范围的实例管理,并设置以下参数:-
selfHeal
字段值设为true
-
syncPolicy
字段值设置为automated
-
Label 字段设置为
app.kubernetes.io/part-of=argocd
值 -
Label 字段设置为
argocd.argoproj.io/managed-by=<user_defined_namespace
> 值,以便定义的命名空间中的 Argo CD 实例可以管理您的命名空间 -
Label 字段被设置为
app.kubernetes.io/name=<user_defined_argocd_instance>
值
-
2.2. 禁用为集群范围的实例创建默认集群角色 复制链接链接已复制到粘贴板!
要根据需要为集群范围的资源添加或删除权限,您必须通过编辑 Argo CD 自定义资源(CR)的 YAML 文件来禁用为集群范围的实例创建默认集群角色。
流程
在 Argo CD CR 中,将
.spec.defaultClusterScopedRoleDisabled
字段的值设置为true
:Argo CD CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
argocd.argoproj.io/example configured
argocd.argoproj.io/example configured
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 Red Hat OpenShift GitOps Operator 是否已删除 GitOps control plane 组件的默认集群角色和集群角色绑定:
oc get ClusterRoles/<argocd_name>-<argocd_namespace>-<control_plane_component>
$ oc get ClusterRoles/<argocd_name>-<argocd_namespace>-<control_plane_component>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ClusterRoleBindings/<argocd_name>-<argocd_namespace>-<control_plane_component>
$ oc get ClusterRoleBindings/<argocd_name>-<argocd_namespace>-<control_plane_component>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
No resources found
No resources found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 不创建集群范围的实例的默认集群角色和集群角色绑定。作为集群管理员,您可以通过为 GitOps control plane 组件创建新集群角色和集群角色绑定来为集群范围的实例创建和自定义权限。
2.3. 自定义集群范围的实例的权限 复制链接链接已复制到粘贴板!
作为集群管理员,若要自定义集群范围的实例的权限,您必须为 GitOps control plane 组件创建新的集群角色和集群角色绑定。
例如,以下说明仅侧重于用户定义的集群范围的实例。
流程
- 打开 Web 控制台的 Administrator 视角,再进入 User Management → Roles → Create Role。
使用以下
ClusterRole
YAML 模板来添加规则来指定额外权限。集群角色 YAML 模板示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create 添加集群角色。
通过执行以下步骤查找您要自定义权限的 control plane 组件使用的服务帐户:
- 进入 Workloads → Pods。
- 从 Project 列表中,选择安装用户定义的集群范围实例的项目。
- 点 control plane 组件的 pod,再进入 YAML 选项卡。
-
找到
spec.ServiceAccount
字段并记录服务帐户。
- 进入 User Management → RoleBindings → Create binding。
- 点 Create binding。
- 将 Binding type 选择为 Cluster-wide role binding(ClusterRoleBinding)。
- 按照 <argocd_ name>-<argocd_namespace>-<control_plane_component> 命名约定输入 RoleBinding 名称的唯一值。
- 从 Role name 的下拉列表中,选择新创建的集群角色。
选择 Subject 作为 ServiceAccount,并提供 Subject 命名空间和名称。
-
主题命名空间 :
spring-petclinic
主题名称:
example-argocd-application-controller
注意对于 Subject name,请确保配置的值与您要自定义权限的 control plane 组件的
spec.ServiceAccount
字段的值相同。
-
主题命名空间 :
点 Create。
您已为 control plane 组件的服务帐户和命名空间创建了所需的权限。
ClusterRoleBinding
对象的 YAML 文件类似以下示例:集群角色绑定的 YAML 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 在 Argo CD Application Controller 副本间分片集群 复制链接链接已复制到粘贴板!
如果控制器管理太多集群并使用太多内存,您可以在多个 Argo CD Application Controller 副本间分片集群。
3.1. 启用循环分片算法 复制链接链接已复制到粘贴板!
循环
分片算法只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,Argo CD Application Controller 使用非统一 旧的
基于哈希的分片算法将集群分配给分片。这可能导致集群分布不均匀。您可以启用 循环
分片算法,以便在所有分片间实现更相同的集群分布。
在 Red Hat OpenShift GitOps 中使用 round-robin
分片算法有以下优点:
- 确保更多平衡的工作负载分布
- 防止分片超载或使用率不足
- 优化计算资源的效率
- 降低瓶颈风险
- 提高 Argo CD 系统的整体性能和可靠性
引入其他分片算法允许根据特定用例进一步自定义。您可以选择最适合与部署需求匹配的算法,从而提高灵活性和适应性在不同操作场景中。
要利用 GitOps 中替代分片算法的好处,在部署期间启用分片至关重要。
3.1.1. 在 web 控制台中启用循环分片算法 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台启用 循环
分片算法。
先决条件
- 在集群中安装了 Red Hat OpenShift GitOps Operator。
- 访问 OpenShift Container Platform web 控制台。
-
您可以使用
cluster-admin
权限访问集群。
流程
- 在 Web 控制台的 Administrator 视角中,进入 Operators → Installed Operators。
- 从已安装的 Operator 点 Red Hat OpenShift GitOps,再进入 Argo CD 选项卡。
-
点击您要启用
循环
分片算法的 Argo CD 实例,如openshift-gitops
。 点击 YAML 选项卡并编辑 YAML 文件,如下例所示:
启用循环分片算法的 Argo CD 实例示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Save。
此时会出现一个成功通知警报
openshift-gitops 更新至 <version>
; 版本。注意如果您编辑了默认的
openshift-gitops
实例,则会显示 Managed resource 对话框。再次单击 Save 以确认更改。通过执行以下步骤验证分片是否以
round-robin
作为分片算法启用:- 进入 Workloads → StatefulSets。
- 从 Project 下拉列表中选择安装 Argo CD 实例的命名空间。
- 点 <instance_name>-application-controller,如 openshift-gitops-application-controller,然后进入 Pods 选项卡。
- 观察创建的应用控制器 pod 的数量。它应该与集合副本数对应。
点您要检查的控制器 pod,并进入 Logs 选项卡来查看 pod 日志。
控制器 pod 日志片断示例
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=openshift-gitops version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=openshift-gitops version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin"
1 time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 查找
"Using filter function: round-robin"
信息。
在日志搜索字段中,搜索
分片处理
以验证跨分片的集群分布是否正常,如下例所示。重要确保将日志级别设置为
debug
以观察这些日志。控制器 pod 日志片断示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群"C"数量是分片副本"R"的数量,则每个分片必须具有相同数量的分配集群 "N",这等同于"C"除以 "R"。以上示例显示了 3 个集群和 3 个副本,因此每个分片都分配有 1 个集群。
3.1.2. 使用 CLI 启用循环分片算法 复制链接链接已复制到粘贴板!
您可以使用命令行界面启用 循环
分片算法。
先决条件
- 在集群中安装了 Red Hat OpenShift GitOps Operator。
-
您可以使用
cluster-admin
权限访问集群。
流程
运行以下命令,启用分片并将副本数设置为所需的值:
oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"sharding":{"enabled":true,"replicas":<value>}}}}' --type=merge
$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"sharding":{"enabled":true,"replicas":<value>}}}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将分片算法配置为
循环
:oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"env":[{"name":"ARGOCD_CONTROLLER_SHARDING_ALGORITHM","value":"round-robin"}]}}}' --type=merge
$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"env":[{"name":"ARGOCD_CONTROLLER_SHARDING_ALGORITHM","value":"round-robin"}]}}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证 Argo CD Application Controller pod 的数量是否与设置副本数对应:
oc get pods -l app.kubernetes.io/name=<argocd_instance>-application-controller -n <namespace>
$ oc get pods -l app.kubernetes.io/name=<argocd_instance>-application-controller -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE <argocd_instance>-application-controller-0 1/1 Running 0 11s <argocd_instance>-application-controller-1 1/1 Running 0 32s <argocd_instance>-application-controller-2 1/1 Running 0 22s
NAME READY STATUS RESTARTS AGE <argocd_instance>-application-controller-0 1/1 Running 0 11s <argocd_instance>-application-controller-1 1/1 Running 0 32s <argocd_instance>-application-controller-2 1/1 Running 0 22s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,使用
round-robin
作为分片算法验证分片是否已启用:oc logs <argocd_application_controller_pod> -n <namespace>
$ oc logs <argocd_application_controller_pod> -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出片断示例
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=<namespace> version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
time="2023-12-13T09:05:34Z" level=info msg="ArgoCD Application Controller is starting" built="2023-12-01T19:21:49Z" commit=a3vd5c3df52943a6fff6c0rg181fth3248976299 namespace=<namespace> version=v2.9.2+c5ea5c4 time="2023-12-13T09:05:34Z" level=info msg="Processing clusters from shard 1" time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin"
1 time="2023-12-13T09:05:34Z" level=info msg="Using filter function: round-robin" time="2023-12-13T09:05:34Z" level=info msg="appResyncPeriod=3m0s, appHardResyncPeriod=0s"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 查找
"Using filter function: round-robin"
信息。
通过执行以下步骤验证跨分片的集群分布是否:
运行以下命令,将日志级别设置为
debug
:oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"logLevel":"debug"}}}' --type=merge
$ oc patch argocd <argocd_instance> -n <namespace> --patch='{"spec":{"controller":{"logLevel":"debug"}}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
argocd.argoproj.io/<argocd_instance> patched
argocd.argoproj.io/<argocd_instance> patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,
查看由分片处理
的日志,以观察每个集群附加到的分片:oc logs <argocd_application_controller_pod> -n <namespace> | grep "processed by shard"
$ oc logs <argocd_application_controller_pod> -n <namespace> | grep "processed by shard"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出片断示例
time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0" time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1" time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2"
time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id= will be processed by shard 0"
1 time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=068d8b26-6rhi-4w23-jrf6-wjjfyw833n23 will be processed by shard 1"
2 time="2023-12-13T09:05:34Z" level=debug msg="Cluster with id=836d8b53-96k4-f68r-8wq0-sh72j22kl90w will be processed by shard 2"
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果集群"C"数量是分片副本"R"的数量,则每个分片必须具有相同数量的分配集群 "N",这等同于"C"除以 "R"。以上示例显示了 3 个集群和 3 个副本,因此每个分片都分配有 1 个集群。
3.2. 启用 Argo CD Application Controller 的动态扩展 复制链接链接已复制到粘贴板!
分片的动态扩展只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,Argo CD Application Controller 无限分配集群到分片。如果您使用 循环
分片算法,这个静态分配可能会导致分片分布不均匀,特别是在添加或删除副本时。您可以启用动态扩展分片,根据给定时间由 Argo CD Application Controller 管理的集群数量自动调整分片数量。这样可确保分片良好平衡,并优化计算资源的使用。
启用动态扩展后,您无法手动修改分片计数。系统会根据给定时间由 Argo CD Application Controller 管理的集群数量自动调整分片数量。
3.2.1. 在 web 控制台中启用动态扩展分片 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Container Platform Web 控制台启用动态扩展分片。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 在集群中安装了 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 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点击 Save。
此时会出现一个成功通知警报
openshift-gitops 更新至 <version>
; 版本。注意如果您编辑了默认的
openshift-gitops
实例,则会显示 Managed resource 对话框。再次单击 Save 以确认更改。
验证
通过检查命名空间中的 pod 数量来验证分片是否已启用:
- 进入 Workloads → StatefulSets。
-
从 Project 下拉列表中选择部署 Argo CD 实例的命名空间,如
openshift-gitops
。 -
点 Argo CD 实例名称的
StatefulSet
对象的名称,如openshift-gitops-apllication-controller
。 -
点 Pods 选项卡,然后验证 pod 的数量等于或大于您在 Argo CD
YAML
文件中设置的minShards
值。
3.2.2. 使用 CLI 启用动态扩展分片 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI (oc
)启用动态扩展分片。
先决条件
- 在集群中安装了 Red Hat OpenShift GitOps Operator。
-
您可以使用
cluster-admin
权限访问集群。
流程
-
以具有
cluster-admin
权限的用户身份登录oc
工具。 运行以下命令来启用动态扩展:
oc patch argocd <argocd_instance> -n <namespace> --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":<value>,"maxShards":<value>,"clustersPerShard":<value>}}}}'
$ oc patch argocd <argocd_instance> -n <namespace> --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":<value>,"maxShards":<value>,"clustersPerShard":<value>}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
oc patch argocd openshift-gitops -n openshift-gitops --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}}}}'
$ oc patch argocd openshift-gitops -n openshift-gitops --type=merge --patch='{"spec":{"controller":{"sharding":{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}}}}'
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 示例命令为
openshift-gitops
命名空间中的openshift-gitops
Argo CD 实例启用动态扩展,并将最小分片数量设置为1
,将分片的最大数量设置为3
,以及每个分片的集群数量1
。minShard
和clusterPerShard
的值必须设置为1
或更高。maxShard
的值必须等于或大于minShard
的值。
输出示例
argocd.argoproj.io/openshift-gitops patched
argocd.argoproj.io/openshift-gitops patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
检查 Argo CD 实例的
spec.controller.sharding
属性:oc get argocd <argocd_instance> -n <namespace> -o jsonpath='{.spec.controller.sharding}'
$ oc get argocd <argocd_instance> -n <namespace> -o jsonpath='{.spec.controller.sharding}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
oc get argocd openshift-gitops -n openshift-gitops -o jsonpath='{.spec.controller.sharding}'
$ oc get argocd openshift-gitops -n openshift-gitops -o jsonpath='{.spec.controller.sharding}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用分片动态扩展时的输出示例
{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}
{"dynamicScalingEnabled":true,"minShards":1,"maxShards":3,"clustersPerShard":1}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:通过检查 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 <namespace> -l app.kubernetes.io/name=<argocd_instance>-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
oc get pods -n openshift-gitops -l app.kubernetes.io/name=openshift-gitops-application-controller
$ oc get pods -n openshift-gitops -l app.kubernetes.io/name=openshift-gitops-application-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE openshift-gitops-application-controller-0 1/1 Running 0 2m
NAME READY STATUS RESTARTS AGE openshift-gitops-application-controller-0 1/1 Running 0 2m
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Argo CD Application Controller pod 的数量必须大于或等于
minShard
的值。