For the complete documentation index, see llms.txt. This page is also available as Markdown.

Installation: Kubernetes (Helm)

Deploy KiloCenter to Kubernetes with Helm — chart, prerequisites (k8s 1.25+, PostgreSQL 14+, Redis 7+), and ingress.

Goal

Deploy KiloCenter to a Kubernetes cluster using the Helm chart included in this repository.

Prerequisites

Requirement
Minimum version

Kubernetes cluster

1.25+

Helm

3.x

External PostgreSQL

14+

External Redis

7+

PostgreSQL and Redis are not deployed by this chart. Provision them separately (managed services, operators, or standalone) and supply connection details in your values override.

Architecture

                  Internet
                     |
               [ Ingress ] (optional)
                /         \
         kc-web:80    kc-gateway:9090
                          |
                    kc-core:50051 ---- kc-identity:50052
                    /      |      \
             bssci:5000  scaci:5001  mosquitto:1883
                                         |
                                    [MQTT clients]

The chart deploys five services and one MQTT broker:

Component
Port(s)
Description

kc-core

50051 (gRPC), 5000 (BSSCI), 5001 (SCACI), 8086 (health)

Service center engine

kc-gateway

9090 (gRPC-web), 8087 (health)

External API ingress

kc-identity

50052 (gRPC), 8088 (health)

Identity, users, organizations

kc-web

80

Web management interface (nginx)

mosquitto

1883, 9001 (WebSocket)

MQTT broker

certgen

Pre-install hook that generates TLS certificates

Step 1: Create a Values Override

At minimum, override the database, Redis, and secret settings:

Important: The authHmacSecret is used to sign and verify JWT tokens across KC-Gateway and KC-Identity. It must be at least 32 characters.

Step 2: Install

On first install, a pre-install hook Job runs the certgen binary to generate a self-signed CA and server certificate into a shared PVC. Subsequent upgrades skip generation if certificates already exist.

Step 3: Validate

Step 4: Access the UI

Without ingress, use port-forwarding:

Then open http://localhost:8080/ in your browser.

Default Admin Account

On first startup, a default admin user is created via database migration:

Email

admin [at] kilocenter.local

Password

admin123!

Replace [at] with @ when signing in.

Warning: Change the password or remove this account before any public-facing deployment. The credentials are published in this repository.

Ingress

Enable standard Kubernetes Ingress in your values override:

When using ingress, add your domain to the CORS allowed origins:

BSSCI/SCACI Protocol Access

Base stations connect directly to KC-Core over TCP+TLS on ports 5000 (BSSCI) and 5001 (SCACI). These are raw TCP connections, not HTTP. To expose them externally, create a LoadBalancer service:

TLS Certificates

The certgen hook generates a self-signed CA and server certificate on first install. For production, replace these with certificates signed by a trusted CA by mounting your own secret or PVC at /app/certificates in the kc-core pod.

Configuration Reference

For the full list of configurable parameters, see the Helm chart README.

Upgrading

Set a specific image tag to pin a version:

Troubleshooting

Symptom
Likely Cause
Fix

Pods in ImagePullBackOff

Missing image pull secret

Add global.imagePullSecrets with your registry credentials

KC-Core readiness probe 503

Dependency not ready

Check KC-Identity and PostgreSQL are running

invalid_token after login

HMAC secret mismatch

Ensure secrets.authHmacSecret is set (same for gateway and identity)

BSSCI connection refused

No external service

Create a LoadBalancer service for ports 5000/5001

gRPC-web errors in browser

CORS or ingress misconfigured

Check kcGateway.config.corsOrigins and ingress paths

Last updated