Working examples for Attune, from a single policy to full production
setups. Standalone .yaml files can be applied directly from the repo root
with kubectl apply -f examples/<file>.yaml, while directory-based scenarios
include their own instructions and may use kubectl apply -k.
| File | Scenario | Mode |
|---|---|---|
| 01-getting-started.yaml | Minimal policy for a single Deployment | Recommend |
| 02-canary-rollout.yaml | Graduated 10% canary with auto-revert | Canary |
| 03-auto-mode.yaml | Fully automated for trusted workloads | Auto |
| 04-hpa-coexistence.yaml | Right-sizing alongside a HorizontalPodAutoscaler | Recommend |
| 05-cluster-defaults.yaml | AttuneDefaults CRD with simplified policy | Recommend |
| 06-multi-workload-selector.yaml | Label selector targeting many Deployments | Recommend |
| 07-sidecar-exclusion.yaml | Skip service mesh sidecars with excludedContainers |
Recommend |
Start with 01-getting-started.yaml to see recommendations without touching
any pods. Promote to 02-canary-rollout.yaml once you trust the numbers. If
you want shared Prometheus settings, continue with 05-cluster-defaults.yaml
for cluster-wide defaults or 11-namespace-defaults.yaml for a namespace-only
setup.
| File | Scenario | Mode |
|---|---|---|
| 08-observe-mode.yaml | Validate Prometheus connectivity before generating recommendations | Observe |
| 09-oneshot-mode.yaml | Resize one pod per reconcile cycle for cautious rollout | OneShot |
| 10-cronjob-policy.yaml | Recommend-only sizing for CronJobs and Jobs | Recommend |
| 11-namespace-defaults.yaml | Namespace-scoped defaults layered over cluster defaults | Mixed |
| 12-scheduled-auto-mode.yaml | Auto mode limited to maintenance windows with per-cycle budgets | Auto |
| 13-multi-datasource.yaml | Mimir, Thanos, bearer-token auth, and TLS examples | Recommend |
| 14-startup-boost.yaml | Temporary CPU boost for cold-start workloads (JVMs, ML models) | Auto |
These directories contain complete, multi-resource setups that mirror real-world deployments:
| Directory | What it shows |
|---|---|
| multi-namespace/ | Dev/staging/prod policies with Kustomize overlays, different aggressiveness per environment |
| full-stack/ | Everything needed for one app: namespace, Deployment, ServiceMonitor, AttuneDefaults, AttunePolicy, and Grafana dashboard ConfigMap |
All examples assume:
- Kubernetes 1.32+ (1.32 requires the
InPlacePodVerticalScalingfeature gate; 1.33+ enabled by default) - Prometheus reachable inside the cluster
- Attune operator installed:
helm install attune oci://ghcr.io/attune-io/charts/attune \
--namespace attune-system --create-namespaceThe operator works without any kubectl plugin. You can inspect policies with standard commands:
kubectl get attunepolicy -A
kubectl describe attunepolicy <name> -n <namespace>For a richer experience, install the optional kubectl attune plugin:
# Via Krew (recommended)
kubectl krew install attune
# Or download from GitHub Releases
# https://github.com/attune-io/attune/releasesThe plugin adds commands like kubectl attune status, kubectl attune recommendations,
and kubectl attune explain. Some examples reference these commands, but they always
show the standard kubectl equivalent first.