Commit 265c5f50 authored by Dimitrios Gogos's avatar Dimitrios Gogos
Browse files

feat: add README for ai2 helm chart

parent 78f6e336
Loading
Loading
Loading
Loading
+94 −0
Original line number Diff line number Diff line
# AI2 Helm Chart

Deploys the AI2 stack — MCP server and AI Agent — into a Kubernetes cluster.

## Components

| Component  | Description                                              | Default Port |
|------------|----------------------------------------------------------|-------------|
| mcp        | MCP server exposing CAMARA-compliant tools via FastMCP   | 8004        |
| ai-agent   | Quart backend accepting natural language prompts via Groq | 9013        |

The ai-agent waits for the MCP server to be healthy before starting (via initContainer).

## Prerequisites

- Kubernetes cluster
- Helm 3+
- Groq API key
- OEG service reachable from within the cluster

## Install

```bash
helm install ai2 ./helm/ai2 \
  --namespace oop \
  --create-namespace \
  --set secrets.groqApiKey=<your-groq-api-key> \
  --set config.mcp.oegServiceUrl=http://<oeg-host>/oeg/1.0.0
```

## Upgrade

```bash
helm upgrade ai2 ./helm/ai2 \
  --namespace oop \
  --set secrets.groqApiKey=<your-groq-api-key> \
  --set config.mcp.oegServiceUrl=http://<new-oeg-host>/oeg/1.0.0
```

## Uninstall

```bash
helm uninstall ai2 --namespace oop
```

## Key Values

| Value                           | Description                      | Default                  |
|---------------------------------|----------------------------------|--------------------------|
| `secrets.groqApiKey`            | Groq API key (required)          | `""`                     |
| `config.mcp.oegServiceUrl`      | Base URL of the OEG service      | `http://oeg/oeg/1.0.0`   |
| `config.aiAgent.groqModelName`  | Groq model identifier            | `qwen/qwen3-32b`         |
| `service.mcp.type`              | Kubernetes service type for MCP  | `NodePort`               |
| `service.mcp.nodePort`          | NodePort for MCP                 | `32004`                  |
| `service.aiAgent.nodePort`      | NodePort for ai-agent            | `32013`                  |
| `images.mcp.tag`                | MCP image tag                    | `latest`                 |
| `images.aiAgent.tag`            | AI Agent image tag               | `latest`                 |

## Local Development (kind)

Build and load images locally instead of pulling from the registry:

```bash
docker build -t <your_mcp_dev_image>:latest ../../mcp_module
docker build -t <your_ai_agent_dev_image>:latest ../../ai_agent

kind load docker-image <your_mcp_dev_image>:latest --name <your-cluster>
kind load docker-image <your_ai_agent_dev_image>:latest --name <your-cluster>
```

Then install with `pullPolicy: IfNotPresent` to use the local images:

```bash
helm install ai2 ./helm/ai2 \
  --namespace oop \
  --create-namespace \
  --set secrets.groqApiKey=<your-groq-api-key> \
  --set config.mcp.oegServiceUrl=http://<oeg-host>/oeg/1.0.0 \
  --set images.mcp.pullPolicy=IfNotPresent \
  --set images.aiAgent.pullPolicy=IfNotPresent
```

## Test the Deployment

```bash
# Health checks
curl http://<node-ip>:32004/health   # MCP
curl http://<node-ip>:32013/health   # AI Agent

# Send a natural language prompt
curl -X POST http://<node-ip>:32013/groq-mcp \
  -H "Content-Type: application/json" \
  -d '{"query": "Create a QoD session for device with public IP 12.1.0.20, application server IP 198.51.100.10, QoS profile qos-e, duration 3600 seconds"}'
```