×

ArgoCD 自定义资源是一个 Kubernetes 自定义资源 (CRD),它描述了给定 Argo CD 集群的所需状态,允许您配置构成 Argo CD 集群的组件。

Argo CD 自定义资源属性

Argo CD 自定义资源包含以下属性

名称 描述 默认值 属性

applicationInstanceLabelKey

metadata.label 键名,Argo CD 在其中注入应用程序名称作为跟踪标签。

app.kubernetes.io/instance

aggregatedClusterRoles

对集群范围实例的 Argo CD Application Controller 组件使用聚合的集群角色。

false

applicationSet

ApplicationSet Controller 配置选项。

<对象>

  • <镜像> - ApplicationSet Controller 的容器镜像。此属性会覆盖ARGOCD_APPLICATIONSET_IMAGE环境变量。

  • <版本> - 与applicationSet容器镜像一起使用的标签。

  • <启用> - 在 Argo CD 安装期间启用 ApplicationSet Controller 的标志。

  • <环境> - 指定 ApplicationSet Controller Pod 的环境。

  • <资源> - 容器计算资源。

  • <日志级别> - Argo CD Application Controller 组件使用的日志级别。有效选项为debuginfoerrorwarn

  • <日志格式> - Argo CD Application Controller 组件使用的日志格式。有效选项为textjson

  • <parallelismLimit> - 设置控制器(--kubectl-parallelism-limit标志)的kubectl并行限制。

  • sourceNamespaces - 用于在目标命名空间中创建和管理Argo CD ApplicationSet 资源的非控制平面命名空间列表。

  • scmProviders - 允许的源代码管理 (SCM) 提供程序的 URL。

  • <scmRootCAConfigMap> - 存储Gitlab SCM Provider TLS证书的ConfigMap名称,该证书将挂载到Application Set Controller的“/app/tls/scm/cert”路径。

  • <webhookServer> - 定义ApplicationSet webhook服务器的可用选项。

  • annotations - 要添加到操作符部署的Pod的自定义注释列表。此字段是可选的。

  • labels - 要添加到操作符部署的Pod的自定义标签列表。此字段是可选的。

  • volumes - 为Argo CD ApplicationSet Controller组件配置的附加卷列表。此字段是可选的。

  • volumeMounts - 为Argo CD ApplicationSet Controller组件配置的附加卷挂载列表。此字段是可选的。

  • extraCommandArgs - 添加到操作符为ApplicationSet工作负载设置的现有参数列表中的附加参数。

banner

添加UI横幅消息。

<对象>

  • <banner.content> - 横幅消息内容。如果显示横幅,则此内容是必需的。

  • <banner.url> - 可选的横幅消息链接URL。

configManagementPlugins

添加配置管理插件。

<empty>

controller

Argo CD Application Controller选项。

<对象>

  • <processors.operation> - 操作处理器的数量。

  • <processors.status> - 状态处理器的数量。

  • <资源> - 容器计算资源。

  • <日志级别> - Argo CD Application Controller 组件使用的日志级别。有效选项为debuginfoerrorwarn

  • <appSync> - AppSync用于控制Argo CD应用程序的同步频率。

  • <sharding.enabled> - 在Argo CD Application Controller组件上启用分片。使用此属性可以管理大量集群并减轻控制器组件的内存压力。

  • <sharding.replicas> - 用于支持Argo CD Application Controller分片的副本数量。

  • <sharding.dynamicScalingEnabled> - 启用Argo CD Application Controller组件的动态缩放。如果您希望操作符根据控制器组件管理的集群数量来缩放副本数量,请使用此属性。如果将此属性设置为true,则会覆盖sharding.enabledsharding.replicas属性的配置。

  • <sharding.minShards> - Argo CD Application Controller副本的最小数量。

  • <sharding.maxShards> - Argo CD Application Controller副本的最大数量。

  • <sharding.clustersPerShard> - 每个分片需要管理的集群数量。当副本数量达到maxShards时,分片会管理多个集群。

  • <env> - 为应用程序控制器工作负载设置的环境变量。

  • <sourceNamespaces> - 用于在目标命名空间中创建和管理Argo CD Application 资源的非控制平面命名空间列表。

  • <extraCommandArgs> - 添加到操作符设置的现有参数列表中的参数。

  • annotations - 要添加到操作符部署的Pod的自定义注释列表。此字段是可选的。

  • labels - 要添加到操作符部署的Pod的自定义标签列表。此字段是可选的。

  • volumes - 为Argo CD Application Controller组件配置的附加卷列表。此字段是可选的。

  • volumeMounts - 为Argo CD Application Controller组件配置的附加卷挂载列表。此字段是可选的。

  • initContainers - Argo CD Application Controller组件的init容器列表。此字段是可选的。

  • sidecarContainers - Argo CD Application Controller组件的sidecar容器列表。此字段是可选的。

