/k6-operator

An operator for running distributed k6 tests.

Primary LanguageGoApache License 2.0Apache-2.0

data flow

k6 Operator

grafana/k6-operator is a Kubernetes operator for running distributed k6 tests in your cluster. k6 Operator introduces two CRDs:

  • TestRun CRD
  • PrivateLoadZone CRD

The TestRun CRD is a representation of a single k6 test executed once. TestRun supports various configuration options that allow you to adapt to different Kubernetes setups. You can find a description of the more common options here, and the full list of options can be found in the definition itself.

The PrivateLoadZone CRD is a representation of a load zone, which is a k6 term for a set of nodes within a cluster designated to execute k6 test runs. PrivateLoadZone is integrated with Grafana Cloud k6 and requires a Grafana Cloud account. You can find a guide describing how to set up a PrivateLoadZone here, while billing details can be found here.

Documentation

You can find the latest k6 Operator documentation in the Grafana k6 OSS docs.

For additional resources:

Common samples are available in the config/samples and e2e/ folders in this repo, both for the TestRun and PrivateLoadZone CRDs.

Contributing

Requests and feedback

We are always interested in your feedback! If you encounter problems during the k6 Operator usage, check out the troubleshooting guide. If you have questions on how to use the k6 Operator, you can post them on the Grafana community forum.

For new feature requests and bug reports, consider opening an issue in this repository. First, check the existing issues in case a similar report already exists. If it does, add a comment about your use case or upvote it.

For bug reports, please use this template. If you think there is a missing feature, please use this template.

Development

When submitting a PR, it's preferable to work on an open issue. If an issue does not exist, create it. An issue allows us to validate the problem, gather additional feedback from the community, and avoid unnecessary work.

There are many options for setting up a local Kubernetes cluster for development, and any of them can be used for local development of the k6 Operator. One option is to create a kind cluster.

Additionally, you'll need to install the following tooling:

To execute unit tests, use these commands:

make test-setup # only need to run once
make test

To execute e2e test locally:

  • make e2e for kustomize and make e2e-helm for Helm
  • validate tests have been run
  • make e2e-cleanup