Commit ea7e83b4 authored by Kostis Trantzas's avatar Kostis Trantzas
Browse files

Adding MCP Backend to the OpenSlice HELM chart

parent 2ee4c9a2
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
  "BUGZILLA": "{BASEURL}/bugzilla/",
  "STATUS": "{BASEURL}/healthstatus/",
  "WEBURL": "{BASEURL}",
  "ASSISTANT_URL": "{BASEURL}/ask",
  "PORTAL_REPO_APIURL": "{BASEURL}/osapi",
  "ASSURANCE_SERVICE_MGMT_APIURL": "{BASEURL}/oas-api",
  "APITMFURL": "{BASEURL}/tmf-api",
+108 −0
Original line number Diff line number Diff line
{{- if .Values.mcpbackend.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: {{ .Release.Namespace }}
  labels:
    app: {{ include "openslice.fullname" . }}
    org.etsi.osl.service: mcpbackend
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
    {{- include "openslice.labels" . | nindent 4 }}
  name: {{ include "openslice.fullname" . }}-mcpbackend
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ include "openslice.fullname" . }}
      org.etsi.osl.service: mcpbackend
      {{- include "openslice.selectorLabels" . | nindent 6 }}
  template:
    metadata:
      labels:
        app: {{ include "openslice.fullname" . }}
        org.etsi.osl.service: mcpbackend
        {{- include "openslice.selectorLabels" . | nindent 8 }}
    spec:
      containers:
        - name: {{ include "openslice.fullname" . }}-mcpbackend
          image: "{{ .Values.image.mcpbackend.repository }}:{{ .Values.image.mcpbackend.tag | default .Chart.AppVersion }}"
          imagePullPolicy: {{ .Values.image.mcpbackend.pullPolicy | default "Always" }}
          env:
            - name: SPRING_APPLICATION_JSON
              value: >-
                {
                  "origins":"{{ .Values.rooturl }}",
                  "spring.config.import": "configtree:/etc/config/",
                  "server.forward-headers-strategy":"FRAMEWORK"
                }
            - name: SERVER_PORT
              value: "11880"
            - name: SPRING_APPLICATION_NAME
              value: "osl-mcp-backend"
            - name: SPRING_AI_OLLAMA_BASE_URL
              value: "{{ .Values.mcpbackend.spring.ai.ollama.apiUrl }}"
            - name: SPRING_AI_OLLAMA_CHAT_MODEL
              value: "{{ .Values.mcpbackend.spring.ai.ollama.model }}"
            - name: SPRING_AI_OLLAMA_CHAT_TEMPERATURE
              value: "{{ .Values.mcpbackend.spring.ai.ollama.temperature }}"
            - name: SPRING_AI_CHAT_SYSTEM_PROMPT
              value: "{{ .Values.mcpbackend.spring.ai.chat.systemPrompt }}"
            - name: SPRING_AI_CHAT_MAX_MESSAGES
              value: "{{ .Values.mcpbackend.spring.ai.chat.maxMessages }}"
            - name: SPRING_AI_MCP_CLIENT_TYPE
              value: "SYNC"
            - name: SPRING_AI_MCP_CLIENT_STREAMABLE_HTTP_CONNECTIONS_OPENSLICE_SERVER_URL
              value: "http://{{ include "openslice.fullname" . }}-mcpserver:13015/sse"
            - name: SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI
              value: "{{ .Values.rooturl }}/auth/realms/openslice"
            - name: SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_KEYCLOAK_ISSUER_URI
              value: "{{ .Values.rooturl }}/auth/realms/openslice"
            - name: SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_KEYCLOAK_CLIENT_ID
              value: "osapiWebClientId"
            - name: SPRING_ACTIVEMQ_BROKER_URL
              value: "tcp://{{ include "openslice.fullname" . }}-artemis:61616?jms.watchTopicAdvisories=false"
            - name: LOGGING_LEVEL_ROOT
              value: "{{ .Values.mcpbackend.logLevelRoot | default "INFO" }}"
            - name: LOGGING_LEVEL_OSL
              value: "{{ .Values.mcpbackend.logLevelOSL | default "INFO" }}"          
            - name: LOGGING_LEVEL_SPRING_AI
              value: "{{ .Values.mcpbackend.spring.logLevel | default "INFO" }}"              
          ports:
            - containerPort: 11880
          resources:
            {{- toYaml .Values.resources | nindent 12 }}
          volumeMounts:
            - mountPath: "/etc/config/spring.activemq.user"
              name: artemis-secrets
              subPath: username
              readOnly: true
            - mountPath: "/etc/config/spring.activemq.password"
              name: artemis-secrets
              subPath: password
              readOnly: true
      restartPolicy: Always
      volumes:
        - name: artemis-secrets
          secret:
            secretName: {{ include "openslice.secrets.activemq" . }}
---
apiVersion: v1
kind: Service
metadata:
  namespace: {{ .Release.Namespace }}
  labels:
    app: {{ include "openslice.fullname" . }}
    org.etsi.osl.service: mcpbackend
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
    {{- include "openslice.labels" . | nindent 4 }}
  name: {{ include "openslice.fullname" . }}-mcpbackend
spec:
  ports:
    - name: "11880"
      port: 11880
      targetPort: 11880
  selector:
    app: {{ include "openslice.fullname" . }}
    org.etsi.osl.service: mcpbackend
    {{- include "openslice.selectorLabels" . | nindent 4 }}
{{- end }}
+24 −1
Original line number Diff line number Diff line
# Default values for openslice.
# Default values for OpenSlice.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

@@ -90,6 +90,11 @@ image:
    # Overrides the image tag whose default is the chart appVersion.
    tag: develop
    pullPolicy: Always
  mcpbackend:
    repository: labs.etsi.org:5050/osl/code/org.etsi.osl.mcp.backend
    # Overrides the image tag whose default is the chart appVersion.
    tag: develop
    pullPolicy: Always

bugzillaurl: example.com:443/bugzilla
bugzillakey: VH2Vw0iI5aYgALFFzVDWqhACwt6Hu3bXla9kSC1Z
@@ -219,6 +224,21 @@ mcpserver:
  spring:
    logLevel: INFO

mcpbackend:
  enabled: true
  logLevelRoot: INFO
  logLevelOSL: INFO
  spring:
    logLevel: INFO
    ai: # AI Configuration
      ollama:
        model: "gtp-oss:20b" # Change the used model here
        temperature: 0.5
        apiUrl: "http://ollama:11434" # Change the Ollama API here
      chat:
        systemPrompt: "You are an OpenSlice AI Assistant." # Customize your initial Assistant prompt
        maxMessages: 100 # Maximum number of messages to keep in context

# Storage class to be used for provisioning. Default is manual
# storageClass: ~

@@ -278,6 +298,9 @@ ingress:
  - path: "/"
    service: "tmfweb"
    port: 80
  - path: "/ask"
    service: "mcpbackend"
    port: 11880    
  annotations: {}