Chapter 2. Argo CD custom resource and component properties The ArgoCD custom resource is a Kubernetes Custom Resource (CRD) that describes the desired state for a given Argo CD cluster that allows you to configure the components which make up an Argo CD cluster. 2.1. Argo CD custom resource properties The Argo CD Custom Resource consists of the following properties: Name Description Default Properties applicationInstanceLabelKey The metadata.label key name where Argo CD injects the app name as a tracking label. app.kubernetes.io/instance aggregatedClusterRoles Use aggregated cluster roles for the Argo CD Application Controller component of a cluster-scoped instance. false applicationSet The ApplicationSet Controller configuration options. <object> <image> - The container image for the ApplicationSet Controller. This property overrides the ARGOCD_APPLICATIONSET_IMAGE environment variable. <version> - The tag to use with the applicationSet container image. <enabled> - The flag to use to enable the ApplicationSet Controller during the Argo CD installation. <env> - Specify the environment for ApplicationSet Controller pods. <resources> - The container compute resources. <logLevel> - The log level used by the Argo CD Application Controller component. Valid options are debug , info , error , and warn . <logFormat> - The log format used by the Argo CD Application Controller component. Valid options are text and json . <parallelismLimit> - The kubectl parallelism limit to set for the controller (the --kubectl-parallelism-limit flag). sourceNamespaces - The list of non-control plane namespaces for creating and managing Argo CD ApplicationSet resources in target namespaces. scmProviders - The URLs of the allowed Source Code Manager (SCM) providers. <scmRootCAConfigMap> - The name of the config map that stores the Gitlab SCM Provider's TLS certificate that will be mounted on the Application Set Controller at the "/app/tls/scm/cert" path. <webhookServer> - Defines the available options for the ApplicationSet webhook server. annotations - List of custom annotations to add to pods deployed by the Operator. This field is optional. labels - List of custom labels to add to pods deployed by the Operator. This field is optional. volumes - List of addition volumes configured for the Argo CD ApplicationSet Controller component. This field is optional. volumeMounts - List of addition volume mounts configured for the Argo CD ApplicationSet Controller component. This field is optional. extraCommandArgs - List of additional arguments added to the existing arguments set by the Operator for the ApplicationSet workload. banner Adds a UI banner message. <object> <banner.content> - The banner message content. This content is required if a banner is displayed. <banner.url> - An optional banner message link URL. configManagementPlugins Adds a configuration management plugin. <empty> controller Argo CD Application Controller options. <object> <processors.operation> - The number of operation processors. <processors.status> - The number of status processors. <resources> - The container compute resources. <logLevel> - The log level used by the Argo CD Application Controller component. Valid options are debug , info , error , and warn . <appSync> - AppSync is used to control the sync frequency of Argo CD applications. <sharding.enabled> - Enable sharding on the Argo CD Application Controller component. Use this property to manage a large number of clusters and relieve memory pressure on the controller component. <sharding.replicas> - The number of replicas that are used to support sharding of the Argo CD Application Controller. <sharding.dynamicScalingEnabled> - Enables the dynamic scaling of the Argo CD Application Controller component. Use this property if you want the Operator to scale the number of replicas based on the number of clusters the controller component is managing. If you set this property to true , it overrides the configuration of the sharding.enabled and sharding.replicas properties. <sharding.minShards> - The minimum number of Argo CD Application Controller replicas. <sharding.maxShards> - The maximum number of Argo CD Application Controller replicas. <sharding.clustersPerShard> - The number of clusters that need to be managed by each shard. When the replica count reaches the maxShards , the shards manage more than one cluster. <env> - Environment to set for the application controller workloads. <sourceNamespaces> - List of non-control plane namespaces for creating and managing Argo CD Application resources in target namespaces. <extraCommandArgs> - List of arguments added to the existing arguments set by the Operator. annotations - List of custom annotations to add to pods deployed by the Operator. This field is optional. labels - List of custom labels to add to pods deployed by the Operator. This field is optional. volumes - List of addition volumes configured for the Argo CD Application Controller component. This field is optional. volumeMounts - List of addition volume mounts configured for the Argo CD Application Controller component. This field is optional. initContainers - List of init containers for the ArgoCD Application Controller component. This field is optional. sidecarContainers - List of sidecar containers for the ArgoCD Application Controller component. This field is optional. disableAdmin Disables the built-in admin user. false defaultClusterScopedRoleDisabled Disables the creation of default cluster roles for a cluster-scoped instance. false extraConfig Add any supplementary Argo CD settings to the argocd-cm config map that cannot be configured directly within the Argo CD custom resource. <empty> gaTrackingID Use a Google Analytics tracking ID. <empty> gaAnonymizeUsers Enable hashed usernames sent to Google Analytics. false ha High-availability options. <object> <enabled> - Toggle high-availability support globally for Argo CD. <redisProxyImage> - The Redis HAProxy container image. This property overrides the ARGOCD_REDIS_HA_PROXY_IMAGE environment variable. <redisProxyVersion> - The tag to use for the Redis HAProxy container image. helpChatURL URL for getting chat help (this is typically your Slack channel for support). https://mycorp.slack.com/argo-cd helpChatText The text that appears in a text box for getting chat help. Chat now! image The container image for all Argo CD components. This overrides the ARGOCD_IMAGE environment variable. argoproj/argocd import Import configuration options for Argo CD. <object> <name> - The name of an ArgoCDExport resource from which data can be imported. <namespace> - The namespace for the ArgoCDExport resource referenced by name field. If this field is not set, the namespace of ArgoCDExport resource is set to the same namespace as Argo CD by default. ingress Ingress configuration options. <object> initialRepositories Initial Git repositories to configure Argo CD to use upon creation of the cluster. <empty> initialSSHKnownHosts Defines the initial SSH Known Hosts data for Argo CD to use at cluster creation to connect to Git repositories through SSH. ` <default_Argo_CD_Known_Hosts> <Excludedefaulthosts> - Indicates whether you want to add the default list of SSH Known Hosts provided by Argo CD. <keys> - Describes a custom set of SSH Known Hosts that you want to incorporate into your Argo CD server. kustomizeBuildOptions The build options and parameters to use with kustomize build . <empty> kustomizeVersions Defines a list of Kustomize versions that are configured in the Argo CD repo server container image. <empty> <path> - The path of the Kustomize version in the file system of the Argo CD repo server container image. <version> - The Kustomize version in the vX.Y.Z format configured in the Argo CD repo server container image. monitoring Defines the workload status monitoring configuration for your instance. <object> <disableMetrics> - Configure this field to enable or disable the collection of metrics for your instance. <enabled> - Indicates whether the workload status monitoring is enabled for your instance. notifications Notifications Controller configuration options. <object> <enabled> - The toggle to start the Notifications Controller. <env> - The environment to set for the Notifications Controller workloads. <image> - The container image for all Argo CD components. This property overrides the ARGOCD_IMAGE environment variable. <version> - The tag to use with the Notifications container image. <replicas> - The number of replicas to be run for the Notifications Controller. <resources> - The container compute resources. <logLevel> - The log level used by the Argo CD Application Controller component. Valid options are debug , info , error , and warn . nodePlacement Defines NodeSelectors and Tolerations for Argo CD workloads. <empty> <nodeSelector> - A map of key-value pairs for node selection. <tolerations> - Tolerations allow pods to create a schedule for nodes with matching taints. oidcConfig The OIDC configuration as an alternative to Dex. <empty> repositoryCredentials Git repository credential templates to configure Argo CD to use at cluster creation. <empty> prometheus Prometheus configuration options. <object> <enabled> - Toggle Prometheus support globally for Argo CD. <host> - The hostname to use for Ingress or Route resources. <ingress> - Toggles ingress for Prometheus. <route> - Route configuration options. <size> - The replica count for the Prometheus StatefulSet . rbac RBAC configuration options. <object> <defaultPolicy> - The policy.default property in the argocd-rbac-cm config map. The name of the default role that Argo CD falls back to when authorizing API requests. <policy> - The policy.csv property in the argocd-rbac-cm config map. This property includes CSV data about user-defined RBAC policies and role definitions. <policyMatcher> - The policy.matchMode property in the argocd-rbac-cm config map. This property has two options: 'glob' for glob matcher and 'regex' for regex matcher. <scopes> - The scopes property in the argocd-rbac-cm config map. Controls which OIDC scopes to examine during RBAC enforcement, in addition to sub scope. redis Redis configuration options. <object> <autotls> - Use the provider to create the Redis server's TLS certificate. Only the openshift value is currently available. <disableTLSVerification> - Defines whether the Redis server should be accessed using strict TLS validation. <image> - The container image for Redis. This overrides the ARGOCD_REDIS_IMAGE environment variable. <resources> - The container compute resources. <version> - The tag to use with the Redis container image. resourceHealthChecks Customize resource health check behavior. <empty> resourceIgnoreDifferences Customize resource ignore difference behavior. <empty> resourceActions Customize resource action behavior. <empty> resourceExclusions Completely ignore entire classes of resource group. <empty> resourceInclusions The configuration to identify which resource group/kinds are applied. <empty> resourceTrackingMethod The field used by Argo CD to monitor its managed resources. <label> server Argo CD Server configuration options. <object> <autoscale> - Server autoscale configuration options. <extraCommandArgs> - List of arguments added to the existing arguments set by the Operator. <grpc> - gRPC configuration options. <host> - The hostname used for Ingress or Route resources. <ingress> - Ingress configuration for the Argo CD server component. <insecure> - Toggles the insecure flag for Argo CD server. <resources> - The container compute resources. <replicas> - The number of replicas for the Argo CD server. Must be greater than or equal to 0 . If autoscale is enabled, replicas is ignored. <route> - Route configuration options. <service.Type> - The serviceType used for the service resource. <logLevel> - The log level to be used by the Argo CD server component. Valid options are debug , info , error , and warn . <logFormat> - The log format used by the Argo CD server component. Valid options are text and json . <env> - Environment to set for the server workloads. <enabled> - The flag to enable Argo CD server during the Argo CD installation. volumes - List of addition volumes configured for the Argo CD Application Controller component. This field is optional. volumeMounts - List of addition volume mounts configured for the Argo CD Application Controller component. This field is optional. initContainers - List of init containers for the Argo CD Application Controller component. This field is optional. sidecarContainers - List of sidecar containers for the Argo CD Application Controller component. This field is optional. annotations - List of custom annotations to add to pods deployed by the Operator. This field is optional. labels - List of custom labels to add to pods deployed by the Operator. This field is optional. enableRolloutsUI - When the parameter is set to true , the parameter enables the Argo Rollouts UI extension in Argo CD. The default value is set to false . sso Single Sign-on options. <object> <keycloak> - Configuration options for Keycloak SSO provider. <dex> - Configuration options for Dex SSO provider. <provider> - The name of the provider used to configure Single Sign-on. Currently, the supported options are Dex and Keycloak. statusBadgeEnabled Enable application status badge. true tls TLS configuration options. <object> <ca.configMapName> - The name of the ConfigMap which contains the CA certificate. <ca.secretName> - The name of the secret which contains the CA certificate and key. <initialCerts> - Initial set of certificates in the argocd-tls-certs-cm config map for connecting Git repositories through HTTPS. usersAnonymousEnabled Enables anonymous user access. true version The tag to use with the container image for all Argo CD components. Latest Argo CD version 2.2. Repo server properties The following properties are available for configuring the repo server component: Name Default Description resources <empty> The container compute resources. mountsatoken false Defines whether the serviceaccount token should be mounted to the repo-server pod. serviceaccount "" The name of the serviceaccount to use with the repo-server pod. verifytls false Defines whether to enforce strict TLS checking on all components when communicating with repo server. autotls "" Provider to use to set up TLS for the repo-server's gRPC TLS certificate. Currently, only the openshift value is acceptable. image argoproj/argocd The container image for Argo CD Repo server. This propery overrides the ARGOCD_REPOSERVER_IMAGE environment variable. version same as .spec.Version The tag to use with the Argo CD Repo server. logLevel info The log level used by the Argo CD Repo server. Valid options are debug , info , error , and warn . logFormat text The log format to be used by the Argo CD repo server. Valid options are text and json . execTimeout 180 Execution timeout in seconds for rendering tools, for example, Helm or Kustomize. env <empty> The environment to set for the Repo server workloads. enabled <empty> Flag that enables the Repo server during Argo CD installation. extraRepoCommandArgs <empty> Passes command-line arguments to the Repo server workload. The command-line arguments are added to the list of arguments set by the Operator. initContainers <empty> The number of init containers in the Argo CD Application Controller component. This field is optional. sidecarContainers <empty> The number of sidecar containers in the Argo CD Application Controller component. This field is optional. volumes <empty> Configures additional volumes used for the Repo server deployment. This field is optional. volumeMounts <empty> Configures additional volume mounts used for the Repo server deployment. This field is optional. replicas <empty> The number of replicas for the Argo CD Repo server. Must be greater than or equal to 0 . remote <empty> Specifies the remote URL of the Repo server container. annotations <empty> List of custom annotations to add to pods deployed by the Operator. This field is optional. labels <empty> List of custom labels to add to pods deployed by the Operator. This field is optional. 2.3. Enabling notifications with an Argo CD instance Argo CD notifications allow you to send notifications to external services when events occur in your Argo CD instance. For example, you can send notifications to Slack or email when a sync operation fails. By default, notifications are disabled in Argo CD instances. Prerequisites You have access to an OpenShift Container Platform cluster with cluster-admin privileges and are logged in to the web console. You have installed the Red Hat OpenShift GitOps Operator on your cluster. Procedure To enable notifications for an Argo CD instance using the OpenShift Container Platform web console, complete the following steps: Navigate to the Operators Installed Operators page. From the list of Installed Operators , select the Red Hat OpenShift GitOps Operator, and then click on the ArgoCD tab. Select the Argo CD instance name you want to enable notifications. For example, openshift-gitops . Click on the YAML tab, and then edit and set the spec.notifications.enabled parameter to true : Example apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: openshift-gitops spec: notifications: enabled: true #.... Click Save . Tip Alternatively, you can enable notifications by using the oc patch command in the Openshift CLI. For example: oc patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}' Additional resources Argo CD notifications controller 2.4. NotificationsConfiguration custom resource properties The NotificationsConfiguration resource is a Kubernetes custom resource (CR) that manages notifications in a Kubernetes cluster. In Red Hat OpenShift GitOps, you can add templates, triggers, services, and subscription resources to an Argo CD Notifications config map by using the NotificationsConfiguration CR. When you create a cluster in Red Hat OpenShift GitOps with notifications enabled, a NotificationsConfiguration CR is created by default with the name default-notifications-configuration . Any change made in the existing configuration of the NotificationsConfiguration CR is replicated in the Argo CD Notifications config map. For example, if the user adds trigger configuration in the NotificationsConfiguration resource, this configuration is read, processed, and updated in the Argo CD Notifications config map. Important Any configuration changes must be updated in the default-notifications-configuration CR. Custom resources created by the users for NotificationsConfiguration resource are not supported. Any modification to the Argo CD argocd-notifications-cm config map is overridden by the changes made in the NotificationsConfiguration CR. Table 2.1. NotificationsConfiguration custom resource properties Properties Default Description Templates <empty> Templates are used to generate the notification template message. Triggers <empty> Triggers are used to define the condition when a notification is sent to the user and the list of templates required to generate the message. Services <empty> Services are used to deliver a message. Subscriptions <empty> Subscriptions contain centrally-managed global application subscriptions. The following examples define how to add templates, triggers, services, and subscription resources to the Argo CD argocd-notification-cm config map by using the default-notifications-configuration custom resource. Example for 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 Default name of the NotificationsConfiguration CR in a cluster. 2 An example custom template configuration for the NotificationsConfiguration CR. Example for 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 Default name of the NotificationsConfiguration CR in a cluster. 2 An example custom trigger configuration for the NotificationsConfiguration CR. Example for services apiVersion: argoproj.io/v1alpha1 kind: NotificationsConfiguration metadata: name: default-notifications-configuration 1 spec: Services: service.slack: | token: USDslack-token 2 username: <override-username> # optional username icon: <override-icon> # optional icon for the message (supports both emoji and url notation) 1 Default name of the NotificationsConfiguration CR in a cluster. 2 An example custom service configuration for the NotificationsConfiguration CR. Example for 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:test@gmail.com 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 Default name of the NotificationsConfiguration CR in a cluster. 2 An example custom subscription configuration for the NotificationsConfiguration CR. You can configure the NotificationsConfiguration CR by using the OpenShift Container Platform web console or the CLI ( oc ). 2.4.1. Configuring the NotificationsConfiguration CR by using the web console You can configure the NotificationsConfiguration custom resource (CR) by using the web console. Prerequisites You have access to an OpenShift Container Platform cluster with cluster-admin privileges and are logged in to the web console. You have installed the Red Hat OpenShift GitOps Operator on your cluster. You have enabled notifications for the Argo CD instance. For more information, see "Enabling notifications with an Argo CD instance". Procedure In the Administrator perspective of the OpenShift Container Platform web console, expand Operators Installed Operators . From the list of Installed Operators , select the Red Hat OpenShift GitOps Operator, and then click on the NotificationsConfiguration tab. On the NotificationsConfigurations page, click default-notifications-configuration . On the default-notifications-configuration page, click YAML and add the configuration for any supported resources such as templates , triggers , services , and subscriptions . For example, under templates in the code, add the following sample configuration: Example template configuration template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. Click Save . Verify that the configuration changes made in the NotificationsConfiguration CR are reflected in the argocd-notifications-cm config map: Go to Workloads ConfigMaps . Click argocd-notifications-cm and select the YAML tab. Scroll through the page in the YAML tab to verify the sample configuration added for the supported resources. 2.4.2. Configuring the NotificationsConfiguration CR by using the CLI You can configure the NotificationsConfiguration custom resource (CR) by using the CLI ( oc ). Prerequisites You have access to an OpenShift Container Platform cluster with cluster-admin privileges. You have installed the Red Hat OpenShift GitOps Operator on your cluster. You have enabled notifications for the Argo CD instance. For more information, see "Enabling notifications with an Argo CD instance". Procedure Edit the default NotificationsConfiguration CR in the cluster by running the following command: USD oc edit notificationsconfiguration default-notifications-configuration -n <namespace> where: default-notifications-configuration Specifies the name of the default NotificationsConfiguration CR. <namespace> Specifies the name of the namespace. Under the templates section of the CR, add a configuration similar to the following example: Example template configuration template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}. Verify the contents of the argocd-notifications-cm config map by running the following command: USD oc edit cm argocd-notifications-cm -n <namespace> The changes made in the existing configuration of the NotificationsConfiguration CR are reflected in the argocd-notifications-cm config map. 2.5. Additional resources Installing a user-defined Argo CD instance

Commands:
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: openshift-gitops spec: notifications: enabled: true #.
patch argocd openshift-gitops -n openshift-gitops --type merge --patch '{"spec": {"notifications": {"enabled": true}}}'
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}}.
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]
apiVersion: argoproj.io/v1alpha1 kind: NotificationsConfiguration metadata: name: default-notifications-configuration 1 spec: Services: service.slack: | token: USDslack-token 2 username: <override-username> # optional username icon: <override-icon> # optional icon for the message (supports both emoji and url notation)
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:test@gmail.com 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)
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
oc edit notificationsconfiguration default-notifications-configuration -n <namespace>
template.my-custom-template: | message: | Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
oc edit cm argocd-notifications-cm -n <namespace>