Skip to content

BuoyantIO/playground-laboratory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

playground-laboratory

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.

Repo layout

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

Dashboard

Live dashboard showing the topology, latency chart, counters, and samples table

In-app tutorials

Tutorial index listing the failure-mode walkthroughs

Install

The release ships two container images (playground-app, playground-server) and a Helm chart, all published to GHCR.

Prerequisites

  • 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)

Install the chart

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-namespace

Omit --version to pull the latest published chart. The chart owns the playground namespace, so --create-namespace is not needed.

Open the dashboard

kubectl -n playground port-forward svc/playground-dashboard 3000:3000
open http://localhost:3000

Inject a failure

Every 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-namespace

See the runbook/ walkthroughs and the in-app tutorials for the full failure catalogue.

Optional: bundled Prometheus + Grafana

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-namespace

Uninstall

helm uninstall playground --namespace playground

Local development

Prefer to run it without a cluster? See doc/development.md to run the server, dashboard, and generator directly on your machine.

About

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.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages