Skip to content

Zero-Downtime Deployment

With zero-downtime deployment (ZDD), your server is safely taken out of traffic during updates, its health is verified, and it is returned to traffic — just by adding a few lines to your CI/CD pipeline. Configuration lives at Console → WAF → [domain] → Deploy.

The flow has four steps: drain → deploy → validate → rejoin traffic. During the drain, no new requests are sent to the server and in-flight connections finish; visitors keep being served without interruption by the other servers in the group.

  1. Open Console → WAF → [domain] → Deploy and start the New Deployment Pipeline wizard.

  2. In the Target Group step, pick the upstream group you deploy to. Its servers are listed.

  3. Fill in the Settings step:

    • Pipeline name — up to 64 characters (e.g. web-1 production)
    • Drain time — 10–300 seconds, default 60 seconds. New connections stop; existing ones are given this long to finish.
    • Validation mode — http (default) or none. In http mode you set a validation path (default /) and the expected status codes; after the deploy HEIMWALL requests this path to verify health.
    • Allowed IPs — (optional) one IP/CIDR per line; the token only works from these addresses. We recommend entering your CI/CD server’s IP.
  4. Click Create. A deploy token is shown — “This token is shown only NOW — copy it and store it safely.” Save it in your CI/CD system’s secret store.

When a pipeline is created, the console shows a ready-to-copy shell snippet — to reach it again later, use the Show CI Commands button on the pipeline card. Paste the snippet into your CI/CD system and define your deploy token as a secret; that’s all.

The flow has four logical steps:

  1. Begin — you announce the server being deployed (URL or label); HEIMWALL starts draining it from traffic.
  2. Wait (status) — the snippet polls until the drain completes and the deploy window opens.
  3. Deploy — your own deploy steps run (copy code, restart service…).
  4. Commit — HEIMWALL runs the health validation; if it passes, the server rejoins traffic. If needed, abort cancels the deployment and the server returns to traffic.

The exact command addresses and parameters are shown only in the console, as a security measure. Authentication uses a per-pipeline deploy token; the limit is 60 requests/minute per pipeline.

StateConsole labelMeaning
drainingDrainingDrain window active, connections finishing
readyDeploy window openDrain complete, awaiting commit
validatingValidatingHealth validation running
succeededSucceededValidation passed, server back in traffic
failedFailedValidation failed, server kept out of traffic
abortedAbortedDeployment cancelled manually
expiredIncompleteTimed out — no commit arrived, server kept out of traffic

In-progress deployments appear in an amber banner at the top of the Deploy page and can be stopped with the Abort button. The history section lists all deployments with date, target, state and the CI note (20 per page).