| Requirement | Minimum Version |
|---|---|
| Kubernetes | 1.32+ |
| Helm | 3.16+ or 4.x |
| Prometheus | 2.x (with container_cpu_usage_seconds_total and container_memory_working_set_bytes) |
| cert-manager | 1.12+ (for webhook TLS; optional if installing with --set webhooks.enabled=false) |
!!! note "In-Place Pod Resize"
Kubernetes 1.32+ is required because Attune uses the
In-Place Pod Resize
/resize subresource, which was added in 1.32.
On 1.32, you must enable the InPlacePodVerticalScaling feature gate
on the apiserver, controller-manager, scheduler, and all kubelets.
On 1.33+, the feature is enabled by default (beta).
Create a namespace and install the chart from the OCI registry:
kubectl create namespace attune-system
helm install attune \
oci://ghcr.io/attune-io/charts/attune \
--namespace attune-system!!! tip "Prometheus address"
The Prometheus address is configured per-policy in
AttunePolicy.spec.metricsSource.prometheus.address, per namespace via
the AttuneNamespaceDefaults CRD, or globally via the
AttuneDefaults CRD. It is not a Helm chart value.
If neither is set, the operator auto-discovers Prometheus by checking
for the Prometheus Operator CRD, then well-known service names
(prometheus-server, prometheus-kube-prometheus-prometheus) in
common namespaces.
!!! info "Also available on Docker Hub"
The container image is also published to Docker Hub at
docker.io/attuneio/attune for discoverability. For production
use, GHCR is recommended (no rate limits on public packages).
!!! important "CRDs are not updated by helm upgrade"
Helm's crds/ directory only installs CRDs on helm install.
Before upgrading, apply the latest CRDs manually:
```bash
kubectl apply --server-side --force-conflicts -f \
https://github.com/attune-io/attune/releases/latest/download/crds.yaml
```
helm upgrade attune \
oci://ghcr.io/attune-io/charts/attune \
--namespace attune-systemIf your cluster has the Operator Lifecycle Manager installed, you can install Attune directly from OperatorHub.io.
On OpenShift 4.19+, the operator is in the built-in OperatorHub
Community catalog under package name attune (display name
Attune; CSV names look like attune.v0.1.16). Search for "Attune"
in the web console under Operators > OperatorHub, or verify with:
oc get packagemanifests -n openshift-marketplace attuneFor a public web listing of the same package, use OperatorHub.io/operator/attune (the Red Hat Ecosystem Catalog website search does not reliably list community operators). See the OpenShift guide for catalog details, TLS profile integration, and OpenShift-specific configuration.
On other clusters with OLM, install the operator by creating a
Subscription:
# Ensure OLM is installed (https://olm.operatorframework.io/docs/getting-started/)
# Then create the subscription:
kubectl create -f https://operatorhub.io/install/attune.yamlThis subscribes to the stable channel and auto-updates when new versions
are published. The OLM bundle includes all CRDs, RBAC, and the operator
deployment.
If you prefer not to use Helm, apply the static install manifest:
kubectl create namespace attune-system
kubectl apply -f \
https://github.com/attune-io/attune/releases/latest/download/install.yaml!!! warning
The Prometheus address is configured per-policy in
AttunePolicy.spec.metricsSource.prometheus.address, per namespace via
AttuneNamespaceDefaults, or globally via the AttuneDefaults CRD.
Auto-discovery is also available
if neither is set (see the Helm installation tip above).
Check that the operator pod is running:
kubectl -n attune-system get podsExpected output:
NAME READY STATUS RESTARTS AGE
attune-6f8b4c7d9f-xk2pq 1/1 Running 0 30s
Verify that the three CRDs are registered:
kubectl get crds | grep attuneattunedefaults.attune.io 2026-01-15T00:00:00Z
attunenamespacedefaults.attune.io 2026-01-15T00:00:00Z
attunepolicies.attune.io 2026-01-15T00:00:00Z
The kubectl attune plugin provides quick access to recommendations,
savings estimates, and resize history.
# Install via Krew (recommended)
kubectl krew install attune
# Or build from source
make build-plugin && sudo cp bin/kubectl-attune /usr/local/bin/See the CLI Reference for available commands.
Head to the Quick Start to create your first AttunePolicy.