On Kubernetes#
This document contains instructions for installing, uninstalling, and configuring the Hibernation Operator on Kubernetes.
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
ClusterResourceSupervisorandResourceSupervisor - 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
statusfield, 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 ...