What's New in v0.1.32
v0.1.32 restores CloudWatch usage for Deployments and CronJobs, and keeps a configured percentile from drifting upward once a workload has a long history.
Highlights
- CloudWatch Container Insights stores the owner name in
PodName, not the full pod name. Attune matches that owner again, so a Deployment and a CronJob get samples. A sibling name such asapi-workeris not treated as the ReplicaSet. - After 10,000 samples, the percentile stays near the percentile you configured. A short spike is still kept for burst detection.
Bug fixes
-
CloudWatch showed no usage for Deployments and CronJobs. Container Insights puts the ReplicaSet name or the Job name in
PodName, notapi-7d8f9c6b5-xk2pq. Matching only the full pod name dropped every sample. Attune accepts that owner name. The ReplicaSet token must use the Kubernetes hash alphabet, soapi-v2,api-worker, and a CronJob stamp are not mixed into a Deployment namedapi. A sampled podmigrate-2-...stays on the jobmigrate-2. A DaemonSet, StatefulSet, and Job that share one name still share one CloudWatch series, because that metric has no kind (#859, #860). -
A configured P95 moved toward the real P98 after 10,000 samples. Downsampling kept the highest value in each time window, and the percentile was computed from those highs. Each window now keeps its midpoint. The highest sample in the series is still kept, so burst detection still sees a short spike (#859).
-
A missing usage percentile raised the request. When the usage percentile was empty, confidence still scaled the recommendation upward. An empty percentile no longer grows the request (#858).
-
GitOps drift after a merged branch was applied to the wrong workload. The drift check stays on the workload that owns the merged branch (#857).
-
A clock step backward, or a revert that failed, dropped the increase budget. The budget stays in place. A failed revert stays recorded as in-place instead of looking like a completed resize (#856).
-
Bounds, the increase budget, and workload selectors could lose to a later filter. The configured bounds and budget still apply after the change filter. Label selectors and metric pod filters match the intended pods (#852).
Compatibility
| Surface | Requires |
|---|---|
| Existing policies | Still work. These fixes do not need a CRD change |
| CloudWatch Container Insights | Default PodName is the owner name. Clusters that set prefer_full_pod_name still match the full pod name
|
| Tested Kubernetes versions | 1.32 through 1.37. The last full nightly before these metric fixes is 73615f43. Nightly on 5ac960a2 is the gate for this tag
|
Upgrade notes
- Upgrade the chart to 0.1.32, or set
image.tagto0.1.32orv0.1.32. - Pull
ghcr.io/attune-io/attune:v0.1.32orghcr.io/attune-io/attune:0.1.32. Both tags point at the same digest. - No CRD change is required for these fixes. Helm still does not upgrade CRDs on
helm upgrade.
See Upgrading for this section and earlier releases.