Locust Kubernetes Operator v2.3.0
⚠️ Upgrade Notes ⚠️
- Kubernetes 1.29+ now required: The metrics exporter now runs as a native sidecar container, so the chart's
kubeVersionconstraint has been raised to>= 1.29.0-0(#327)
🚀 Features & Improvements 🚀
- Finished tests now actually finish: The metrics exporter now runs as a native sidecar, so the master Job completes instead of running forever and the
LocustTestreachesSucceeded. Thanks @BackSlasher! (#327, commit 0788524) - RuntimeClass support: Run Locust pods (and the operator itself) under gVisor, Kata Containers, or any other RuntimeClass, per-test via the CR or operator-wide via chart values. Closes #293 (#336, commit 70a962a)
🐛 Fixes 🐛
- Recovery loop on CR names containing dots: Lookups now use the same sanitized names the builders create, and finished tests can no longer be resurrected as
Pending. Closes #50. Thanks again @BackSlasher! (#326, commit 551272f) - Webhook volume-name validation on dotted CR names: Generated-name computation is now shared between the webhook and the resource builders, ending both false rejections and a missed genuine collision (#341, commit 0d17837)
🔒 Security 🔒
- Go & x/net CVE fixes: Bumped Go to 1.26.5 and
golang.org/x/netto v0.55.0, clearing all CVEs flagged by the security scan. Closes #328 (#335, commit 0f4e63d) - gRPC & cel-go advisories: Bumped
google.golang.org/grpcto v1.82.1 andcel-goto v0.29.0, resolving GHSA-hrxh-6v49-42gf and GHSA-gcjh-h69q-9w9g (#345, commit 2671327) - Trivy severity threshold now enforced: The scheduled scan no longer fails on findings below the declared
CRITICAL,HIGHthreshold (#346, commit 36267eb)
📚 Documentation 📚
- New how-to guide: Use a runtime class, sandboxing Locust pods with gVisor or Kata Containers (#336)
- Stale Kubernetes version references fixed: Cleaned up leftover 1.27/1.28 references across docs and comments. Thanks @BackSlasher! (#337, commit 82801df)
🧹 Project Maintenance 🧹
- Native-sidecar exit-code policy codified: Sidecar termination exit codes are teardown noise, not failures. Now expressed once as
resources.IsNativeSidecarand covered by tests. Thanks @BackSlasher! (#338, commit 5478a71) - E2E webhook readiness gate fixed: The suite now waits for the webhook to actually serve traffic, ending intermittent
connection refusedfailures (#342, commit b13b904) - chore(deps): bump github.com/onsi/gomega from 1.39.1 to 1.41.0 by @dependabot[bot] in #324
- chore(deps): bump Go test/logging deps and pinned GitHub Actions by @AbdelrhmanHamouda in #347
- chore(deps): bump kubernetes group to v0.36.3 and controller-runtime to v0.24.1 by @AbdelrhmanHamouda in #348
🙏 New Contributors 🙏
- A warm welcome to @BackSlasher, who made their first contribution in #327 and followed it up with #326, #337, and #338. Sharp diagnoses, real-cluster evidence, and fixes for bugs dating back to #50. Welcome aboard! 🎉
📦 Assets 📦
- Helm chart package: locust-k8s-operator-2.3.0.tgz
- SBOMs:
- sbom-cyclonedx.json
- sbom-spdx.json
📋 Full Changelog: locust-k8s-operator-2.2.3...locust-k8s-operator-2.3.0