Key ingress routes by workload UUID and replicate internal DNS names through cluster network revisions on every node. Reconcile name changes and deletions without relying on mutable container labels.
Require route and name reconciliation for network convergence and extend lifecycle, ingress, and end-to-end coverage.
Allow cluster workloads to configure domains and HTTP ports, and enable
individual nodes as ingress proxies. Reconcile Caddy routes and firewall
rules as network revisions so domain changes apply without redeploying.
Refresh ingress routing when workload placements change and merge node
metadata under a row lock to preserve concurrent updates.
Add ingress controls, domain links, and regression and end-to-end coverage.
Per-Node network convergence: an offline Node no longer blocks the
cluster. Each Node tracks converged, pending, or error with backoff;
the cluster is active, degraded, or error. A scheduled check and Flux
reconnects repair only the Nodes that are behind or drifted. An offline
Node can be removed; its leave runs when it reconnects. Deploys to a
degraded cluster go only to converged Nodes.
Health notifications: one notification when a Node is unreachable for
3 minutes, when a cluster network is degraded or failed, and when each
recovers. They reuse the server reachable and unreachable toggles.
Staged Flux CA rotation: distribute the old and new CA over Flux, wait
for every Node to acknowledge, switch the Flux leaf to the new CA, then
retire the old CA. Supports cancel, force, and catch-up for offline
Nodes. Available to instance admins at /settings/node-trust and through
`flux:rotate-ca`. Renewing the Flux certificate is now instance-admin
only.
Stale recovery closes an uncertain workload operation after one minute
when fresh inventory shows that the requested state already runs.
Add `scripts/node-e2e` and `dev:node-e2e`, a QEMU end-to-end suite for
Coolify down, reboot recovery, stop markers, Flux restart, offline
Nodes, CA rotation, and offline removal.