disableAdmin

禁用内置管理员用户。

false

defaultClusterScopedRoleDisabled

禁用为集群范围的实例创建默认集群角色。

false

extraConfig

将任何补充的Argo CD设置添加到argocd-cm configmap中,这些设置无法直接在Argo CD自定义资源中配置。

<empty>

gaTrackingID

使用Google Analytics跟踪ID。

<empty>

gaAnonymizeUsers

启用发送到Google Analytics的哈希用户名。

false

ha

高可用性选项。

<对象>

  • <enabled> - 全局切换Argo CD的高可用性支持。

  • <redisProxyImage> - Redis HAProxy容器镜像。此属性会覆盖ARGOCD_REDIS_HA_PROXY_IMAGE环境变量。

  • <redisProxyVersion> - 用于Redis HAProxy容器镜像的标签。

helpChatURL

获取聊天帮助的URL(这通常是您的支持Slack频道)。

https://mycorp.slack.com/argo-cd

helpChatText

出现在获取聊天帮助的文本框中的文本。

立即聊天!

image

所有Argo CD组件的容器镜像。这将覆盖ARGOCD_IMAGE环境变量。

argoproj/argocd

import

Argo CD的导入配置选项。

<对象>

  • <name> - 可以从中导入数据的ArgoCDExport资源的名称。

  • <namespace> - name字段引用的ArgoCDExport资源的命名空间。如果未设置此字段,则ArgoCDExport资源的命名空间默认为与Argo CD相同的命名空间。

ingress

Ingress配置选项。

<对象>

initialRepositories

在创建集群时配置Argo CD使用的初始Git仓库。

<empty>

initialSSHKnownHosts

定义Argo CD在集群创建时用于通过SSH连接到Git仓库的初始SSH已知主机数据。

<default_Argo_CD_Known_Hosts>

  • <Excludedefaulthosts> - 指示您是否要添加Argo CD提供的默认SSH已知主机列表。

  • <keys> - 描述您要添加到Argo CD服务器中的自定义SSH已知主机集。

kustomizeBuildOptions

kustomize build一起使用的构建选项和参数。

<empty>

kustomizeVersions

定义在Argo CD repo服务器容器镜像中配置的Kustomize版本列表。

<empty>

  • <path> - Argo CD repo服务器容器镜像文件系统中Kustomize版本的路径。

  • <version> - 在Argo CD repo服务器容器镜像中配置的vX.Y.Z格式的Kustomize版本。

monitoring

定义实例的工作负载状态监控配置。

<对象>

  • <disableMetrics> - 配置此字段以启用或禁用实例的指标收集。

  • <enabled> - 指示是否为您的实例启用了工作负载状态监控。

notifications

Notifications Controller配置选项。

<对象>

  • <enabled> - 通知控制器启动开关。

  • <env> - 为通知控制器工作负载设置的环境。

  • <image> - 所有 Argo CD 组件的容器镜像。此属性会覆盖 ARGOCD_IMAGE 环境变量。

  • <version> - 用于通知控制器容器镜像的标签。

  • <replicas> - 要为通知控制器运行的副本数量。

  • <资源> - 容器计算资源。

  • <日志级别> - Argo CD Application Controller 组件使用的日志级别。有效选项为debuginfoerrorwarn

nodePlacement

定义 Argo CD 工作负载的 NodeSelectorsTolerations

<empty>

  • <nodeSelector> - 用于节点选择的键值对映射。

  • <tolerations> - Tolerations 允许 Pod 在具有匹配污点的节点上创建调度。

oidcConfig

作为 Dex 的替代方案的 OIDC 配置。

<empty>

repositoryCredentials

Git 仓库凭据模板,用于在集群创建时配置 Argo CD 使用。

<empty>

prometheus

Prometheus 配置选项。

<对象>

  • <enabled> - 全局切换 Argo CD 的 Prometheus 支持。

  • <host> - 用于 IngressRoute 资源的主机名。

  • <ingress> - 切换 Prometheus 的 Ingress。

  • <route> - 路由配置选项。

  • <size> - Prometheus StatefulSet 的副本数量。

