Loading deployment/helm/README.md 0 → 100644 +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"}' ``` Loading
deployment/helm/README.md 0 → 100644 +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"}' ```