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 (manages both ClusterResourceSupervisor and ResourceSupervisor)
  • The Webhook (for validation)
  • Required RBAC, CRDs, and Service resources

Optional: Enable ArgoCD Integration#

If you use ArgoCD and want to target AppProjects, enable ArgoCD support:

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 ...