Everything the app does by itself, in one table.
The backups on a schedule, image updates at a fixed time, and the tasks of the app itself: where and when each one runs, how the last run went and when the next one comes. Run one now, pause it, change it.
What you can do
One table
The backups on a schedule, scheduled image updates, and the tasks of the app itself: watching the swarm for notifications and measuring the load. Per row where and when it runs, how the last run went and when the next one comes.
Filter it
Filter by kind and status, and hide the tasks of the app itself.
Run, pause, change
Run a task now, pause or resume it, change it or remove it. A paused task does not catch up on what it missed.
Image updates at a fixed time
Daily or weekly, for one service or every service of a stack. The app looks up which image each tag points to now and rolls out only the services whose image changed, with their own update settings: one by one, rolling back on failure. A service whose image did not change does not restart.
Only what has a tag
An image with only a digest has no tag to follow, and is left alone.
When an update fails
A scheduled update that fails sends a notification; one that the swarm rolls back by itself does too.
Example
Sunday, 04:00: the latest patch, and no rollout when nothing changed.
shop runs nginx:1.27 and myorg/api:2. A weekly update on Sunday at 04:00 picks up the latest 1.27.x patch and a new build of api:2, without a rollout when nothing changed.
Private registries
An image behind a login is looked up with yours.
An image from a registry that needs a login is looked up with the login from docker login on this computer, and that login goes along with the rollout. Without it, the image shows as a problem on the task.
All features