grafana/k6-operator
is a Kubernetes operator for running distributed k6 tests in your cluster. k6 Operator introduces two CRDs:
TestRun
CRDPrivateLoadZone
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.
You can find the latest k6 Operator documentation in the Grafana k6 OSS docs.
For additional resources:
- 📖 A guide Running distributed load tests on Kubernetes.
- 📖 A guide Running distributed tests.
- 🎥 Grafana Office Hours Load Testing on Kubernetes with k6 Private Load Zones.
Common samples are available in the config/samples
and e2e/
folders in this repo, both for the TestRun
and PrivateLoadZone
CRDs.
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.
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:
- Golang
- kustomize
- operator-sdk: optional as most common changes can be done without it
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 andmake e2e-helm
for Helm- validate tests have been run
make e2e-cleanup