Deployment

This guide covers deploying kontinue to a Kubernetes cluster, including the CRDs, optional server/UI, and your workers.

Deploying the CRDs

kontinue is distributed as Helm charts. First, add the Helm repository:

helm repo add kontinue https://gitlab.com/api/v4/projects/kontinue%2Fkontinue/packages/helm/stable
helm repo update

Minimal Install (CRDs Only)

Install just the CustomResourceDefinitions:

helm install kontinue kontinue/kontinue --namespace kontinue --create-namespace

This installs the CRDs required to run kontinue workers. No server or UI is deployed.

With Server and UI

To include the web interface for managing executions:

helm install kontinue kontinue/kontinue --namespace kontinue --create-namespace \
    --set server.enabled=true

This creates a kontinue-server Deployment and Service. See the UI documentation for more details on the web interface.

Exposing the UI

The server runs as a ClusterIP service by default. To expose it:

# Via port-forward (development)
kubectl port-forward -n kontinue svc/kontinue-server 8080:80

# Or configure an Ingress for the Service

Deploying Workers

kontinue workers can run anywhere with access to your Kubernetes cluster, but they are typically deployed onto the same cluster. Like any Kubernetes application, workers must be built into a Docker image and pushed to a container registry.

Building Your Worker Image

Create a Dockerfile for your worker:

FROM golang:1.23-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o worker ./cmd/worker

FROM alpine:latest
COPY --from=builder /app/worker /worker
ENTRYPOINT ["/worker"]

Build and push:

docker build -t your-registry.com/my-worker:1.0 .
docker push your-registry.com/my-worker:1.0

Deploying with Helm

kontinue provides a kontinue-worker Helm chart for deploying workers. You must customize the image to point to your worker:

helm install my-worker kontinue/kontinue-worker --namespace default \
    --set image.repository=your-registry.com/my-worker \
    --set image.tag=1.0

Common Helm Values

ValueDefaultDescription
image.repository(required)Your worker container image
image.taglatestContainer image tag
replicas2Number of worker replicas
args.namespace(release namespace)Namespace for worker to operate in
args.groupdefaultWorker group identifier
resources.limits.memoryMemory limit
resources.limits.cpuCPU limit
metrics.enabledtrueEnable Prometheus annotations
serviceAccount.createtrueCreate a ServiceAccount
rbac.createtrueCreate RBAC ClusterRole/Binding

See Also

  • Installation - Initial setup and Helm repository
  • Web UI - Web interface features and configuration
  • Functions - Writing worker functions