Deploy AI agents on Kubernetes — backed by Helm, powered by MCP, routed through AgentGateway.
Status: Single-agent setup is functional. Multi-agent is work in progress.
| Requirement | Details |
|---|---|
| Kubernetes cluster | kind / EKS / AKS / GKE |
kubectl |
latest stable |
helm |
>= 3 |
| ArgoCD | installed in cluster |
| LLM API key | OpenAI / Gemini / Groq |
Create namespace:
kubectl create namespace argocdInstall ArgoCD:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yamlAccess UI:
kubectl port-forward svc/argocd-server -n argocd 8080:443Get admin password:
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath="{.data.password}" | base64 -d && echoLogin:
- URL: https://localhost:8080
- Username:
admin - Password: (from above command)
CRDs must be installed before the controller.
helm install kagent-crds oci://ghcr.io/kagent-dev/kagent/helm/kagent-crds \
--namespace kagent \
--create-namespaceRegisters: Agent, ModelConfig, ToolServer, MCPIntegration
Export your API key:
export OPENAI_API_KEY="your-api-key"Install:
helm install kagent oci://ghcr.io/kagent-dev/kagent/helm/kagent \
--namespace kagent \
--set providers.openAI.apiKey=$OPENAI_API_KEYOptional — access the UI:
kubectl port-forward svc/kagent-ui -n kagent 8080:8080Open http://localhost:8080
Install Kubernetes Gateway API CRDs:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/latest/download/standard-install.yamlInstall AgentGateway CRDs and controller:
helm upgrade -i --create-namespace \
--namespace agentgateway-system \
--version v1.0.1 agentgateway-crds oci://cr.agentgateway.dev/charts/agentgateway-crds
helm upgrade -i -n agentgateway-system agentgateway oci://cr.agentgateway.dev/charts/agentgateway \
--version v1.0.1With ArgoCD in place, apply the App of Apps:
kubectl apply -f argocd/apps/apps-of-apps.yamlThis deploys:
- AgentGateway with the Crossplane MCP server as a backend
- The Crossplane MCP server itself
- kagent with an agent configured to consume it via
RemoteMCPServer
.
├── agentgateway/ # Gateway, HTTPRoute, CORS, and policy configs
├── argocd/ # App of Apps — deploys everything via GitOps
├── mcp-server/ # Crossplane MCP server deployment and RBAC
├── single-agent/ # Single-agent setup (functional)
├── multi-agent/ # Multi-agent orchestration (not tested)
├── postgres/ # Database for agent registry state
└── skills/ # Custom MCP tool definitions
argocd/
├── apps/apps-of-apps.yaml # Entry point — apply this first
├── agentgateway-app.yaml
├── crossplane-app.yaml
├── crossplane-mcp-app.yaml
└── kagent-app.yaml
single-agent/
├── crossplane-agent.yaml # kagent Agent definition
├── crossplane-mcp-server.yaml # RemoteMCPServer config
├── agentgateway-crossplane-mcp.yaml
└── groq-modelconfig.yaml # Example ModelConfig for Groq
agentgateway/
├── gateway.yaml
├── httproute.yaml
├── mcp-backend.yaml
├── crossplane-mcp-cors.yaml
└── agentgateway_policies.yaml
Multi-agent manifests are present under multi-agent/ but are not tested.
Once ArgoCD is installed:
kubectl apply -f argocd/apps/apps-of-apps.yamlThis will automatically:
- Install Crossplane
- Install AWS providers (S3, EC2)
- Deploy compositions (S3, VPC)
- Deploy MCP server
- Deploy kagent
- Configure AgentGateway routing
User / Agent
↓
kagent (LLM reasoning)
↓
MCP Server (tools)
↓
Crossplane
↓
AWS Resources (S3, EC2, VPC)
If you want, you can use the predefined compositions, xrds, xrs
kubectl apply -f crossplane-resourcesAsk your agent:
"Create an S3 bucket for ML training data in ap-south-1"
Agent will:
- Generate XR (S3Bucket)
- Crossplane provisions AWS resource
- Status returned via MCP
If you need predefined test scenarios
kubectl apply -f test_scenarios- Multi-cloud compositions (AWS + GCP + Azure)
- Crossplane Functions for policy enforcement
- Cost-aware provisioning
- Secure defaults (encryption, IAM)
- Production-ready multi-agent workflows
PRs welcome — especially for:
- Multi-agent testing
- New MCP tools
- Crossplane compositions
- Observability integrations