rbac

RBAC 配置选项。

<对象>

  • <defaultPolicy> - argocd-rbac-cm 配置映射中的 policy.default 属性。Argo CD 在授权 API 请求时回退到的默认角色的名称。

  • <policy> - argocd-rbac-cm 配置映射中的 policy.csv 属性。此属性包含关于用户定义的 RBAC 策略和角色定义的 CSV 数据。

  • <policyMatcher> - argocd-rbac-cm 配置映射中的 policy.matchMode 属性。此属性有两个选项:'glob' 用于 glob 匹配器和 'regex' 用于正则表达式匹配器。

  • <scopes> - argocd-rbac-cm 配置映射中的 scopes 属性。除了子作用域外,还控制在 RBAC 强制执行期间检查哪些 OIDC 作用域。

redis

Redis 配置选项。

<对象>

  • <autotls> - 使用提供程序创建 Redis 服务器的 TLS 证书。目前仅支持 openshift 值。

  • <disableTLSVerification> - 定义是否应使用严格的 TLS 验证访问 Redis 服务器。

  • <image> - Redis 的容器镜像。这会覆盖 ARGOCD_REDIS_IMAGE 环境变量。

  • <资源> - 容器计算资源。

  • <version> - 用于 Redis 容器镜像的标签。

resourceHealthChecks

自定义资源健康检查行为。

<empty>

resourceIgnoreDifferences

自定义资源忽略差异行为。

<empty>

resourceActions

自定义资源操作行为。

<empty>

resourceExclusions

完全忽略整个资源组类别。

<empty>

resourceInclusions

用于识别应用哪些资源组/类型的配置。

<empty>

resourceTrackingMethod

Argo CD 用于监控其管理资源的字段。

<label>

server

Argo CD 服务器配置选项。

<对象>

  • <autoscale> - 服务器自动缩放配置选项。

  • <extraCommandArgs> - 添加到操作符设置的现有参数列表中的参数。

  • <grpc> - gRPC 配置选项。

  • <host> - 用于 IngressRoute 资源的主机名。

  • <ingress> - Argo CD 服务器组件的 Ingress 配置。

  • <insecure> - 切换 Argo CD 服务器的不安全标志。

  • <资源> - 容器计算资源。

  • <replicas> - Argo CD 服务器的副本数量。必须大于或等于 0。如果启用了 autoscale,则忽略 replicas

  • <route> - 路由配置选项。

  • <service.Type> - 用于服务资源的 serviceType

  • <logLevel> - Argo CD 服务器组件要使用的日志级别。有效选项为 debuginfoerrorwarn

  • <logFormat> - Argo CD 服务器组件使用的日志格式。有效选项为 textjson

  • <env> - 为服务器工作负载设置的环境。

  • <enabled> - 在 Argo CD 安装期间启用 Argo CD 服务器的标志。

  • volumes - 为Argo CD Application Controller组件配置的附加卷列表。此字段是可选的。

  • volumeMounts - 为Argo CD Application Controller组件配置的附加卷挂载列表。此字段是可选的。

  • initContainers - Argo CD 应用控制器的 init 容器列表。此字段是可选的。

  • sidecarContainers - Argo CD 应用控制器的 sidecar 容器列表。此字段是可选的。

  • annotations - 要添加到操作符部署的Pod的自定义注释列表。此字段是可选的。

  • labels - 要添加到操作符部署的Pod的自定义标签列表。此字段是可选的。

  • enableRolloutsUI - 当参数设置为 true 时,该参数将在 Argo CD 中启用 Argo Rollouts UI 扩展。默认值为 false

sso

单点登录选项。

<对象>

  • <keycloak> - Keycloak SSO 提供程序的配置选项。

  • <dex> - Dex SSO 提供程序的配置选项。

  • <provider> - 用于配置单点登录的提供程序的名称。目前,支持的选项是 Dex 和 Keycloak。

statusBadgeEnabled

启用应用程序状态徽章。

true

tls

TLS 配置选项。

<对象>

  • <ca.configMapName> - 包含 CA 证书的 ConfigMap 的名称。

  • <ca.secretName> - 包含 CA 证书和密钥的密钥的名称。

  • <initialCerts> - argocd-tls-certs-cm 配置映射中用于通过 HTTPS 连接 Git 仓库的初始证书集。

usersAnonymousEnabled

启用匿名用户访问。

true

version

用于所有 Argo CD 组件的容器镜像的标签。

