Suspending Non-Production Environments and Databases

Suspend non-production Environments and databases automatically during off-hours to cut costs, and resume them on schedule or on demand.

Non-production Environments — dev, staging, demo, and any other
non-production stage — can be automatically suspended during
off-hours to reduce infrastructure costs, on both AWS and GCP.
Databases can be put on their own schedule in the same way.

A suspended Environment has its workloads scaled to zero — no pods
running, no compute costs. Resuming restores all workloads.

Scheduled suspension can reduce non-production infrastructure costs by up
to 40%.

Scheduling automatic suspension

Suspension is configured per application, on its Schedule tab in
SVIEW. All times are in UTC.

  1. Open the Environment from the Dashboard.
  2. Open the Schedule tab.
  3. Set Schedule type to Cron (recurring) or Date (one-time).
  4. Configure the SUSPEND row:
    • Every: day, or week on a chosen day or day range
    • At: the UTC time the Environment should suspend
  5. Configure the RESUME row the same way.
  6. Click Save.

The schedule takes effect within about a minute. There is nothing to
restart.

⚠️

Times are UTC, and do not follow your local clock changes. Convert
your local window before entering it, and adjust it again at each
daylight-saving change, or your window will shift by an hour.

How the two times work together

The Environment is suspended for the whole period between a suspend time
and the next resume time — the suspend time does not have to recur on the
same days as the resume time. That is what lets a single schedule cover
both nights and full weekends.

Example — nights only. Suspend every day at 20:00, resume every day at 07:00: the Environment runs 07:00–20:00 UTC, every day including
weekends.

Example — nights plus the whole weekend. Set both rows to week on
MON-FRI — suspend at 21:30, resume at 04:30. Each weekday night the
Environment goes down at 21:30 and comes back at 04:30. No suspend is
scheduled on Saturday or Sunday, so after Friday night's suspend the
Environment simply stays down until Monday's resume.

Suspending or resuming immediately

The Override buttons on the same tab — Suspend now and Resume
now
— take effect straight away and hold until you clear them.

  • Suspend now keeps the Environment down regardless of the schedule.
  • Resume now keeps it up regardless of the schedule — use it when you
    need to work outside the usual window.

Clear the override and save to hand control back to the schedule.

What happens during suspension

  • All application workloads scale to zero — no running containers.
  • Persistent storage remains intact — data is not lost.
  • The Kubernetes control plane stays running — only workloads are
    suspended.
  • Databases (RDS, Cloud SQL) remain running unless separately
    scheduled
    — see below.
⚠️

Suspension applies to the whole Environment's cluster, not to a single
namespace.
Anything else running in that cluster goes down with your
workloads for the duration of the window — including database access
through Teleport, and any monitoring or CI components hosted in the same
cluster. If something in there has to stay available, raise a request
before scheduling.

Resuming typically takes 5–10 minutes from the resume time before all
Components are healthy — nodes have to start before pods can be
scheduled, and a suspended database takes a few minutes to accept
connections again.

Suspending databases separately

Individual database instances can also be put on their own suspend/resume
schedule, independently of the Environment they belong to — supported for
AWS RDS, GCP Cloud SQL, PostgreSQL, and MySQL.

ℹ️

Suspending the Environment does not suspend its databases, and vice
versa.
Each database needs its own schedule configured separately in
SVIEW — there is currently no option to have a database inherit its
cluster's schedule.

  1. Open the database instance in SVIEW.
  2. Configure its own SUSPEND / RESUME schedule on the Schedule
    tab, the same way as for an Environment.
👍

Recommended sequencing: bring the database up approximately 30
minutes before
its application cluster resumes (and shut it down
after). Some applications only retry a database connection a limited
number of times on startup and will fail to connect if they start
before the database is ready.

⚠️

A database that has a read replica cannot be suspended. Both AWS RDS
and GCP Cloud SQL refuse to stop a primary instance while it has a read
replica. This is a cloud provider restriction, not a platform one. A
suspend schedule on such a database never takes effect: the database
keeps running and the platform keeps retrying the stop.

For a database like this, either:

  • keep it running: use Resume now on its Schedule tab, so the
    schedule stops trying to suspend it; or
  • remove the read replica, if the non-production Environment does not
    need it. The database then follows its schedule.

Production Environments

Automatic suspension should only be configured for non-production
Environments. If you accidentally suspend a production Environment, use
Resume now immediately or raise a request.

Related articles


Did this page help you?