Skip to main content

Kubernetes Setup Guide

Deploy DevOps AI Toolkit Web UI to Kubernetes using Helm chart.

Prerequisites

  • Kubernetes cluster (1.19+) with kubectl access
  • Helm 3.x installed
  • dot-ai MCP server deployed and accessible
  • Auth token for the dot-ai MCP server

Quick Start

Step 1: Set Environment Variables

# Set the version from https://github.com/vfarcic/dot-ai-ui/pkgs/container/dot-ai-ui%2Fcharts%2Fdot-ai-ui
export DOT_AI_UI_VERSION="..."

# Use the same auth token as your dot-ai MCP server
export DOT_AI_AUTH_TOKEN="your-dot-ai-auth-token"

# Ingress class - change to match your ingress controller (traefik, haproxy, etc.)
export INGRESS_CLASS_NAME="nginx"

Step 2: Install the Web UI

helm install dot-ai-ui \
oci://ghcr.io/vfarcic/dot-ai-ui/charts/dot-ai-ui:$DOT_AI_UI_VERSION \
--set dotAi.url="http://dot-ai:3456" \
--set dotAi.auth.token="$DOT_AI_AUTH_TOKEN" \
--set ingress.enabled=true \
--set ingress.className="$INGRESS_CLASS_NAME" \
--set ingress.host="dot-ai-ui.127.0.0.1.nip.io" \
--namespace dot-ai \
--wait

Notes:

  • Replace dot-ai-ui.127.0.0.1.nip.io with your desired hostname.
  • The dotAi.url should point to your dot-ai MCP server service. If deployed in the same namespace with default settings, http://dot-ai:3456 works.
  • For all available configuration options, see the Helm values file.

Step 3: Configure dot-ai MCP Server

Update your dot-ai MCP server to include visualization URLs in responses:

helm upgrade dot-ai-mcp oci://ghcr.io/vfarcic/dot-ai/charts/dot-ai:$DOT_AI_VERSION \
--set webUi.baseUrl="http://dot-ai-ui.127.0.0.1.nip.io" \
--namespace dot-ai \
--reuse-values

Step 4: Verify Installation

Open your browser and navigate to the Web UI hostname. You should see the DevOps AI Toolkit Web UI home page.

Configuration Reference

ParameterDescriptionDefault
image.repositoryContainer image repositoryghcr.io/vfarcic/dot-ai-ui
image.tagContainer image tagChart appVersion
image.pullPolicyImage pull policyIfNotPresent
dotAi.urlURL of the dot-ai MCP serverhttp://dot-ai:3456
dotAi.auth.existingSecretName of existing secret with auth token""
dotAi.auth.existingSecretKeyKey in existing secretauth-token
dotAi.auth.tokenAuth token (if not using existing secret)""
ingress.enabledEnable Ingress resourcefalse
ingress.classNameIngress class namenginx
ingress.hostIngress hostnamedot-ai-ui.127.0.0.1.nip.io
ingress.annotationsAdditional ingress annotations{}
ingress.tls.enabledEnable TLSfalse
ingress.tls.secretNameTLS secret name""
ingress.tls.clusterIssuercert-manager ClusterIssuer""
resources.requests.memoryMemory request128Mi
resources.requests.cpuCPU request50m
resources.limits.memoryMemory limit256Mi
resources.limits.cpuCPU limit200m

Using Existing Secret

For production, reference an existing secret instead of passing the token directly:

helm install dot-ai-ui \
oci://ghcr.io/vfarcic/dot-ai-ui/charts/dot-ai-ui:$DOT_AI_UI_VERSION \
--set dotAi.url="http://dot-ai:3456" \
--set dotAi.auth.existingSecret="dot-ai-secrets" \
--set dotAi.auth.existingSecretKey="auth-token" \
--set ingress.enabled=true \
--set ingress.className="$INGRESS_CLASS_NAME" \
--set ingress.host="dot-ai-ui.example.com" \
--namespace dot-ai \
--wait

TLS Configuration

Enable HTTPS with cert-manager:

helm install dot-ai-ui \
oci://ghcr.io/vfarcic/dot-ai-ui/charts/dot-ai-ui:$DOT_AI_UI_VERSION \
--set dotAi.url="http://dot-ai:3456" \
--set dotAi.auth.existingSecret="dot-ai-secrets" \
--set ingress.enabled=true \
--set ingress.className="$INGRESS_CLASS_NAME" \
--set ingress.host="dot-ai-ui.example.com" \
--set ingress.tls.enabled=true \
--set ingress.tls.clusterIssuer="letsencrypt" \
--namespace dot-ai \
--wait

Then update your .mcp.json URL to use https://.

Gateway API (Alternative to Ingress)

For Kubernetes 1.26+ with Gateway API support, you can use HTTPRoute instead of Ingress.

Prerequisites

  • Kubernetes 1.26+ cluster
  • Gateway API CRDs installed
  • Gateway controller running (Istio, Envoy Gateway, Kong, etc.)
  • Existing Gateway resource

Reference Existing Gateway

helm install dot-ai-ui \
oci://ghcr.io/vfarcic/dot-ai-ui/charts/dot-ai-ui:$DOT_AI_UI_VERSION \
--set dotAi.url="http://dot-ai:3456" \
--set dotAi.auth.existingSecret="dot-ai-secrets" \
--set ingress.enabled=false \
--set gateway.name="cluster-gateway" \
--set gateway.namespace="gateway-system" \
--namespace dot-ai \
--wait

Gateway Configuration Reference

ParameterDescriptionDefault
gateway.nameExisting Gateway name to reference""
gateway.namespaceGateway namespace (for cross-namespace)""
gateway.createCreate new Gateway (dev/testing only)false
gateway.classNameGatewayClass name (when create=true)""
gateway.annotationsAnnotations for Gateway (when create=true){}
gateway.listeners.http.enabledEnable HTTP listener on port 80true
gateway.listeners.http.hostnameHostname for HTTP listener""
gateway.listeners.https.enabledEnable HTTPS listener on port 443false
gateway.listeners.https.hostnameHostname for HTTPS listener""
gateway.listeners.https.secretNameTLS secret name for HTTPS""

Additional Configuration

ParameterDescriptionDefault
extraEnvAdditional environment variables[]