最新 Argo CD 版本

Repo 服务器属性

以下属性可用于配置 Repo 服务器组件

名称 默认值 描述

resources

<empty>

容器计算资源。

mountsatoken

false

定义是否应将 serviceaccount 令牌挂载到 repo-server pod。

serviceaccount

""

要与 repo-server pod 一起使用的 serviceaccount 的名称。

verifytls

false

定义是否在所有组件与 Repo 服务器通信时强制执行严格的 TLS 检查。

autotls

""

用于为 repo-server 的 gRPC TLS 证书设置 TLS 的提供程序。目前,只接受 openshift 值。

image

argoproj/argocd

Argo CD Repo 服务器的容器镜像。此属性会覆盖 ARGOCD_REPOSERVER_IMAGE 环境变量。

version

.spec.Version 相同

用于 Argo CD Repo 服务器的标签。

logLevel

info

Argo CD Repo 服务器使用的日志级别。有效选项为 debuginfoerrorwarn

logFormat

text

Argo CD repo 服务器要使用的日志格式。有效选项为 textjson

execTimeout

180

渲染工具(例如 Helm 或 Kustomize)的执行超时(秒)。

env

<empty>

为 Repo 服务器工作负载设置的环境。

enabled

<empty>

在 Argo CD 安装期间启用 Repo 服务器的标志。

extraRepoCommandArgs

<empty>

将命令行参数传递给 Repo 服务器工作负载。命令行参数将添加到操作员设置的参数列表中。

initContainers

<empty>

Argo CD 应用控制器组件中init容器的数量。此字段是可选的。

sidecarContainers

<empty>

Argo CD 应用控制器组件中sidecar容器的数量。此字段是可选的。

volumes

<empty>

配置Repo服务器部署使用的附加卷。此字段是可选的。

volumeMounts

<empty>

配置Repo服务器部署使用的附加卷挂载。此字段是可选的。

replicas

<empty>

Argo CD Repo服务器的副本数量。必须大于或等于0

remote

<empty>

指定Repo服务器容器的远程URL。

annotations

<empty>

要添加到操作符部署的Pod的自定义注释列表。此字段是可选的。

labels

<empty>

要添加到操作符部署的Pod的自定义标签列表。此字段是可选的。

启用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实例启用通知,请完成以下步骤

  1. 导航到**操作符** → **已安装的操作符**页面。

  2. 从**已安装的操作符**列表中,选择Red Hat OpenShift GitOps Operator,然后单击**ArgoCD**选项卡。

  3. 选择要启用通知的Argo CD实例名称。例如,openshift-gitops

  4. 单击**YAML**选项卡,然后编辑并将spec.notifications.enabled参数设置为true

    示例
    apiVersion: argoproj.io/v1beta1
    kind: ArgoCD
    metadata:
      name: openshift-gitops
    spec:
      notifications:
        enabled: true
    #....
  5. 单击**保存**。

或者,您可以使用Openshift CLI中的oc patch命令启用通知。例如

oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'

NotificationsConfiguration自定义资源属性

NotificationsConfiguration资源是管理Kubernetes集群中通知的Kubernetes自定义资源(CR)。在Red Hat OpenShift GitOps中,您可以使用NotificationsConfiguration CR将模板、触发器、服务和订阅资源添加到Argo CD Notifications配置映射。

当您在启用通知的Red Hat OpenShift GitOps中创建集群时,默认情况下会创建一个名为default-notifications-configurationNotificationsConfiguration CR。

NotificationsConfiguration CR现有配置所做的任何更改都会复制到Argo CD Notifications配置映射中。例如,如果用户在NotificationsConfiguration资源中添加触发器配置,则此配置将在Argo CD Notifications配置映射中读取、处理和更新。

必须在default-notifications-configuration CR中更新任何配置更改。不支持用户为NotificationsConfiguration资源创建的自定义资源。

对Argo CD argocd-notifications-cm配置映射所做的任何修改都将被NotificationsConfiguration CR中所做的更改覆盖。

表1. NotificationsConfiguration自定义资源属性
属性 默认值 描述

模板

<empty>

模板用于生成通知模板消息。

触发器

<empty>

触发器用于定义向用户发送通知的条件以及生成消息所需的模板列表。

服务

<empty>

服务用于传递消息。

订阅

<empty>

订阅包含集中管理的全局应用程序订阅。

以下示例定义了如何使用default-notifications-configuration自定义资源将模板、触发器、服务和订阅资源添加到Argo CD argocd-notification-cm配置映射。

