Skip to content

On Kubernetes#

This document contains instructions for installing, uninstalling, and configuring the Hibernation Operator on Kubernetes.

  1. Installing via Helm CLI
  2. Uninstall

Requirements#

  • A Kubernetes cluster (v1.24 or higher)
  • Helm CLI
  • kubectl
  • (Optional but recommended) cert-manager — required only if you enable the webhook

The Hibernation Operator uses admission webhooks for CR validation (e.g., cron format checks). If you disable the webhook (webhook.create=false), cert-manager is not required.

Installing via Helm CLI#

The public Helm chart for the Hibernation Operator is available in the public Stakater Helm repository.

Install the Operator#

Install into the recommended namespace hibernation-system:

helm install hibernation-operator oci://ghcr.io/stakater/public/charts/hibernation-operator \
  --namespace hibernation-operator-system \
  --create-namespace

This installs:

  • The Hibernation Controller, which manages both ClusterResourceSupervisor and ResourceSupervisor
  • The webhook, for admission validation
  • The required RBAC, CRDs, and Service resources

Optional: Enable ArgoCD Integration#

If your workloads are managed by ArgoCD, enable this so the operator can stop ArgoCD from syncing hibernated applications back up. See ArgoCD Integration for what it does and does not do:

helm install hibernation-operator stakater/hibernation-operator \
  --namespace hibernation-system \
  --create-namespace \
  --set argoCD.enabled=true \
  --set argoCD.namespace=argocd

Wait for Pods to Start#

kubectl get pods -n hibernation-operator-system --watch

Once all pods are Running, you can begin creating hibernation policies:

Uninstall via Helm CLI#

To uninstall the Hibernation Operator:

helm uninstall hibernation-operator --namespace hibernation-operator-system

Note: This removes the operator and its RBAC, but does not delete your CRs (ClusterResourceSupervisor, ResourceSupervisor). If you want to fully clean up, delete any remaining CRs first:

kubectl delete clusterresourcesupervisors.hibernation.stakater.com --all
kubectl delete resourcesupervisors.hibernation.stakater.com --all --all-namespaces

Then uninstall the Helm release.

Notes#

  • The operator does not require a database, cache, or external scheduler—it works entirely with native Kubernetes resources.
  • Workloads are only scaled if explicitly targeted by a supervisor. No namespace is modified by default.
  • Replica counts are stored in the CR’s status field, ensuring safe restoration even after operator restarts.
  • For production use, consider pinning to a specific chart version:
  helm install hibernation-operator stakater/hibernation-operator --version a.b.ccc ...