Skip to main content
Back to Store
Package Digital Product Free Tier

Perf Distributed Testing

Kubernetes-native distributed load testing for JMeter, k6, and Gatling. Helm charts and Docker images for each tool's native distributed architecture.

Free Community · Enterprise £1,000/yr

After purchase, your license key is emailed by Lemon Squeezy. Use it on the download page to get registry credentials and Helm chart access.

What's Included

JMeter distributed via Java RMI (StatefulSet workers)
k6 distributed via stateless segment runners
Gatling distributed via Akka actor coordination
Helm charts published to GHCR OCI
Multi-arch Docker images (amd64 + arm64)
Built on perf-containers base images (17+ protocols)
NetworkPolicy, RBAC, and non-root security contexts
30-day money-back guarantee

Overview

perf-distributed-testing provides production-ready Kubernetes Helm charts and Docker images for distributed load testing across JMeter, k6, and Gatling. Each tool uses its native distributed architecture — no compromise, no workarounds.

Deploy as many pods as your cluster can provide. Scale load horizontally with a single Helm value change.

Why Three Separate Charts?

JMeter, k6, and Gatling each have fundamentally incompatible distributed models:

ToolK8s WorkloadCoordination
JMeterStatefulSet + JobJava RMI (ports 1099, 50000)
k6DeploymentNone — stateless segment runners
GatlingStatefulSet + JobAkka remoting (port 2552)

A single unified chart cannot support all three without forcing every tool into an unnatural pattern. Each chart uses the right Kubernetes primitives for its tool.

Key Features

JMeter — RMI Controller-Workers

A StatefulSet gives workers predictable DNS names. The workerHosts Helm helper generates the exact -R flag from pod ordinals. An init container waits for all workers via DNS before the controller Job starts, so JMeter never attempts to connect to a pod that isn’t ready.

k6 — Stateless Segment Runners

k6 runners are stateless and interchangeable — a Deployment is the right fit. Each runner receives a RUNNER_INDEX and RUNNERS_TOTAL to calculate its independent slice of the virtual user load. Metrics stream to Prometheus or InfluxDB.

Gatling — Akka IP Discovery

Gatling uses IP addresses (not DNS names) for Akka remoting. An init container runs kubectl get pods to discover worker IPs and writes them to a shared volume. The master reads this file to form the Akka cluster. RBAC is created automatically.

Pricing Tiers

Feature Community Enterprise
All three Helm charts (JMeter, k6, Gatling)
Private registry Docker images
Unlimited pods / workers / runners
Priority email support (next business day SLA)
Architecture guidance & Helm values review
Named account contact
Price
Free
£1,000
/year
Get Free Access Buy Enterprise

30-day money-back guarantee · Annual license · Apache-2.0 source

Quick Start

# 1. Get your free license key at martkos-it.co.uk/store/perf-distributed-testing-download
# 2. Get a registry token and create the imagePullSecret
TOKEN=$(curl -s https://updates.martkos-it.co.uk/api/v1/registry-token \
  -H "X-License-Key: YOUR_LICENSE_KEY" \
  -H "X-Product: perf-distributed-testing" | jq -r .token)

kubectl create secret docker-registry martkos-registry \
  --docker-server=registry.martkos-it.co.uk \
  --docker-username=your@email.com \
  --docker-password="$TOKEN" \
  --namespace perf-testing

# 3. Load your test plan
kubectl create configmap my-test-plan \
  --from-file=test-plan.jmx=./test.jmx \
  --namespace perf-testing

# 4. Deploy
helm install my-test oci://ghcr.io/markslilley/charts/perf-jmeter \
  --version 1.0.0 \
  --namespace perf-testing \
  --set test.configMapName=my-test-plan \
  --set worker.replicas=3 \
  --set global.imagePullSecrets[0].name=martkos-registry

FAQ

Do I need a license key to use the Helm charts?

The Helm charts are published to GHCR OCI and are publicly accessible — no license key required to pull them. The license key gates access to the pre-built Docker images from the private registry at registry.martkos-it.co.uk. You can also build images from source (Apache-2.0) without a key.

What’s the difference between Community and Enterprise?

Both tiers get identical technical access to all three charts and all three Docker images. Enterprise adds a priority support SLA (next business day response), architecture guidance, and a named contact at Martkos IT.

How many workers can I run?

Unlimited. There is no license-enforced cap on the number of pods, workers, or runners.

Which Kubernetes versions are supported?

Kubernetes 1.24+ is required for batch/v1 Job GA and stable StatefulSet DNS. Helm 3.10+ is required for helm test and OCI chart support.