Skip to main content
Plan requirement: This feature requires an On-call Standard or higher subscription. Learn more
The Argo Rollouts controller has built-in Notifications (based on Argo’s notifications-engine) that send messages while a Rollout progresses. This integration provides an argo-rollouts-notification-configmap configuration with one webhook service, four request body templates, and four triggers. Each pod template change of a Rollout (a new release revision) becomes one Flashduty change. Flashduty records it as Processing when the new revision starts rolling out. It updates the change to Done when the rollout completes, or to Failed when the rollout is aborted. Flashduty records both canary and blue-green strategies. Analysis run failures, pod replica changes, and other Rollout events are not changes, so Flashduty doesn’t record them.

In Flashduty On-call

  1. In the Flashduty console, go to Integration Center → Change Events
  2. Select Argo Rollouts and enter an integration name
  3. To assign changes to specific channels, add rules under the integration’s Routes that match labels such as rollout, namespace, or strategy
  4. Click Save and copy the generated Push URL

Configure Argo Rollouts

The steps below need Kubernetes permission to edit ConfigMaps in the Argo Rollouts controller namespace (argo-rollouts by default) and to edit annotations on Rollouts. The Argo Rollouts controller must be able to reach the domain of the push URL.
1

Add the webhook service, templates, and triggers

Save the following as flashduty-change.yaml and replace url with the push URL copied above (including ?integration_key=...):
Merge it into argo-rollouts-notification-configmap (--type merge only adds or updates the keys above and leaves existing configuration alone):
If the ConfigMap does not exist yet, first run kubectl create configmap argo-rollouts-notification-configmap -n argo-rollouts. If Argo Rollouts is installed with a Helm chart, put the same service, templates, and triggers into the chart’s notifications configuration; otherwise the next upgrade overwrites the manual change.Notes:
  • Argo Rollouts derives each trigger’s name from the Kubernetes event reason. on-rollout-updated, on-rollout-completed, on-rollout-aborted, and on-skip-steps fire on the matching event. So you can’t rename these triggers, and they have no when condition
  • The event value in each template is fixed; Flashduty uses it to tell what happened, so do not change it
  • Every value in the templates is escaped with toJson; do not remove it. Do not rename the fields; event, event_time, rollout_uid, and revision must stay
  • event_time is the controller’s time when it sends the notification (Unix seconds); Flashduty uses it to apply status updates in order
  • The service name flashduty-change can be changed, but the subscription annotations and the key under webhook: in the templates must match it
If you installed Argo Rollouts’ notifications-install.yaml, the triggers on-rollout-updated, on-rollout-completed, and on-rollout-aborted already exist (each is a single line such as - send: [rollout-updated]). The configuration above overwrites them, and existing Slack or email subscriptions stop receiving notifications. Keep the existing templates and write the triggers as below; the two templates are merged when sent, and each notification service uses only its own part:
on-skip-steps is not a built-in trigger; use it as written above.
2

Subscribe to notifications

A trigger sends only when it is subscribed. Choose a scope:
  • A single Rollout: add four annotations to the Rollout
  • All Rollouts: add an entry to subscriptions in argo-rollouts-notification-configmap. If subscriptions already exists, append to the existing list instead of overwriting it with the merge command from the previous step
Subscribe all four triggers together: with only the start event subscribed, changes stay in Processing.
3

Verify release records

Argo Rollouts has no way to send a test message. Change the image of a subscribed Rollout, for example with kubectl argo rollouts set image <rollout name> <container>=<new image>. Confirm that a Processing change appears in the Flashduty change list. It updates to Done when the rollout completes, or after you promote it through the last step.

How changes are merged

One change is one release revision of one Rollout:
  • The start, completion, and abort of one revision update the same change
  • Two releases of the same Rollout are two changes, and a rollback is a new change
  • Same-named Rollouts in different clusters, and Rollouts deleted and recreated, are never merged
Every pod template change, including a rollback to an older version, creates a new revision. Creating a Rollout that already carries the subscription annotations also records a change for revision 1 (Processing, then Done once it is available). Changes that do not alter the pod template, such as replica count or rollout steps, create no new revision and record no change.

Status mapping

Done and Failed are end states; Flashduty records the change’s end time. event values are case-sensitive, and Flashduty rejects other values.
  • When it rolls back to the stable revision, Argo Rollouts emits only SkipSteps and no RolloutCompleted, so on-skip-steps is also recorded as Done
  • A blue-green release waiting for a manual promote, or a canary release stopped at a pause step, stays in Processing
  • After an abort, if you run kubectl argo rollouts retry and the rollout eventually completes, Flashduty updates the same change from Failed to Done

Change content

  • Title: <namespace>/<rollout name>: rollout revision <revision> (<images>); images of several containers are comma-separated, and the parenthesized part is omitted when there are none
  • Link: Argo Rollouts has no web page for a single release, so changes have no link
Use labels for routing and for filtering the change list:

FAQ

  • Check the Argo Rollouts controller logs (kubectl logs -n argo-rollouts deploy/argo-rollouts) and confirm the Rollout has a notifications.argoproj.io/subscribe.<trigger>.flashduty-change annotation, or that subscriptions contains the trigger
  • If the logs show template 'flashduty-change-updated' is not supported, confirm the configuration was written to argo-rollouts-notification-configmap; for Helm installs, check the corresponding values
  • A Rollout whose pod template did not change creates no new revision, so there is no notification
Not all four triggers are subscribed, or the release has not finished (a blue-green release waiting for a promote, or a canary release stopped at a pause step). Deleting a Rollout does not update its change.
No. Flashduty records an notification with the same event and the same time only once.
Confirm the templates match this page. The response names the missing or unsupported field, for example rollout_uid is missing, revision is missing, or unsupported event.
For the related configuration, see the Argo Rollouts documentation on Notifications, and the notifications-engine Webhook service, Triggers, and Templates.