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
| Value | Default | Description |
|---|---|---|
image.repository | (required) | Your worker container image |
image.tag | latest | Container image tag |
replicas | 2 | Number of worker replicas |
args.namespace | (release namespace) | Namespace for worker to operate in |
args.group | default | Worker group identifier |
resources.limits.memory | Memory limit | |
resources.limits.cpu | CPU limit | |
metrics.enabled | true | Enable Prometheus annotations |
serviceAccount.create | true | Create a ServiceAccount |
rbac.create | true | Create RBAC ClusterRole/Binding |
See Also
- Installation - Initial setup and Helm repository
- Web UI - Web interface features and configuration
- Functions - Writing worker functions