Argo CD 实例
安装和部署 Argo CD 实例,使用 Argo CD 实例启用通知,并配置 NotificationsConfiguration CR
摘要
第 1 章 设置 Argo CD 实例 复制链接链接已复制到粘贴板!
默认情况下,Red Hat OpenShift GitOps 在 openshift-gitops
命名空间中安装 Argo CD 实例,并使用额外的权限来管理某些集群范围的资源。此默认 Argo CD 实例也称为默认的集群范围的实例。
要防止默认 Argo CD 实例在 openshift-gitops
命名空间中启动,您可以使用 openshift-gitops-operator
订阅并配置 DISABLE_DEFAULT_ARGOCD_INSTANCE
环境变量,将字符串值设置为 "true
"。
对于 GitOps 版本 1.13 及之后的版本:
-
路由 TLS 终止设置为默认和用户定义的 Argo CD 实例的重新加密模式。
现在,到 Argo CD 实例的 TLS 连接会收到 OpenShift Container Platform 中设置的默认入口证书,而不是自签名 Argo CD 证书。您可以通过配置 Argo CD CR 的
.spec.server.route.tls
字段来修改路由 TLS 终止策略。 -
受限 pod 安全准入(PSA)标签应用到
openshift-gitops
命名空间,以确保符合 OpenShift Container Platform 标准。如果您在此命名空间中运行额外的工作负载,如监控或日志记录,请确保它们符合受限的 PSA 要求。如果合规不可用,请考虑使用用户定义的、集群范围的 Argo CD 实例,其中 PSA 标签不会被 GitOps Operator 应用或控制。
要管理集群配置或部署应用程序,您可以安装和部署新的用户定义的 Argo CD 实例。默认情况下,任何新的用户定义实例都只能管理部署它的命名空间中的资源。
您可以在任何命名空间中创建用户定义的 Argo CD 实例,而不是 openshift-gitops
命名空间。
如果要在 openshift-gitops 命名空间中创建用户定义的 Argo CD 实例,请将 openshift-gitops
- operator
订阅中的 DISABLE_DEFAULT_ARGOCD_INSTANCE
标志值设置为 "true"
,且不将实例命名为 openshift-gitops
。
1.1. 安装用户定义的 Argo CD 实例 复制链接链接已复制到粘贴板!
要管理集群配置或部署应用程序,您可以安装和部署新的用户定义的 Argo CD 实例。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps Operator。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
- 在 Web 控制台的 Administrator 视角中,点 Operators → Installed Operators。
- 从 Project 列表创建或选择您要安装用户定义的 Argo CD 实例的项目。
- 从安装的 Operator 列表中选择 Red Hat OpenShift GitOps,然后点击 Argo CD 选项卡。
点 Create ArgoCD 配置参数:
-
输入实例的 Name。默认情况下,Name 设置为
示例
。 创建外部操作系统路由来访问 Argo CD 服务器。点 Server → Route 并检查 Enabled。
提示您还可以将 YAML 配置为创建外部操作系统路由,如下例所示:
已创建外部操作系统路由的 Argo CD 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选:通过配置 Argo CD CR 的
.spec.server.route.tls
字段来修改路由 TLS 终止策略。
-
输入实例的 Name。默认情况下,Name 设置为
- 点 Create。
- 进入安装用户定义的 Argo CD 实例的项目中的 Networking → Routes → < instance_name>-server。
- 在 Details 标签页中,点 Route details → Location 下的 Argo CD web UI 链接。Argo CD Web UI 在一个单独的浏览器窗口中打开。
可选: 要使用 OpenShift Container Platform 凭证登录,请确保您是
cluster-admins
组的用户,然后在 Argo CD 用户界面中选择LOG IN VIA OPENSHIFT
选项。注意要是
cluster-admins
组的用户,请使用oc adm groups new cluster-admins <user&
gt; 命令,其中 <user
> 是您可以在集群范围或本地绑定到用户和组的默认集群角色。获取用户定义的 Argo CD 实例的密码:
- 使用导航面板进入 Workloads → Secrets 页面。
- 使用 Project 列表,选择创建用户定义的 Argo CD 实例的命名空间。
- 选择 & lt;argo_CD_instance_name>-cluster 实例来显示密码。
- 在 Details 标签页中,将密码复制到 Data → admin.password 下。
-
使用
admin
作为 Username,复制的密码作为 Password,在新窗口中登录到 Argo CD UI。
1.2. 通过为命名空间范围的实例指定用户定义的集群角色来配置常见集群角色 复制链接链接已复制到粘贴板!
作为集群管理员,当您使用 argocd.argoproj.io/managed-by
标签为命名空间提供 Argo CD 访问权限时,Argo CD 会假定 namespace-admin
权限。然后,Red Hat OpenShift GitOps Operator 会自动为以下 GitOps control plane 组件的所有受管命名空间创建角色绑定:
- Argo CD Application Controller
- Argo CD 服务器
- Argo CD ApplicationSet Controller
当您向非管理员用户提供命名空间时,如开发团队,他们可以使用 namespace-admin
特权来修改网络策略等对象。在这些命名空间中安装 Argo CD 实例可让开发团队具有 admin
权限,并间接提升其分配的权限。这些角色具有高度特权,可以删除所有资源。作为防止操作,您可以通过为 Operator 为 Argo CD Application Controller 和 Argo CD 服务器组件创建的所有受管命名空间配置通用集群角色来定义一组特定权限来满足您的安全要求。
要为所有受管命名空间配置通用集群角色,您可以在 Operator 的 Subscription
对象 YAML 文件中为 CONTROLLER_CLUSTER_ROLE
和 SERVER_CLUSTER_ROLE
环境变量指定用户定义的集群角色。因此,Operator 会使用现有的用户定义的集群角色,并为所有受管命名空间创建角色绑定,而不是创建默认的 admin
角色。
先决条件
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps Operator。
流程
- 在 Administrator 视角中,进入到 Administration → CustomResourceDefinitions。
- 找到 Subscription CRD 并点它打开它。
- 选择 Instances 选项卡,然后点 openshift-gitops-operator 订阅。
选择 YAML 选项卡并进行自定义:
另外,您可以直接将前面的环境变量注入 Operator 的 Deployment
对象 YAML 文件中。
1.3. 为 Argo CD 服务器和存储库服务器启用副本 复制链接链接已复制到粘贴板!
Argo CD-server 和 Argo CD-repo-server 工作负载是无状态的。要在 pod 中更好地分布工作负载,您可以增加 Argo CD-server 和 Argo CD-repo-server 副本的数量。但是,如果 Argo CD-server 上启用了 pod 横向自动扩展,它会覆盖您设置的副本数。
流程
将
repo
和server
spec 的replicas
参数设置为您要运行的副本数:Argo CD 自定义资源示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 将资源部署到不同的命名空间中 复制链接链接已复制到粘贴板!
要允许 Argo CD 管理除安装它外的其他命名空间中的资源,请使用 argocd.argoproj.io/managed-by
标签配置目标命名空间。
流程
运行以下命令来配置目标命名空间:
oc label namespace <target_namespace> \ argocd.argoproj.io/managed-by=<argocd_namespace>
$ oc label namespace <target_namespace> \ argocd.argoproj.io/managed-by=<argocd_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
<target_namespace>
- 指定您要管理 Argo CD 的命名空间的名称。
<argocd_namespace>
- 指定安装 Argo CD 的命名空间的名称。
1.5. 自定义 Argo CD 控制台链接 复制链接链接已复制到粘贴板!
在多租户集群中,用户可能需要处理多个 Argo CD 实例。例如,在命名空间中安装 Argo CD 实例后,您可能会在 Console Application Launcher 中找到附加到 Argo CD 控制台链接的不同 Argo CD 实例,而不是在 Console Application Launcher 中找到自己的 Argo CD 实例。
您可以通过设置 DISABLE_DEFAULT_ARGOCD_CONSOLELINK
环境变量来自定义 Argo CD 控制台链接:
-
当您将
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
设置为true
时,Argo CD 控制台链接将永久删除。 -
当您将
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
设置为false
或使用默认值时,Argo CD 控制台链接会被临时删除并在 Argo CD 路由被协调时再次可见。
先决条件
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 已安装 Red Hat OpenShift GitOps Operator。
流程
- 在 Administrator 视角中,进入到 Administration → CustomResourceDefinitions。
- 找到 Subscription CRD 并点它打开它。
- 选择 Instances 选项卡,然后点 openshift-gitops-operator 订阅。
选择 YAML 选项卡并进行自定义:
要启用或禁用 Argo CD 控制台链接,请根据需要编辑
DISABLE_DEFAULT_ARGOCD_CONSOLELINK
的值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 2 章 Argo CD 自定义资源和组件属性 复制链接链接已复制到粘贴板!
ArgoCD
自定义资源(CRD)是一个 Kubernetes 自定义资源(CRD),用于描述给定 Argo CD 集群的所需状态,允许您配置组成 Argo CD 集群的组件。
2.1. Argo CD 自定义资源属性 复制链接链接已复制到粘贴板!
Argo CD 自定义资源由以下属性组成:
Name | 描述 | default | Properties |
---|---|---|---|
| 为集群范围的实例的 Argo CD Application Controller 组件使用聚合的集群角色。 |
| |
|
Argo CD 注入应用程序名称的 |
| |
| ApplicationSet Controller 配置选项。 |
|
|
| 添加 UI 横幅消息。 |
|
|
| 添加配置管理插件。 |
| |
| Argo CD Application Controller 选项。 |
|
|
| 禁用内置的 admin 用户。 |
| |
| 禁用为集群范围的实例创建默认集群角色。 |
| |
|
将任何补充 Argo CD 设置添加到 |
| |
| 使用 Google Analytics 跟踪 ID。 |
| |
| 启用发送到 Google Analytics 的散列用户名。 |
| |
| 高可用性选项。 |
|
|
| 用于获取聊天帮助的 URL (通常是您的 Slack 频道支持)。 |
| |
| 显示在进行聊天帮助的文本框中。 |
| |
|
所有 Argo CD 组件的容器镜像。这会覆盖 |
| |
| 为 Argo CD 导入配置选项。 |
|
|
| Ingress 配置选项。 |
| |
| 初始 Git 存储库,将 Argo CD 配置为在创建集群时使用。 |
| |
| 定义 Argo CD 的初始 SSH 已知主机数据,以便在集群创建时使用,以通过 SSH 连接到 Git 存储库。 |
|
|
|
用于 |
| |
|
定义在 Argo CD 仓库服务器容器镜像中配置的 |
|
|
| 为您的实例定义工作负载状态监控配置。 |
|
|
| 通知控制器配置选项。 |
|
|
|
为 Argo CD 工作负载定义 |
|
|
| OIDC 配置作为 Dex 的替代方案。 |
| |
| Prometheus 配置选项。 |
|
|
| RBAC 配置选项。 |
|
|
| Redis 配置选项。 |
|
|
| Git 存储库凭证模板,将 Argo CD 配置为在集群创建时使用。 |
| |
| 自定义资源操作行为。 |
| |
| 完全忽略整个资源组类别。 |
| |
| 用于标识要应用哪些资源组/kinds 的配置。 |
| |
| 自定义资源健康检查行为。 |
| |
| 自定义资源忽略差异行为。 |
| |
| Argo CD 用来监控其受管资源的字段。 |
| |
| Argo CD Server 配置选项。 |
|
|
| 指定在其中创建应用程序资源的命名空间。 |
| |
| 单点登录选项。 |
|
|
| 启用应用程序状态徽标。 |
| |
| TLS 配置选项。 |
|
|
| 启用匿名用户访问。 |
| |
| 用于所有 Argo CD 组件的容器镜像的标签。 | 最新的 Argo CD 版本 |
2.2. 仓库服务器属性 复制链接链接已复制到粘贴板!
以下属性可用于配置存储库服务器组件:
Name | default | 描述 |
---|---|---|
|
|
用于为 repo-server 的 gRPC TLS 证书设置 TLS 的供应商。目前,只有 |
|
| 为 Repo 服务器工作负载设置的环境。 |
|
| 在 Argo CD 安装过程中启用 Repo 服务器的标记。 |
|
| 渲染工具(如 Helm 或 Kustomize)的执行超时(以秒为单位)。 |
|
| 将命令行参数传递给 Repo 服务器工作负载。命令行参数添加到 Operator 设置的参数列表中。 |
|
|
Argo CD Application Controller 组件中的 |
|
|
Argo CD Repo 服务器的容器镜像。这个正确的覆盖了 |
|
|
Argo CD Repo 服务器使用的日志级别。有效选项包括 |
|
|
Argo CD repo 服务器使用的日志格式。有效选项为 |
|
|
定义 |
|
| 指定 Repo 服务器容器的远程 URL。 |
|
|
Argo CD Repo 服务器的副本数。必须大于或等于 |
|
| 容器计算资源。 |
|
|
与 repo-server pod 搭配使用的 |
|
|
Argo CD Application Controller 组件中的 |
|
| 定义在与存储库服务器通信时,是否在所有组件上执行严格的 TLS 检查。 |
|
与 | 与 Argo CD Repo 服务器一起使用的标签。 |
|
| 配置用于 Repo 服务器部署的额外卷。此字段是可选的。 |
|
| 配置用于 Repo 服务器部署的额外卷挂载。此字段是可选的。 |
2.3. 使用 Argo CD 实例启用通知 复制链接链接已复制到粘贴板!
Argo CD 通知允许您在 Argo CD 实例中发生事件时向外部服务发送通知。例如,您可以在同步操作失败时向 Slack 或发送电子邮件发送通知。默认情况下,在 Argo CD 实例中禁用通知。
先决条件
-
您可以使用
cluster-admin
权限访问 OpenShift Container Platform 集群,并登录到 web 控制台。 - 在集群中安装了 Red Hat OpenShift GitOps Operator。
流程
要使用 OpenShift Container Platform Web 控制台为 Argo CD 实例启用通知,请完成以下步骤:
- 导航到 Operators → Installed Operators 页面。
- 在 Installed Operators 列表中,选择 Red Hat OpenShift GitOps Operator,然后点 ArgoCD 选项卡。
-
选择您要启用通知的 Argo CD 实例名称。例如,
openshift-gitops
。 点 YAML 选项卡,然后编辑
spec.notifications.enabled
参数设置为true
:Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点击 Save。
或者,您可以使用 Openshift CLI 中的 oc patch
命令启用通知。例如:
oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'
oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'
2.4. NotificationsConfiguration 自定义资源属性 复制链接链接已复制到粘贴板!
NotificationsConfiguration
资源是一个 Kubernetes 自定义资源(CR),用于管理 Kubernetes 集群中的通知。在 Red Hat OpenShift GitOps 中,您可以使用
CR 将模板、触发器、服务和订阅资源添加到 Argo CD 通知配置映射中。
Notifications
Configuration
当您在启用了通知的 Red Hat OpenShift GitOps 中创建集群时,默认会创建一个带有名称 default-notifications-configuration
的 NotificationsConfiguration
CR。
在 NotificationsConfiguration
CR 的现有配置中所做的任何更改都会在 Argo CD 通知
配置映射中复制。例如,如果用户在 NotificationsConfiguration
资源中添加触发器配置,则此配置会在 Argo CD Notifications
配置映射中读取、处理和更新。
任何配置更改都必须在 default-notifications-configuration
CR 中更新。不支持为 NotificationsConfiguration
资源用户创建的自定义资源。
对 Argo CD argocd-notifications-cm
配置映射的任何修改都会被 NotificationsConfiguration
CR 中所做的更改覆盖。
Properties | default | 描述 |
---|---|---|
模板 |
| 模板用于生成通知模板消息。 |
触发器 |
| 触发器用于定义在向用户以及生成消息所需的模板列表通知时的条件。 |
服务 |
| 服务用于发送消息。 |
订阅 |
| 订阅包含集中管理的全局应用程序订阅。 |
以下示例定义如何使用 default-notifications-configuration
自定义资源将模板、触发器、服务和订阅资源添加到 Argo CD argocd-notification-cm
配置映射。
模板示例
触发器示例
服务
示例
订阅示例
您可以使用 OpenShift Container Platform Web 控制台或 CLI (oc
)配置 NotificationsConfiguration
CR。
2.4.1. 使用 Web 控制台配置 NotificationsConfiguration CR 复制链接链接已复制到粘贴板!
您可以使用 Web 控制台配置 NotificationsConfiguration
自定义资源(CR)。
先决条件
-
您可以使用
cluster-admin
权限访问 OpenShift Container Platform 集群,并登录到 web 控制台。 - 在集群中安装了 Red Hat OpenShift GitOps Operator。
- 您已为 Argo CD 实例启用了通知。如需更多信息,请参阅"使用 Argo CD 实例启用通知"。
流程
- 在 OpenShift Container Platform Web 控制台的 Administrator 视角中,展开 Operators → Installed Operators。
- 从 Installed Operators 列表中,选择 Red Hat OpenShift GitOps Operator,然后点 NotificationsConfiguration 选项卡。
-
在 NotificationsConfigurations 页面中,单击
default-notifications-configuration
。 在 default-notifications-configuration 页面中,单击 YAML 并添加任何受支持的资源的配置,如
模板
、触发器
、服务
和订阅
。例如,在代码中的模板
下,添加以下示例配置:模板配置示例
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点击 Save。
验证
NotificationsConfiguration
CR 中进行的配置更改是否已反映在argocd-notifications-cm
配置映射中:- 进入 Workloads → ConfigMaps。
- 点 argocd-notifications-cm 并选择 YAML 选项卡。
- 滚动浏览 YAML 选项卡中的页面,以验证为支持的资源添加的示例配置。
2.4.2. 使用 CLI 配置 NotificationsConfiguration CR 复制链接链接已复制到粘贴板!
您可以使用 CLI (oc
)配置 NotificationsConfiguration
自定义资源(CR)。
先决条件
-
您可以使用
cluster-admin
权限访问 OpenShift Container Platform 集群。 - 在集群中安装了 Red Hat OpenShift GitOps Operator。
- 您已为 Argo CD 实例启用了通知。如需更多信息,请参阅"使用 Argo CD 实例启用通知"。
流程
运行以下命令来编辑集群中的默认
NotificationsConfiguration
CR:oc edit notificationsconfiguration default-notifications-configuration -n <namespace>
$ oc edit notificationsconfiguration default-notifications-configuration -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
default-notifications-configuration
-
指定默认
NotificationsConfiguration
CR 的名称。 <namespace>
- 指定命名空间的名称。
在 CR 的
templates
部分,添加类似以下示例的配置:模板配置示例
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
argocd-notifications-cm
配置映射的内容:oc edit cm argocd-notifications-cm -n <namespace>
$ oc edit cm argocd-notifications-cm -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NotificationsConfiguration
CR 的现有配置中所做的更改反映在argocd-notifications-cm
配置映射中。