github attune-io/attune v0.1.32

3 hours ago

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 as api-worker is 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, not api-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, so api-v2, api-worker, and a CronJob stamp are not mixed into a Deployment named api. A sampled pod migrate-2-... stays on the job migrate-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

  1. Upgrade the chart to 0.1.32, or set image.tag to 0.1.32 or v0.1.32.
  2. Pull ghcr.io/attune-io/attune:v0.1.32 or ghcr.io/attune-io/attune:0.1.32. Both tags point at the same digest.
  3. 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.

Full changelog

v0.1.31...v0.1.32

Don't miss a new attune release

NewReleases is sending notifications on new releases.