Argo Rollouts
Buoy detects Argo Rollouts by their group and kind (argoproj.io, Rollout). The detail view gains a Rollout tab and a set of actions in the Actions menu. The Pods tab works out of the box because the Rollout selector is honored the same way Buoy honors a Deployment selector.
Rollout Tab
Two layouts, one per strategy. Buoy picks based on spec.strategy.canary vs. spec.strategy.blueGreen.
Headline
Pills across the top of the tab: phase, strategy (Canary or Blue-Green), and conditional paused, aborted, or promote-full badges. For canary, the headline also shows the current step (step N of M) and the live canary / stable weight split from status.canary.weights.
Banners
- Aborted: the rollout has been aborted; the Retry action will clear it.
- Promote-full requested: a Promote Full has been issued and is propagating.
- Pause conditions: the rollout is parked. Each
status.pauseConditionsentry shows its reason. This is the panel that tells you why a rollout is stuck and that Promote will release it.
Replicas
Desired, ready, available, updated, and unavailable counts, plus the HPA-managed replica count when an HPA owns the rollout.
Canary Panel
Stable and canary service names, the configured traffic provider, maxSurge, and maxUnavailable. A stacked weight bar shows the current stable | canary split.
The spec.strategy.canary.steps[] list renders with each step tagged done, current, or pending. The “current” tag tracks status.currentStepIndex, which points at the next step to execute, so a step at the current index is the one that is running or paused.
Blue-Green Panel
Two side-by-side lanes labeled Active and Preview, each showing the bound Service and the pod-template-hash from status.blueGreen.activeSelector and previewSelector. The auto-promotion flags and scaleDownDelay metadata appear alongside.
ReplicaSets
Watched live with the Rollout’s selector. Each row is tagged stable, canary, active, preview, or old by comparing the RS’s rollouts-pod-template-hash label against status.stableRS, status.currentPodHash, status.blueGreen.activeSelector, and status.blueGreen.previewSelector. Click a row to open the RS detail.
Conditions
The standard conditions table; rendered only when non-empty.
Actions
All actions live in the Actions menu and route through a confirmation modal. Which actions appear depends on the current state (paused, has pause conditions, aborted).
| Action | Visible when | Effect |
|---|---|---|
| Restart | Always | Stamps spec.restartAt with the current timestamp. The controller recreates pods older than that timestamp. |
| Pause | Not currently paused | Sets spec.paused = true. Distinct from a canary step’s pause condition. |
| Resume | spec.paused == true | Clears spec.paused. Does not clear canary-step pause conditions. |
| Promote (step) | Paused or has pause conditions | Nulls status.pauseConditions, clears status.abort, and clears spec.paused. Advances past the current canary pause. Routed through the /status subresource. |
| Promote Full | Paused or has pause conditions | Sets status.promoteFull = true. Skips every remaining canary step. Routed through the /status subresource. |
| Abort | Not aborted | Sets status.abort = true. Scales the canary ReplicaSet to zero, routes 100% of traffic to stable. Routed through the /status subresource. |
| Retry | Aborted | Clears status.abort. The controller resumes from the current step. Routed through the /status subresource. |