Skip to content

Helm Chart Reference

The Kouma Helm chart deploys all required services to a Kubernetes cluster. It is published as an OCI artifact to the GitHub Container Registry.

Chart Location

Registryoci://ghcr.io/kkiwior/charts/kouma
Sourcecharts/kouma

Installation

bash
helm install kouma oci://ghcr.io/kkiwior/charts/kouma

Install a specific version:

bash
helm install kouma oci://ghcr.io/kkiwior/charts/kouma --version 1.2.3

Upgrade an existing release:

bash
helm upgrade kouma oci://ghcr.io/kkiwior/charts/kouma -f values.yaml

Values Reference

Global

KeyTypeDefaultDescription
nameOverridestring""Override the chart name
fullnameOverridestring""Override the full resource name
imagePullSecretslist[]Image pull secrets for all images

MongoDB (Bundled)

KeyTypeDefaultDescription
mongodb.enabledbooltrueDeploy a bundled MongoDB instance
mongodb.image.repositorystringmongoMongoDB image repository
mongodb.image.tagstring"7"MongoDB image tag
mongodb.persistence.enabledbooltrueEnable persistent storage
mongodb.persistence.sizestring10GiStorage size
mongodb.persistence.storageClassstring""Storage class (empty = cluster default)
mongodb.auth.rootUsernamestringmgadminMongoDB root username
mongodb.auth.rootPasswordstringPassword1MongoDB root password
mongodb.auth.usernamestringkouma-userApplication username
mongodb.auth.passwordstringkouma-passwordApplication password
mongodb.auth.databasestringkoumaDatabase name

External MongoDB

Used when mongodb.enabled is false.

KeyTypeDefaultDescription
externalMongodb.uristring""Full MongoDB connection URI
externalMongodb.hoststring""MongoDB host
externalMongodb.portint27017MongoDB port
externalMongodb.usernamestring""MongoDB username
externalMongodb.passwordstring""MongoDB password
externalMongodb.databasestringkoumaDatabase name
externalMongodb.existingSecretstring""Existing secret with MongoDB URI
externalMongodb.existingSecretKeystringmongodb-uriKey in the existing secret

Exchange Volume

Shared file storage for screenshots between engine and dashboard.

KeyTypeDefaultDescription
exchange.persistence.enabledbooltrueEnable persistent storage
exchange.persistence.sizestring5GiStorage size
exchange.persistence.accessModestringReadWriteManyAccess mode
exchange.persistence.storageClassstring""Storage class

Common Configuration

Shared settings applied to both dashboard and engine.

KeyTypeDefaultDescription
common.fsHostUrlstring""File server host URL (auto-detected if empty)
common.apiKeySecretstring""Shared secret for API key generation
common.extraEnvlist[]Extra environment variables for dashboard and engine

Ingress

KeyTypeDefaultDescription
ingress.enabledboolfalseEnable Kubernetes Ingress
ingress.classNamestring""Ingress class name (e.g., nginx, traefik)
ingress.annotationsobject{}Ingress annotations
ingress.hostslist[{host: kouma.local}]List of ingress hosts
ingress.tlslist[]TLS configuration

Dashboard

KeyTypeDefaultDescription
dashboard.replicaCountint1Number of dashboard replicas
dashboard.image.repositorystringghcr.io/kkiwior/kouma/dashboardDashboard image
dashboard.image.tagstring""Image tag (defaults to appVersion)
dashboard.service.typestringClusterIPService type
dashboard.service.portint3001Service port
dashboard.service.nodePortstring""NodePort (when type is NodePort)
dashboard.auth.modestringnoneAuth mode: none, passcode, microsoft, google
dashboard.auth.passcodeKeystring""Passcode (when mode is passcode)
dashboard.auth.tokenKeystring""Cookie / token name
dashboard.auth.accessTokenSecretstring""JWT signing secret
dashboard.auth.microsoft.clientIdstring""Azure AD client ID
dashboard.auth.microsoft.clientSecretstring""Azure AD client secret
dashboard.auth.microsoft.tenantIdstring""Azure AD tenant ID
dashboard.auth.google.clientIdstring""Google client ID
dashboard.auth.google.clientSecretstring""Google client secret
dashboard.auth.oauthAllowedDomainsstring""Comma-separated allowed email domains
dashboard.extraEnvlist[]Extra environment variables
dashboard.resourcesobject{}Resource requests/limits
dashboard.nodeSelectorobject{}Node selector
dashboard.tolerationslist[]Tolerations
dashboard.affinityobject{}Affinity rules

Engine

KeyTypeDefaultDescription
engine.replicaCountint1Number of engine replicas
engine.image.repositorystringghcr.io/kkiwior/kouma/engineEngine image
engine.image.tagstring""Image tag (defaults to appVersion)
engine.service.portint3002Service port
engine.extraEnvlist[]Extra environment variables
engine.resourcesobject{}Resource requests/limits
engine.nodeSelectorobject{}Node selector
engine.tolerationslist[]Tolerations
engine.affinityobject{}Affinity rules

Examples

Production with Ingress and Microsoft OAuth

yaml
ingress:
    enabled: true
    className: nginx
    hosts:
        - host: kouma.example.com
    tls:
        - secretName: kouma-tls
          hosts:
              - kouma.example.com

dashboard:
    auth:
        mode: microsoft
        microsoft:
            clientId: your-client-id
            clientSecret: your-client-secret
            tenantId: your-tenant-id
        oauthAllowedDomains: example.com

engine:
    resources:
        requests:
            memory: 512Mi
            cpu: 250m
        limits:
            memory: 2Gi

External MongoDB with existing secret

yaml
mongodb:
    enabled: false

externalMongodb:
    existingSecret: my-mongodb-secret
    existingSecretKey: connection-string

NodePort access without Ingress

yaml
dashboard:
    service:
        type: NodePort
        nodePort: '30123'

Released under the MIT License.