Kind demo
Deploys the plnt operator + Temporal + playground API on a local kind cluster, then applies an WorkflowRun and shows the deploy saga running end-to-end.
The saga uses a CPU-stub image in place of vLLM so the flow works without a real GPU. Frame this honestly in a demo: “the platform layer is what you’re seeing; hardening for GPU workloads is where the next phase goes.”
Prereqs (one-time)
Section titled “Prereqs (one-time)”brew install kind kubectl helmThe demo — copy/paste in order
Section titled “The demo — copy/paste in order”1. Cluster + operator install (~90 s)
Section titled “1. Cluster + operator install (~90 s)”# create a local single-node clusterkind create cluster --name plnt
# install the CRD + operator + Temporalkubectl apply -f plnt/operators/crds/workflowrun.yamlkubectl create namespace plnt-systemhelm install temporal temporal/temporal --namespace plnt-system \ --set server.replicaCount=1 --set cassandra.config.cluster_size=1
# install the playground API gateway (mock backend, works without any real model)helm install plnt-playground plnt/charts/playground-api --namespace plnt-system
# start the operator locally (dev mode — in prod this ships as a Deployment)python -m kopf run plnt/operators/workflowrun_controller.py --namespace=default &
# start the Temporal workerpython -m plnt.workflows.worker &2. The one command that matters (~30 s)
Section titled “2. The one command that matters (~30 s)”kubectl apply -f examples/llama-3.1-70b-instruct.yamlThen in three side-by-side terminal panes:
# pane A — the resource going through phaseskubectl get workflowrun -wNAME RUNTIME GPU PHASE ENDPOINTllama-3.1-70b-instruct vllm nvidia.com/h100 Validatingllama-3.1-70b-instruct vllm nvidia.com/h100 PullingWeightsllama-3.1-70b-instruct vllm nvidia.com/h100 Deployingllama-3.1-70b-instruct vllm nvidia.com/h100 SmokeTestingllama-3.1-70b-instruct vllm nvidia.com/h100 Promotingllama-3.1-70b-instruct vllm nvidia.com/h100 Ready llama-3.1-70b-instruct.default.svc:8000# pane B — the operator picking up the eventkubectl logs -f deployment/plnt-operator -n plnt-systemWorkflowRun/llama-3.1-70b-instruct created — starting DeployModelWorkflow# pane C — the Temporal workflow historyopen http://localhost:7233 # Temporal UI, shows the saga step-by-step3. Actually call the model (~15 s)
Section titled “3. Actually call the model (~15 s)”kubectl port-forward svc/plnt-playground 8080:8080 -n plnt-system &
curl -s http://localhost:8080/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"plnt-mock-7b","messages":[{"role":"user","content":"say hi"}]}' \ | jq .Response comes back OpenAI-shape. In production the same request hits vLLM / TGI / TRT-LLM / SGLang on real GPUs.
4. Rollback story (~15 s)
Section titled “4. Rollback story (~15 s)”kubectl delete workflowrun llama-3.1-70b-instructThe operator cancels the workflow → the workflow triggers helm uninstall via compensation → kubectl get pods shows the release being removed.
Recording tips
Section titled “Recording tips”- Use
asciinema rec kind-demo.cast— text terminal recording, tiny file, embeds anywhere. - Or QuickTime → New Screen Recording, cropped to iTerm window.
- Speed up 2× in post — nobody wants to watch the helm install for real.
- One take. Rehearse once; imperfect > polished.
Talking points
Section titled “Talking points”- “This is the deploy contract.” Show
examples/llama-3.1-70b-instruct.yaml. - “This is the operator watching it.” Flash
plnt/operators/workflowrun_controller.py. - “This is the saga that does the work.” Flash
plnt/workflows/deploy_model.py, point at the 5-step try/except with compensation. - “This is the runtime chart.” Show
plnt/charts/vllm-runtime/templates/deployment.yaml, highlight thenvidia.com/gpuresource request. - “Playground is at play.plnt.work.” Open it, chat with a real model.
Total demo run-time: 3–4 minutes. Rehearsed cold: 6 minutes.