원클릭으로
kagenti-weather-demo
// Deploy the weather agent and MCP tool demo via CLI (no UI required). Uses pre-built ghcr.io images, deploys to team1. Optimized for speed (~15s).
// Deploy the weather agent and MCP tool demo via CLI (no UI required). Uses pre-built ghcr.io images, deploys to team1. Optimized for speed (~15s).
Full release lifecycle for Kagenti — alpha, RC iteration loop, GA, and patch releases with multi-repo coordination
TDD iteration loop across 4 environments (local Kind, custom HyperShift, CI Kind, CI HyperShift) with test matrix tracking and log analysis
Create and manage git worktrees for parallel development and testing
Deploy and manage Kagenti operator, agents, and tools on Kubernetes. Handles installer, CRDs, pipelines, and demo deployments.
Manage Kind clusters for local Kagenti testing. Create, destroy, deploy platform, and run E2E tests.
Run full end-to-end test workflows for Kagenti. Supports Kind and HyperShift clusters with automated setup and testing.
| name | kagenti:weather-demo |
| description | Deploy the weather agent and MCP tool demo via CLI (no UI required). Uses pre-built ghcr.io images, deploys to team1. Optimized for speed (~15s). |
Deploy the Weather Service agent and Weather Tool without the Kagenti UI. Uses existing CI scripts and Kubernetes manifests for a fully CLI-driven workflow. Optimized for speed: pre-built images from ghcr.io, all commands in parallel, no waits.
scripts/kind/setup-kagenti.sh or equivalent)kubectl configured and pointing at the target clusterllama3.2:3b-instruct-fp16 model, OR an OpenAI API keyDeploy/build commands produce large output. Use run_in_background: true on the Bash
tool to keep output out of context. Do NOT use shell redirects (> file 2>&1) as they
break permission matching.
Before running any commands, record the start time:
date +%s
Remember this value as the start timestamp. Do NOT redirect to a file.
flowchart TD
START(["/kagenti:weather-demo"]) --> ALL["Step 1: Deploy all in parallel"]:::build
ALL --> PATCH["Step 2: Fix Ollama connectivity"]:::debug
PATCH --> DONE([Demo Running])
classDef build fill:#795548,stroke:#333,color:white
classDef debug fill:#FF9800,stroke:#333,color:white
Follow this diagram as the workflow. Do NOT add verification or testing steps beyond Step 2.
Both images are pre-built on ghcr.io/kagenti/agent-examples/. The namespace setup
is a no-op if team1 already exists. Launch all three as parallel Bash tool calls:
Bash call 1 — Setup team1 namespace:
./.github/scripts/kagenti-operator/70-setup-team1-namespace.sh
Bash call 2 — Deploy weather-service agent:
./.github/scripts/kagenti-operator/74-deploy-weather-agent.sh
Bash call 3 — Deploy weather-tool:
./.github/scripts/kagenti-operator/72-deploy-weather-tool.sh
IMPORTANT: All three commands MUST be run as parallel Bash tool calls with
run_in_background: trueandtimeout: 600000(three separate Bash invocations in the same response). Then wait for all to complete using TaskOutput.
The deployment manifest defaults to LLM_API_BASE=http://dockerhost:11434/v1 which
does not resolve inside Kind. Patch directly with host.docker.internal:
kubectl patch deployment weather-service -n team1 --type=strategic -p '{"spec":{"template":{"spec":{"containers":[{"name":"agent","env":[{"name":"LLM_API_BASE","value":"http://host.docker.internal:11434/v1"},{"name":"LLM_MODEL","value":"llama3.2:3b-instruct-fp16"}]}]}}}}'
On Docker Desktop (macOS/Windows), use
host.docker.internal. On Podman, usehost.containers.internal. Do NOT wait for rollout — skipkubectl rollout statusto save time.
Then report elapsed time:
date +%s
Compute elapsed seconds by subtracting this value from the start timestamp recorded earlier. Report the difference in the completion message.
Report the elapsed time. Do NOT run any additional verification, pod checks, log checks, or end-to-end curl tests.
kubectl create secret generic openai-secret -n team1 \
--from-literal=apikey="<YOUR_OPENAI_API_KEY>"
kubectl set env deployment/weather-service -n team1 -c agent \
LLM_API_BASE="https://api.openai.com/v1" \
LLM_MODEL="gpt-4o-mini-2024-07-18"
kubectl patch deployment weather-service -n team1 --type=json -p='[
{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{
"name":"LLM_API_KEY",
"valueFrom":{"secretKeyRef":{"name":"openai-secret","key":"apikey"}}
}},
{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{
"name":"OPENAI_API_KEY",
"valueFrom":{"secretKeyRef":{"name":"openai-secret","key":"apikey"}}
}}
]'
Since both images are pulled from ghcr.io (no Shipwright builds), cleanup is just deleting the deployments and services:
kubectl delete deployment weather-service weather-tool -n team1 --ignore-not-found
kubectl delete svc weather-service weather-tool-mcp -n team1 --ignore-not-found
Or delete the entire namespace:
kubectl delete namespace team1
See Step 2: Fix Ollama Connectivity above.
| Container runtime | Hostname |
|---|---|
| Docker Desktop | host.docker.internal |
| Podman (macOS) | host.containers.internal |
| Kind default | dockerhost (usually doesn't resolve) |
kubectl get svc -n team1 | grep weather-tool
# Should show: weather-tool-mcp ClusterIP ... 8000/TCP
The default MCP_URL is http://weather-tool-mcp.team1.svc.cluster.local:8000/mcp.
kagenti:agent - Create custom A2A agents from scratchkagenti:operator - Deploy Kagenti platform and demo agentskagenti:deploy - Deploy Kind clusterk8s:pods - Debug pod issuesk8s:logs - Query component logs