Jesús Pérez b6a4d77421
Some checks are pending
Documentation Lint & Validation / Markdown Linting (push) Waiting to run
Documentation Lint & Validation / Validate mdBook Configuration (push) Waiting to run
Documentation Lint & Validation / Content & Structure Validation (push) Waiting to run
Documentation Lint & Validation / Lint & Validation Summary (push) Blocked by required conditions
mdBook Build & Deploy / Build mdBook (push) Waiting to run
mdBook Build & Deploy / Documentation Quality Check (push) Blocked by required conditions
mdBook Build & Deploy / Deploy to GitHub Pages (push) Blocked by required conditions
mdBook Build & Deploy / Notification (push) Blocked by required conditions
Rust CI / Security Audit (push) Waiting to run
Rust CI / Check + Test + Lint (nightly) (push) Waiting to run
Rust CI / Check + Test + Lint (stable) (push) Waiting to run
feat: add Leptos UI library and modularize MCP server
2026-02-14 20:10:55 +00:00

157 lines
3.4 KiB
Markdown

# Kagent Kubernetes Integration
Kubernetes manifests for deploying Google Kagent with VAPORA A2A protocol integration.
## Directory Structure
```
kagent/
├── base/ # Base configuration (environment-agnostic)
│ ├── namespace.yaml # Kagent namespace
│ ├── rbac.yaml # ServiceAccount, ClusterRole, ResourceQuota
│ ├── configmap.yaml # Kagent configuration
│ ├── statefulset.yaml # Kagent StatefulSet (3 replicas)
│ ├── service.yaml # Kubernetes services
│ └── kustomization.yaml
├── overlays/
│ ├── dev/ # Development environment
│ │ ├── kustomization.yaml
│ │ └── statefulset-patch.yaml
│ └── prod/ # Production environment
│ ├── kustomization.yaml
│ └── statefulset-patch.yaml
└── README.md
```
## Deployment
### Prerequisites
- Kubernetes 1.24+
- kubectl configured
- Kustomize 4.0+
- VAPORA A2A server running
### Deploy to Development
```bash
kubectl apply -k kubernetes/kagent/overlays/dev
```
### Deploy to Production
```bash
kubectl apply -k kubernetes/kagent/overlays/prod
```
## Features
### StatefulSet Configuration
- **Replicas**: 3 (base), 1 (dev), 5 (prod)
- **Image**: `google-kagent:latest`
- **Service Type**: ClusterIP (Headless)
- **Pod Anti-Affinity**: Distributed across nodes
### A2A Integration
Kagent is configured to discover and integrate with VAPORA A2A server:
```yaml
a2a:
enabled: true
vapora_server: "http://vapora-a2a:8003"
discover_interval: 30s (dev), 60s (prod)
timeout: 30s
```
### Ports
- **8080/http** - REST API
- **50051/grpc** - gRPC endpoint
- **9090/metrics** - Prometheus metrics
### Resource Limits
**Development:**
- CPU: 100m req, 500m limit
- Memory: 128Mi req, 512Mi limit
**Production:**
- CPU: 1000m req, 4000m limit
- Memory: 1Gi req, 4Gi limit
## RBAC
Kagent service account has permissions to:
- List/watch pods, services
- Read configmaps
- Create/delete batch jobs
- Create events
## Health Checks
- **Liveness Probe**: `/health` on port 8080 (30s initial, 10s interval)
- **Readiness Probe**: `/ready` on port 8080 (10s initial, 5s interval)
## Environment Variables
- `KAGENT_CONFIG` - Config file path
- `KAGENT_POD_NAME` - Pod name (auto-filled)
- `KAGENT_NAMESPACE` - Pod namespace (auto-filled)
- `A2A_SERVER_URL` - VAPORA A2A server URL
- `LOG_LEVEL` - Logging level (debug/info/warn/error)
## Storage
- **ConfigMap Volume** - Kagent configuration
- **EmptyDir** - Cache (1Gi) and tmp (500Mi)
- **PersistentVolume** - Data (10Gi per pod)
## Networking
All services use internal cluster DNS:
- `kagent.kagent.svc.cluster.local` - Headless service
- `kagent-api.kagent.svc.cluster.local` - REST API
- `kagent-grpc.kagent.svc.cluster.local` - gRPC
## Monitoring
Prometheus metrics exposed at `/metrics:9090`
Enable scraping with annotation:
```yaml
prometheus.io/scrape: "true"
prometheus.io/port: "9090"
```
## Troubleshooting
### Check pod status
```bash
kubectl get pods -n kagent
kubectl describe pod -n kagent <pod-name>
kubectl logs -n kagent <pod-name>
```
### Test A2A connectivity
```bash
kubectl exec -it -n kagent kagent-0 -- /bin/sh
curl http://vapora-a2a:8003/health
```
### View events
```bash
kubectl get events -n kagent --sort-by='.lastTimestamp'
```
## Cleanup
```bash
kubectl delete -k kubernetes/kagent/overlays/dev
kubectl delete -k kubernetes/kagent/overlays/prod
```