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: it is recorded as Processing when the new revision starts rolling out, updated to Done when the rollout completes, and updated to Failed when it is aborted.
Both the canary and blue-green strategies are recorded. Analysis run failures, pod replica changes, and other Rollout events are not changes and are not recorded.
In Flashduty On-call
- In the Flashduty console, go to Integration Center → Change Events
- Select Argo Rollouts and enter an integration name
- To assign changes to specific channels, add rules under the integration’s Routes that match labels such as
rollout,namespace, orstrategy - 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 Merge it into If the ConfigMap does not exist yet, first run
flashduty-change.yaml and replace url with the push URL copied above (including ?integration_key=...):argo-rollouts-notification-configmap (--type merge only adds or updates the keys above and leaves existing configuration alone):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 a trigger’s name from the Kubernetes event reason:
on-rollout-updated,on-rollout-completed,on-rollout-aborted, andon-skip-stepsfire on the matching event, so the trigger names cannot be changed and have nowhencondition - The
eventvalue 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, andrevisionmust stay event_timeis the controller’s time when it sends the notification (Unix seconds); Flashduty uses it to apply status updates in order- The service name
flashduty-changecan be changed, but the subscription annotations and the key underwebhook: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
subscriptionsinargo-rollouts-notification-configmap. Ifsubscriptionsalready exists, append to the existing list instead of overwriting it with the merge command from the previous step
3
Verify release records
Argo Rollouts has no way to send a test message. Change the image of a subscribed Rollout (for example
kubectl argo rollouts set image <rollout name> <container>=<new image>) and confirm that a Processing change appears in the Flashduty change list, then updates to Done when the rollout completes (or after you promote it through the last step).What one change is
One change is one release revision of one Rollout. The change key (change_key) is
<rollout_uid>/<revision>:
rollout_uidis the Rollout’smetadata.uid. The UID Kubernetes assigns to each object is unique for the whole life of the cluster, so a Rollout with the same name in another cluster, or a Rollout deleted and recreated, is a different Rolloutrevisionis the Rollout’srollout.argoproj.io/revisionannotation. Every pod template change, including a rollback to an older version, increases the revision by 1
event, rollout_uid, revision, or event_time.
Status mapping
Done and Failed are end states; Flashduty records the change’s end time.
event values are case-sensitive, and other values are rejected.
- When it rolls back to the stable revision, Argo Rollouts emits only
SkipStepsand noRolloutCompleted, soon-skip-stepsis 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 retryand the rollout eventually completes, the same change is updated 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
FAQ
Why are no changes received?
Why are no changes received?
- Check the Argo Rollouts controller logs (
kubectl logs -n argo-rollouts deploy/argo-rollouts) and confirm the Rollout has anotifications.argoproj.io/subscribe.<trigger>.flashduty-changeannotation, or thatsubscriptionscontains the trigger - If the logs show
template 'flashduty-change-updated' is not supported, confirm the configuration was written toargo-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
The change stays in Processing?
The change stays in Processing?
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.
Is the same notification recorded twice if it is sent again?
Is the same notification recorded twice if it is sent again?
No. A notification with the same event and the same time is recorded once.
The logs show failed with error code 400?
The logs show failed with error code 400?
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.