OpenTelemetry Demo on k3s Playground
A snapshot-backed three-node k3s cluster with the complete OpenTelemetry Demo, including Jaeger and Grafana.

Overview
This playground contains the upstream OpenTelemetry Demo, already deployed to a three-node k3s cluster with the official Helm chart. It includes the instrumented Astronomy Shop microservices, an OpenTelemetry Collector, Jaeger, Prometheus, Grafana, OpenSearch, and a built-in load generator.
The cluster and applications restart from the saved VM snapshot. After launching the playground, allow a minute or two for k3s and all workloads to become ready, then reload a UI tab if it opened too early.
Quick walkthrough
1. Generate and observe traffic
Open the Demo App tab and browse the store. View products, add something to the cart, and complete a test checkout. These requests cross several services and generate traces, metrics, and logs. The built-in load generator also produces continuous background traffic.
2. Inspect distributed traces
Open the Jaeger tab. Select a service such as frontend or checkout, click Find Traces, and open a result. The trace timeline shows the request crossing service boundaries; expand individual spans to inspect latency, attributes, events, and errors.
3. Explore metrics and dashboards
Open the Grafana tab and browse the preconfigured dashboards. The APM and demo dashboards show service activity, while the collector dashboard shows telemetry flowing through the OpenTelemetry Collector.
4. Inspect the cluster
Use the dev-machine terminal or the Explorer tab. Useful commands:
kubectl get nodes
kubectl get pods -n otel-demo
kubectl get svc -n otel-demo
helm status otel-demo -n otel-demo
To watch workloads recover immediately after startup:
kubectl get pods -n otel-demo -w
The deployment uses Helm release otel-demo in namespace otel-demo. The three UI tabs are routed through the frontend-proxy NodePort service on port 31486.
A real VM, not a container
Get root on a VM with its own kernel, so Docker, Kubernetes, and systemd just work.
Read the docs →
SSH from browser or CLI
Use the built-in web terminal, or connect with labctl ssh, plain ssh, scp, or rsync.
Read the docs →
Drive it with AI
Let Claude, Codex, or any MCP client start this playground and run commands in it.
Read the docs →
Expose HTTP(S) ports
Give any web app running inside the VM a public URL - for yourself or to share with others.
Read the docs →
Share terminals
Invite others into your terminal session, or open it yourself from another device.
Read the docs →
Customize with init scripts
Add shell scripts that run at boot to install packages, clone repos, or seed test data.
Read the docs →
Private networking
VMs reach the internet via NAT with no public IP; several VMs share bridge networks.
Read the docs →
Ephemeral or persistent
By default, VMs are destroyed when the session ends; enable persistence to keep the disks for next time.
Read the docs →
Built-in container registry
A private registry.iximiuz.com for every playground to share images across services and VMs.
Read the docs →