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 (manages both
ClusterResourceSupervisorandResourceSupervisor) - 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
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 ...