Reproducible failure modes for Linkerd Enterprise: a deliberately-breakable Go server + Next.js client + 15 runbooks that walk through 5xx synthesis, failfast, mTLS pinning, CNI race conditions, trust-anchor rotation, and more. Designed for Service Mesh Academy training sessions on a fresh k3d cluster.
| Path | What it is |
|---|---|
server/ |
Go HTTP server with env-driven fault injection (latency, errors, crash) |
client/ |
Next.js dashboard + in-pod traffic generator |
helm/ |
Chart that wires server + client into a meshed playground namespace |
runbook/ |
Long-form failure-mode walkthroughs |
doc/ |
Developer docs, see doc/development.md |
The release ships two container images (playground-app, playground-server) and a
Helm chart, all published to GHCR.
- A Kubernetes cluster (a fresh k3d cluster is the intended target)
- Linkerd installed in the cluster; the chart annotates its namespace with
linkerd.io/inject: enabled - Helm 3.8+ (for OCI registry support)
The chart creates the meshed playground namespace and deploys the Go server
(primary + canary), the dashboard, and the traffic generator:
helm install playground \
oci://ghcr.io/buoyantio/playground-laboratory/charts/playground \
--version 1.0.12 \
--namespace playground \
--create-namespaceOmit
--versionto pull the latest published chart. The chart owns theplaygroundnamespace, so--create-namespaceis not needed.
kubectl -n playground port-forward svc/playground-dashboard 3000:3000
open http://localhost:3000Every fault is an env knob you flip at runtime with helm upgrade, e.g. make the
canary slow and flaky:
helm upgrade playground \
oci://ghcr.io/buoyantio/playground-laboratory/charts/playground \
--version 1.0.12 --namespace playground --reuse-values \
--set http.canary.env.LATENCY_MS=2000 \
--set http.canary.env.ERROR_RATE=30 \
--set http.canary.env.ERROR_CODE=503 \
--create-namespaceSee the runbook/ walkthroughs and the in-app tutorials for the full
failure catalogue.
Both are off by default and install into a monitoring namespace:
helm install playground \
oci://ghcr.io/buoyantio/playground-laboratory/charts/playground \
--version 1.0.12 --namespace playground \
--set prometheus.enabled=true \
--set grafana.enabled=true \
--create-namespacehelm uninstall playground --namespace playgroundPrefer to run it without a cluster? See doc/development.md to
run the server, dashboard, and generator directly on your machine.

