kagent → agentgateway-proxy (K8s) → Anthropic Claude API (claude-3-haiku-20240307)
Every push to main triggers a full integration test in GitHub Actions:
| Step | What's checked |
|---|---|
| Kind cluster | K8s 1.29.2 created from scratch |
| Gateway API CRDs | standard-install.yaml applied |
| agentgateway | Helm install, pods Running |
| Anthropic secret | Authorization key in Secret |
| AgentgatewayBackend | Accepted: True |
| Gateway | Programmed: True |
| kagent | Helm install, pods Running |
| ModelConfig | Accepted by kagent controller |
| Live API test | curl → agentgateway → Claude returns response |
See full results → Actions tab
~$0.25/1M tokens (claude-3-haiku-20240307). $5 lasts the entire course.
- Docker Desktop for Apple Silicon
brew install kubectl kind helm git gh jq- Anthropic API key from console.anthropic.com
| Secret | Description |
|---|---|
ANTHROPIC_API_KEY |
Your Anthropic API key (sk-ant-...) |
export ANTHROPIC_API_KEY="sk-ant-api03-your-key"
# 1. Create cluster
kind create cluster --config kind-cluster.yaml
# 2. Gateway API CRDs
kubectl apply --server-side -f \
https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.1/standard-install.yaml
# 3. Install agentgateway
helm upgrade -i --create-namespace --namespace agentgateway-system \
--version 2.2.1 agentgateway-crds \
oci://ghcr.io/kgateway-dev/charts/agentgateway-crds
helm upgrade -i agentgateway \
oci://ghcr.io/kgateway-dev/charts/agentgateway \
--namespace agentgateway-system --version 2.2.1
# 4. Create secret (key MUST be named Authorization!)
kubectl create secret generic anthropic-secret \
--from-literal=Authorization="$ANTHROPIC_API_KEY" \
--namespace agentgateway-system
# 5. Apply gateway configs
kubectl apply -f k8s/gateway.yaml
kubectl apply -f k8s/backend-claude.yaml
kubectl apply -f k8s/httproute-llm.yaml
# 6. Install kagent
kubectl create namespace kagent
kubectl create secret generic kagent-anthropic-secret \
--from-literal=apiKey="$ANTHROPIC_API_KEY" --namespace kagent
kubectl create secret generic kagent-llm-secret \
--from-literal=apiKey="$ANTHROPIC_API_KEY" --namespace kagent
helm install kagent-crds \
oci://ghcr.io/kagent-dev/kagent/helm/kagent-crds --namespace kagent
helm install kagent \
oci://ghcr.io/kagent-dev/kagent/helm/kagent \
--namespace kagent --values k8s/kagent-values.yaml
kubectl apply -f k8s/model-config.yamlkubectl port-forward deployment/agentgateway-proxy -n agentgateway-system 8080:80
kubectl port-forward deployment/agentgateway-proxy -n agentgateway-system 15000:15000
kubectl port-forward svc/kagent-ui -n kagent 8081:8080- agentgateway admin: http://localhost:15000/ui
- kagent: http://localhost:8081
curl "http://localhost:8080/v1/messages" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{"model": "claude-3-haiku-20240307", "max_tokens": 100, "messages": [{"role": "user", "content": "Hello!"}]}' \
| jq '.content[0].text'kind delete cluster --name agentgateway