Skip to content

Releases: grafana/k6-operator

v0.0.21

07 May 11:36
Compare
Choose a tag to compare

✨ New features

Starting from this release, k6-operator supports multiple PrivateLoadZones 🎉 As a reminder, previously it was possible to have only one PrivateLoadZone per installation. Now one can create several in a row and have them all working simultaneously:

$ kubectl -f plz-demo.yaml apply
privateloadzone.k6.io/plz-demo created
$ kubectl -f plz.yaml apply
privateloadzone.k6.io/kung-fu created
$ kubectl get privateloadzones.k6.io -A
NAMESPACE   NAME             AGE   REGISTERED
plz-ns      plz-demo         6s    True
plz-ns      kung-fu          14s   True

Note, however, that restriction of 100% distribution remains: it is possible to reference only one PrivateLoadZone in a k6 test.

The PLZs are distinguished by name only. This is required to be backward compatible with the older PLZs. Since it's backward compatible, there is no migration required: just an update of k6-operator to the latest release should be sufficient to switch to the new setup. The start of the new version of the app will read the registered PLZ in the system and continue to work as before, but now with the potential to add more PLZs if you'd like.

Grafana Cloud k6 sets the maximum number of PLZs per organization. By default, it is 5. If you need more, please contact customer support.

The documentation update will follow next week.

📦 Helm

There have been quite a few improvements around ServiceMonitor usage:

  • Ability to configure the ServiceMonitor with namespace, jobLabel, interval, scrapeTimeout, labels, and some other fields. Thanks, @EladAviczer!
    • ⚠️ This is a breaking change: instead of prometheus.enabled, configuration now happens via metrics.serviceMonitor.enabled. Please adjust your Helm values accordingly!
  • It is now possible to have k6-operator's Service without enabling authProxy. To do that, there is a service.enabled option. Thanks, @afreyermuth98!

🪛 Maintenance

There were a lot of CI improvements to harden our security stance. One of the most noticeable additions is that Zizmor scanning is executed on each pull request.

Some minor Golang library updates were also done here.

📜 Documentation

Last but not least, the internal docs now have a write-up about the NDE (Native Distributed Execution) proposal in k6 OSS and its potential impact on k6-operator.

With the help of @heitortsergent, we are improving our troubleshooting docs. The existing guide will be split into two parts (general & TestRun troubleshooting VS PrivateLoadZone troubleshooting) and simplified to make them more useful.

Full Changelog: v0.0.20...v0.0.21

v0.0.20

14 Apr 15:55
Compare
Choose a tag to compare

✨ New features

There are two major additions in this release.

There is now Kubernetes native support for environment variables and secrets for PrivateLoadZone, as currently described here. The update of documentation will follow up. There are a couple of important restrictions to this implementation:

  • Variables must be part of a ConfigMap or a Secret as they are passed as envFrom to k6 pods. In other words, env value of the pods cannot be set in this way.
  • Instead, env is used to pass cloud environment variables to k6 pods, as has been the case since v0.0.16.
  • As a reminder, env takes precedence over envFrom in Kubernetes, so take care not to have an overlap with duplicate names!

The first version of E2E tests for k6-operator was added over here. This suite is used to test PRs, to confirm lack of regressions in base functionality before merging. ATM, they are executed manually and how it's done is described in the README. From the regular testing performed on k6-operator, only PrivateLoadZone tests are absent from this suite; hopefully, they will be added with the next iteration of work on E2E tests.

📦 Helm

Thanks to the help from our users and contributors, we continue to fix the JSON schema. There was a bug with too strict validation for global which didn't allow to use k6-operator as a subchart. Now fixed, thanks, @pj199x! That fix was followed up by 3.11.1 Chart release.

🪛 Maintenance

The examples saw some clean up of legacy testing services. Thanks, @federicotdn!

Notable dependency updates in this release:

  • Golang to 1.23
  • controller-runtime to v0.20.3
  • go.k6.io/k6 to v0.57.0
  • security updates from dependabot

Full Changelog: v0.0.19...v0.0.20

v0.0.19

29 Jan 17:01
Compare
Choose a tag to compare

📢 Announcements

⚠️ K6 CRD is removed in favor of TestRun CRD as of this release. 500.