templates示例
apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration (1)
spec:
 templates:
  template.my-custom-template: | (2)
    message: |
     Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
1 集群中NotificationsConfiguration CR的默认名称。
2 NotificationsConfiguration CR的自定义模板配置示例。
triggers示例
apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration (1)
spec:
 triggers:
  trigger.on-sync-status-unknown: | (2)
   - when: app.status.sync.status == 'Unknown'
   send: [my-custom-template]
1 集群中NotificationsConfiguration CR的默认名称。
2 NotificationsConfiguration CR的自定义触发器配置示例。
services示例
apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration (1)
spec:
 Services:
  service.slack: |
    token: $slack-token (2)
    username: <override-username> # optional username
    icon: <override-icon> # optional icon for the message (supports both emoji and url notation)
1 集群中NotificationsConfiguration CR的默认名称。
2 NotificationsConfiguration CR的自定义服务配置示例。
subscriptions示例
apiVersion: argoproj.io/v1alpha1
kind: NotificationsConfiguration
metadata:
 name: default-notifications-configuration (1)
spec:
 Subscriptions: |
  subscriptions: | (2)
    # subscription for on-sync-status-unknown trigger notifications
    - recipients:
    - slack:test2
    - email:[email protected]
    triggers:
    - on-sync-status-unknown
    # subscription restricted to applications with matching labels only
    - recipients:
    - slack:test3
    selector: test=true
    triggers:
    - on-sync-status-unknown
icon: <override-icon> # optional icon for the message (supports both emoji and url notation)
1 集群中NotificationsConfiguration CR的默认名称。
2 NotificationsConfiguration CR的自定义订阅配置示例。

您可以使用OpenShift Container Platform Web控制台或CLI (oc)配置NotificationsConfiguration CR。

使用Web控制台配置NotificationsConfiguration CR

您可以使用Web控制台配置NotificationsConfiguration自定义资源(CR)。

先决条件
  • 您可以访问具有cluster-admin权限的OpenShift Container Platform集群,并已登录到Web控制台。

  • 您已在集群上安装了Red Hat OpenShift GitOps Operator。

  • 您已为Argo CD实例启用通知。有关更多信息,请参见“启用Argo CD实例的通知”。

步骤
  1. 在OpenShift Container Platform Web控制台的**管理员**视角中,展开**操作符** → **已安装的操作符**。

  2. 从**已安装的操作符**列表中,选择Red Hat OpenShift GitOps Operator,然后单击**NotificationsConfiguration**选项卡。

  3. 在**NotificationsConfigurations**页面上,单击default-notifications-configuration

  4. 在**default-notifications-configuration**页面上,单击**YAML**并添加任何受支持资源(例如templatestriggersservicessubscriptions)的配置。例如,在代码中的templates下,添加以下示例配置

    示例模板配置
      template.my-custom-template: |
        message: |
        Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
  5. 单击**保存**。

  6. 验证在NotificationsConfiguration CR中所做的配置更改是否反映在argocd-notifications-cm配置映射中

    1. 转到**工作负载** → **ConfigMaps**。

    2. 单击**argocd-notifications-cm**并选择**YAML**选项卡。

    3. 滚动浏览**YAML**选项卡中的页面,以验证为受支持资源添加的示例配置。

使用CLI配置NotificationsConfiguration CR

您可以使用CLI (oc)配置NotificationsConfiguration自定义资源(CR)。

先决条件
  • 您可以访问具有cluster-admin权限的OpenShift Container Platform集群。

  • 您已在集群上安装了Red Hat OpenShift GitOps Operator。

  • 您已为Argo CD实例启用通知。有关更多信息,请参见“启用Argo CD实例的通知”。

步骤
  1. 通过运行以下命令来编辑集群中的默认NotificationsConfiguration CR

    $ oc edit notificationsconfiguration default-notifications-configuration -n <namespace>

    其中

    default-notifications-configuration

    指定默认NotificationsConfiguration CR的名称。

    <namespace>

    指定命名空间的名称。

  2. 在CR的templates部分下,添加类似于以下示例的配置

    示例模板配置
      template.my-custom-template: |
        message: |
        Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
  3. 通过运行以下命令来验证argocd-notifications-cm配置映射的内容

    $ oc edit cm argocd-notifications-cm -n <namespace>

    NotificationsConfiguration CR的现有配置中所做的更改将反映在argocd-notifications-cm配置映射中。