A Project Capsule addon

Kubernetes changes.
On your schedule.

Plan maintenance, scale workloads, and give your users advance notice.
One cluster-scoped ChangeWindow keeps it together.

Open source · Kubernetes native · Independent of Capsule core

What is Change Windows?

Change Windows helps organizations plan routine IT maintenance with fewer surprises and less manual coordination. It gives teams advance notice and can prevent conflicting changes while planned work is underway. It can also pause development environments overnight and bring them back in the morning, helping control infrastructure costs. These routines run automatically on your Kubernetes platform, so teams can spend less time coordinating maintenance and more time delivering services.

One resource. A complete window.

See what a ChangeWindow does

Select a YAML block to explore its configuration and open the matching reference.

quickstart.yamlChangeWindow · development-nights
Download YAML
apiVersion: addons.projectcapsule.dev/v1alpha1
kind: ChangeWindow
metadata:
  name: development-nights
spec:
  namespaceSelectors:
    - matchLabels:
        environment: development
  schedules:
    - name: nights
      cron: "0 19 * * 1-5"
      timeZone: Europe/Zurich
      duration: 12h
  targets:
    - name: apps
      apiVersion: apps/v1
      kind: Deployment
      selector:
        matchLabels:
          downscaling: enabled
  serviceAccount:
    namespace: schedule-action-controller-system
    name: change-window-executor
  actions:
    - name: downscale
      targets: [apps]
      capture:
        replicas:
          subresource: scale
          path: /spec/replicas
      onStart:
        apply:
          subresource: scale
          force: true
          template: |
            spec:
              replicas: 0
      onEnd:
        apply:
          subresource: scale
          template: |
            spec:
              replicas: {{ .captured.replicas }}
  admission:
    - name: freeze-scaling
      targets: [apps]
      operations: [UPDATE]
      subresources: ["", scale]
      when: Active
      audience:
        include:
          - kind: Group
            name: developers
      matchConditions:
        - name: replicas-changed
          expression: "object.spec.replicas != oldObject.spec.replicas"
      message: "Replica changes are frozen during maintenance."
  config:
    admission:
      warnings:
        - name: upcoming
          targets: [apps]
          operations: [CREATE, UPDATE, DELETE]
          subresources: ["", scale]
          when: BeforeStart
          within: 1h
          message: "Maintenance starts at {{ .window.start }}."

Schedule resource changes

Downscale development workloads overnight and restore their replicas in the morning. Apply templates at either end of a window.

Resource actions →

Protect maintenance

Select namespaces and resource kinds, then block writes during maintenance. Return a clear message and warn users before it starts.

Admission and warnings →

See what’s coming

Combine schedules across time zones. Inspect status and metrics, or browse the calendar and active maintenance topics in Headlamp.

Headlamp integration →

Reliable operations, with or without Capsule

Change Windows is being developed under the Project Capsule umbrella. Capsule is a CNCF Sandbox project. The addon grew out of a platform engineering need: making operations more reliable for platforms serving multiple tenants. Coordinated maintenance, predictable resource changes, and advance notice help platform teams and their tenants work together with fewer surprises.

You can use Change Windows with Capsule or on its own. It selects resources through standard Kubernetes APIs and labels; Capsule Tenant objects are not required. The same scheduling and admission features are available in either setup.

No technology lock-in. Keep your existing cloud provider, Kubernetes distribution, and deployment tools. Capsule and Headlamp integrations are optional, so adopting Change Windows does not tie your platform to a vendor or the rest of the Capsule stack.