There are plans to bump k6-operator to 1.0.0 and switch to semver releases. After this move, k6-operator should have regular schedule of maintenance updates. Feature additions will be optional and added to those releases on a case by case basis. Versioning of Helm chart will not be much affected by it as it can be said to follow the semver already.

The exact dates for this move are not set yet, but the key issues that will be part of this move can be seen in this board. Feedback is very much welcome! If there are issues you believe should be done before such 1.0.0 release, please comment on them.

📦 Helm

There were issues encountered with the new JSON schema missing certain fields, thus preventing using Helm chart. To mitigate that, quick bug fixes for the Helm chart were released as 3.10.1 and 3.10.2. Thanks to everyone who reported those!

However, due to the timing error with K6 CRD removal, the chart 3.10.2 should be avoided with its default manager.image.tag value (v0.0.18). This Helm chart requires v0.0.19+ image or a custom built image. As usual, after this v0.0.19 release, there will be a new Helm chart released, 3.11, and it should be safe to switch to that one.

🪛 Maintenance

Deprecation of old kubebuilder's patterns has started, PR 503, and will continue in the next release. Thanks, @monteiro!

Among other maintenance tasks, CI, esp. related to Helm, received the most attention. PRs: 495, 496, 497, 509. Most notably, now JSON schema for the Helm chart is checked by CI and Helm release would fail if schema is not up-to-date.

Full Changelog: 0.0.18...v0.0.19

v0.0.18

13 Nov 10:52
Compare
Choose a tag to compare

This is a relatively small release to update the default k6 runner image, as well as to release an important bug fix for Grafana Cloud k6 tests.

⚠️ In the next release, K6 CRD will be removed. Please switch to using TestRun CRD, if you have not done so already!

🐛 Bug hunting

When Grafana Cloud k6 tests entered Timeout state, k6-operator had failed to treat this is as a cause for abort of the test. This case is now treated correctly and the test run is aborted on Timeouts. PR 489.

📦 Helm

There were bugs with the values JSON schema added in previous release (Chart version 3.9.0) which did not allow to install the Chart when passing certain values. The fix was done and released as of Chart version 3.9.1. Thanks, @julian-perge, for the help! (PR 474, 484).

Manager's pod security context can now be configured via the Chart. Thanks, @gonmmarques! (PR 467).

Maintenance efforts to improve workflows around Helm are ongoing.

🪛 Maintenance

golangci-lint bumped to 1.61.0.

Full Changelog: v0.0.17...0.0.18

v0.0.17

03 Oct 11:29
Compare
Choose a tag to compare

✨ New features

This release contains the long-awaited support for IPv6. Thanks, @zzhao2010!

PrivateLoadZone test runs are now sending logs from the runners to the Cloud storage by default. These logs can then be accessed in Grafana Cloud k6 UI.

📦 Helm

Helm chart now has the schema file which allows integration with tools like Cyclops. Thanks, @petar-cvit!

Leader election of k6-operator Deployment became smarter: now it is automatically disabled by the Chart if replicas are set to 1. Thanks, @hartman17!

🐛 Bug hunting

The error on copying of the logs in initializer pod is now propagated properly. Thanks, @frittentheke!

🪛 Maintenance

Following k6 example, support for the outdated cloud output version 1 is removed.

Notable dependency updates in this release:

  • Golang to 1.22
  • controller-gen to 0.16.1
  • controller-runtime to 0.19.0

Last but not least, CI workflows for Helm chart linting and testing are fixed and properly executed on each Helm-related PR.

Full Changelog: v0.0.16...v0.0.17

v0.0.16

29 Jul 12:58
Compare
Choose a tag to compare

✨ New features

This release contains important new features for PrivateLoadZone:

  1. It is now possible to define the custom image in PrivateLoadZone. This can be useful to test with the older k6 binaries, as well with custom builds of k6. If you use a private registry and need to pass the secret to access it, imagePullSecrets can also be defined.
  2. Environment variables defined in GCk6 are now passed to PLZ test runs and can be referenced in the scripts.

The relevant PRs: 426, 429, 430.

🪛 Documentation

We made a major refactoring of documentation for the k6 Operator 🎉 Now majority of the information needed to run the k6 Operator can be accessed from Grafana k6 OSS docs over here. The link is also present in the Readme, which had been fully re-written to be more readable.

The relevant PRs: k6-docs 1559, 405. Thank you, @heitortsergent, for all the help!

