Commit 78f6e336 authored by Dimitrios Gogos's avatar Dimitrios Gogos
Browse files

feat: add helm charts and cleanup

parent e2f9a5de
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -112,7 +112,6 @@ Run the container:

The Dockerfile sets these defaults:
```
ENV APP_HOST=0.0.0.0
ENV APP_PORT=9013
ENV MCP_SERVER_URL=http://127.0.0.1:8004/mcp
...
+9 −4
Original line number Diff line number Diff line
@@ -8,13 +8,13 @@

This deployment relies on a `.env` file that is loaded at runtime by Docker Compose.
```
GROQ_API_KEY=your-secret-key
OpenOP_BACKEND_OAI=http://example-backend
GROQ_API_KEY=your-groq-api-key
OEG_SERVICE_URL=http://your-oeg-api-url/oeg/1.0.0
GROQ_MODEL_NAME=qwen/qwen3-32b   
```

## Run
Start services

```
docker compose --env-file .env up -d
```
@@ -25,6 +25,11 @@ docker compose down

## Additional Info
All service ports are explicitly forwarded to the host to simplify local development, testing and debugging.
This allows you to interact with APIs and MCP Servers individually, without attaching to containers or using internal Docker networking tools.
This allows you to interact with APIs and MCP servers individually, without attaching to containers or using internal Docker networking tools.

| Service   | Host Port |
|-----------|-----------|
| mcp       | 8004      |
| ai-agent  | 9013      |

---
 No newline at end of file
+10 −18
Original line number Diff line number Diff line
version: "3.9"

services:
  api:
    image: labs.etsi.org:5050/oop/code/ai2/dummy_backend
    container_name: api
    environment:
      API_HOST: 0.0.0.0
      API_PORT: 8081
    ports:
      - "8081:8081"
    networks:
      - ai_net

  mcp:
    image: labs.etsi.org:5050/oop/code/ai2/mcp_module
    container_name: mcp
    environment:
      MCP_HOST: 0.0.0.0
      MCP_PORT: 8004
      OpenOP_BACKEND_OAI: ${OpenOP_BACKEND_OAI}
      OEG_SERVICE_URL: ${OEG_SERVICE_URL}
    ports:
      - "8004:8004"
    networks:
      - ai_net
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8004/health')"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s

  ai-agent:
    image: labs.etsi.org:5050/oop/code/ai2/ai_agent
    container_name: ai-agent
    depends_on:
      - mcp
      mcp:
        condition: service_healthy
    environment:
      APP_HOST: 0.0.0.0
      APP_PORT: 9013
      MCP_SERVER_URL: http://mcp:8004/mcp
      GROQ_API_KEY: ${GROQ_API_KEY}
      GROQ_MODEL_NAME: openai/gpt-oss-20b
      GROQ_MODEL_NAME: ${GROQ_MODEL_NAME:-qwen/qwen3-32b}
    ports:
      - "9013:9013"
    networks:
+14 −0
Original line number Diff line number Diff line
apiVersion: v2
name: ai2
type: application
version: 1.0.0
appVersion: "1.0.0"
keywords:
  - ai2
  - oop
  - etsi
  - mcp
  - ai-agent
home: https://labs.etsi.org/rep/oop/code/ai2
maintainers:
  - name: OOP Team
+50 −0
Original line number Diff line number Diff line
{{- define "ai2.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{- define "ai2.fullname" -}}
{{- if .Values.fullnameOverride }}
  {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
  {{- $name := default .Chart.Name .Values.nameOverride }}
  {{- if contains $name .Release.Name }}
    {{- .Release.Name | trunc 63 | trimSuffix "-" }}
  {{- else }}
    {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
  {{- end }}
{{- end }}
{{- end }}

{{- define "ai2.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{- define "ai2.labels" -}}
helm.sh/chart: {{ include "ai2.chart" . }}
{{ include "ai2.selectorLabels" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
{{- end }}

{{- define "ai2.selectorLabels" -}}
app.kubernetes.io/name: {{ include "ai2.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{- define "ai2.configMapName" -}}
{{- include "ai2.fullname" . }}-config
{{- end }}

{{- define "ai2.secretName" -}}
{{- include "ai2.fullname" . }}-secrets
{{- end }}

{{- define "ai2.mcpServiceName" -}}
{{- include "ai2.fullname" . }}-mcp
{{- end }}

{{- define "ai2.aiAgentServiceName" -}}
{{- include "ai2.fullname" . }}-ai-agent
{{- end }}
Loading