✨ New features
Default tags in k6 metrics
We have changed the hard-coded tag passed to all runner pods: previously, it was job_name. Now, it is testrun_name. As described in the issue, this change removes duplicate metrics and reduces cardinality.
Warning
Some dashboards around k6-operator test runs might need updating.
E.g., if you have a query like this:
my_cool_metric{job_name=~"my-testrun-.*"}
You should change it to:
my_cool_metric{testrun_name="my-testrun", instance_id=~".*"}
PrivateLoadZone CRD: Secrets support
PrivateLoadZone tests now support secrets out-of-the-box, issue. See more details about this feature in the docs and in the video here.
TLDR: if you have secrets stored in Grafana Cloud k6 and a script that references them, you can run this script with PrivateLoadZone as well.
PrivateLoadZone CRD: pod template expansion
We expanded the pod template in the PrivateLoadZone CRD to support labels and annotations, issue. This configuration will be applied to all Pods started by k6-operator for this PrivateLoadZone.
As mentioned in the release notes for 1.3.0, this is done gradually via relaxation of validation rules. In practice, this means that only a limited number of fields are available at the moment, but there will be more in the future.
Note
PrivateLoadZone doesn't support mutability yet, so it must be re-created anew if you want to add a new config to it.
🛠️ Maintenance
Notable version updates:
go.modat Go 1.25- Docker images at Go 1.26
golangci-lintat 2.10.1
There has been a lot of polishing around unit tests and e2e tests to improve overall structure and simplify onboarding and long-term maintenance. Among those changes, xk6-environment was finally refactored, addressing a long-running tech debt, and can now be built easily from its repo. This extension is used for isolation of e2e tests.
Lastly, there is now a govulncheck GitHub Action workflow, PR, running weekly and for PRs.
Full Changelog: v1.3.2...v1.4.0