Full Changelog: v0.0.15...v0.0.16

v0.0.15

05 Jul 10:10
Compare
Choose a tag to compare

✨ New features

This release contains the long-awaited support for ARM. Thanks, @audacioustux, and everyone who helped to test it!

As part of effort to improve UX, now when initializer pod fails, the stage of TestRun is set to error. Initializer failure can happen when there's a compilation issue with the script or an issue with its setup, and such failure prevents scheduling runner pods and executing the test run. Thanks, @irumaru and @JorTurFer!

VolumeClaim configuration for the spec.script has been expanded with boolean readOnly option that allows to forbid potential changes to volume's content during the test run. The default value for readOnly remains false, as before. An example. Thanks, @irumaru!

⚠️ A breaking change

Container with manager is being configured as the first container instead of the second, as before. Thanks, @TheoBrigitte!

This change can be breaking for the setups that depend on the order of containers. In such a case, the setup should be fixed to point to the correct container: manager will now be deployed as .containers[0]. If your setup does not rely on order of the containers, this change does not affect you.

📦 Helm

Helm chart has been extended with new options once again:

CI for Helm has been adjusted in this release to be executed more often, though there are still further improvements to be done.

🪛 Maintenance

Notable dependency updates in this release:

  • Golang was updated to 1.21
  • CI was updated to Go 1.21
  • k6 dep was updated to 0.52.0
  • security update: google.golang.org/protobuf from 1.31.0 to 1.33.0
  • security update: golang.org/x/net from 0.22.0 to 0.23.0
  • CI version unification
  • controller-gen to v0.14.0. Thanks, @TheoBrigitte!

Some bug fixes for CI are also included, as well as some additions and corrections for docs.

Full Changelog: v0.0.14...v0.0.15

v0.0.14

28 Mar 14:43
Compare
Choose a tag to compare

✨ New features

With the assistance of k6-core team, there's now support of options.cloud. 373. See more on this option in the latest k6 release notes.

PrivateLoadZone CR will now be registered with generated UID, 360. This improvement shall help to distinguish PLZs with the same name on different clusters.

initContainers can be additionally specified for Initializer job, unlocking a more complex logic of preparing the setup, etc. 379. Thanks, @FloGro3!

📦 Helm

We are aiming to improve release process for Helm with 372.

🪛 Maintenance

There has been some ongoing maintenance, including update of kube-rbac-proxy v0.15.0. 378.

And for PrivateLoadZone users, we now have a documentation explaining what is happening under the hood.

Full Changelog: v0.0.13...v0.0.14

v0.0.13

02 Feb 16:37
Compare
Choose a tag to compare

✨ New features

TestRun CRD continues to grow and now there's support for the following features:

There has been an initial implementation to support run-once setup and teardown: right now it is supported only for PrivateLoadZone test runs. It is still planned to support this feature for all kind of tests but perhaps with the help of native distribution in k6.

📦 Helm

Helm support is improving:

  • Addition ofimagePullSecrets, serviceAccountName bug fix and overrides via global options all at once in 363. Thanks, @marshallford!
  • All CRDs are now up-to-date. 364.

🐛 Bug hunting

Cloud output v2 became default in k6, and k6-operator is following suit: it is now turned on by default for PrivateLoadZone test runs. 356.

Handling of errors on duplicate jobs has been failing in some hard-to-repeat cases. 365, 367.

🪛 Maintenance

Dockerfiles are more precise and generalized now. 237. Thanks @dkhachyan!

k6 Golang dependency updated to v0.48. 359.

Last but not least, the first ever Troubleshooting guide has been added to internal documentation 🎉

Full Changelog: v0.0.12...v0.0.13

v0.0.13rc1

02 Jan 08:17
Compare
Choose a tag to compare
v0.0.13rc1 Pre-release
Pre-release

What's Changed

  • Bundle update for release v0.0.12 by @github-actions in #346
  • Update versions to v0.0.12 by @yorugac in #347
  • docs: update release workflow by @yorugac in #349
  • Update bug report template by @yorugac in #350
  • feat: add initializer envFrom field by @ghostx31 in #351
  • Set cloud output v2 as default for PLZ test runs by @yorugac in #356

New Contributors

Full Changelog: v0.0.12...v0.0.13rc1