Services Work Pricing Blog About Book a free call →

EKS Argo CD Notifications: how to try it this week

AWS added Argo CD Notifications to the EKS Capability for Argo CD. What changed, who needs it, its limits, and how to test it safely.

On November 3, 2026, AWS announced Argo CD Notifications in the Amazon EKS Capability for Argo CD. Your team can now get a message when an application syncs, fails to sync, or changes health, without anyone watching the Argo CD screen. There is no extra charge for the feature. If you already run the managed capability, it is a small, low-risk change worth testing this week. If you run Argo CD yourself, there is nothing here you must act on.

What did AWS announce, and when?

The announcement is dated November 3, 2026. It says the managed Argo CD capability now includes Argo CD Notifications, configured the way upstream Argo CD does it: triggers and templates live in the cluster, and each application subscribes through an annotation. It says notifications reach 16 services, including Slack, PagerDuty, Opsgenie, Amazon SQS and Amazon EventBridge.

The EKS User Guide page holds the details. As of November 2026, it describes three parts:

  • An argocd-notifications-cm ConfigMap that defines services, triggers and message templates.
  • An optional argocd-notifications-secret Secret for credentials such as a Slack token.
  • An annotation on each Application that picks a trigger and a destination.

What actually changed compared with before?

Argo CD itself has had a notifications engine for a long time, and the upstream documentation covers it. What is new is that the AWS-managed capability now runs a managed notifications controller for you, so you do not operate that piece yourself.

Two things differ from a self-managed install, per the User Guide:

  • Opt-in label. The controller ignores a ConfigMap unless it carries the label eks.amazonaws.com/managed-notifications: "enabled". The value must be exactly enabled.
  • No starter catalog. The capability does not create these resources and does not ship predefined triggers or templates. You write the ones you need.

Who should care, and who can ignore it?

Pay attention if you:

  • Use the EKS Capability for Argo CD and today learn about failed deploys from a customer, a dashboard or a developer who happens to look.
  • Want deploy events in an incident tool, a queue or an event bus, so other automation can react.
  • Have several teams with their own namespaces and want each to own its alerts.

You can ignore it if you self-host Argo CD (you already have upstream notifications), if you do not use Argo CD, or if your release process already alerts people reliably from CI.

What does it cost, and what are the limits?

The announcement says the notifications feature has no additional charge. Standard charges still apply to the services you send to, such as Amazon SQS or Amazon EventBridge. Prices for those change over time, so check the AWS pricing pages before you plan volume.

The User Guide lists limits worth reading before you design anything (as of November 2026):

  • Services. Only the 16 listed service types work. Upstream types such as email, webhook and teams are not available in the managed capability, and a service. key for any other type is dropped.
  • One bad service can silence a namespace. An unsupported type is dropped on its own, but an invalid definition of a supported service fails the whole namespace's configuration. Until you fix it, that namespace sends nothing.
  • Size. A template or trigger over 64 KiB is dropped. A ConfigMap over 256 KiB in total is ignored completely.
  • Destinations. For services that take a URL, it must use https, point to a host name (not an IP address) that resolves to a public address, and TLS verification is always on.
  • Other namespaces. By default, only your primary Argo CD namespace is read. Extra namespaces need self-service mode, each listed by exact name. A wildcard such as team-* is not read for notifications, and a change to argocd-cmd-params-cm can take up to about 10 minutes to apply.

A particular trap: turning on self-service mode withholds the {{ .secrets }} template variable from every configuration, including the primary one. The guide tells you to reference credentials from the service definition with $ instead.

How do you try it safely this week?

Start in a non-production cluster, or with one low-risk application in production.

  1. Create the ConfigMap with the opt-in label. Use one trigger, for example "sync succeeded", and one template with a single-line message. The User Guide has a working Slack example you can copy.
  2. Send to a test channel or queue. Do not start with your on-call pager.
  3. Subscribe one Application. Add the annotation, for example notifications.argoproj.io/subscribe.on-sync-succeeded.slack: my-channel, then sync and watch the channel.
  4. Add a failure trigger next. A "sync failed" and a "health degraded" message are the ones that save time. You write these triggers yourself, since the capability ships none. Send them somewhere people read.
  5. Keep raw credentials out of the cluster. For Slack-style tokens, the guide says you can store an AWS Secrets Manager ARN as the value and give the Capability Role read access. The capability resolves it at send time and reuses the result for about 5 minutes.
  6. Prefer AWS-native targets where you can. The awssqs and eventbridge services authenticate with your IAM Capability Role, so no keys sit in a Secret. Give the role only the statements you need.

If nothing arrives, run kubectl describe configmap argocd-notifications-cm -n argocd. The capability records events such as NotificationConfigInvalid and NotificationSecretRejected there, and NotificationFailed on the Application. One EventBridge detail from the guide: a call that matches no rule succeeds silently, so add a rule on your source value with a target you can read, such as a log group.

What would we check first before adopting it?

In practice, we would start with these checks:

  • Who reads each message. A notification nobody owns becomes noise in a month. We decide the recipient and the action before we write the template.
  • Failure paths, not just success. Success messages feel good; failed syncs and degraded health are what you pay for.
  • Blast radius of a typo. Because one invalid service definition silences a namespace, we would test configuration changes in a staging cluster and watch for NotificationConfigInvalid before production.
  • Where secrets live. We prefer IAM-based targets and Secrets Manager references over raw tokens in a Secret.
  • Alert fatigue. Start with two or three triggers. Add more only when someone asks for them.

If you want a second pair of eyes on your delivery pipeline, our services page describes how we work with SaaS teams.

This post is general information based on public AWS documentation as of November 2026. Check the current documentation and test in your own environment before you change production.