Kubernetes
The Kumbuka repository contains a reference Kubernetes deployment under deploy/kubernetes. The manifests use Kustomize and deploy the kumbuka namespace together with Kumbuka, PostgreSQL, html2pdf, and Mailbridge.
Prepare the manifests
Clone the server repository:
git clone https://github.com/kumbuka-me/kumbuka.git
cd kumbuka
Before applying the manifests, review the example configuration and replace deployment-specific values:
- change the PostgreSQL password in
postgres/secret.yamland keep the password inkumbuka/secret.yamlin sync; - generate
KUMBUKA__ENCRYPTION_KEYwithopenssl rand -base64 32and store the complete value inkumbuka-config; - change
KUMBUKA__PUBLIC_URLinkumbuka/deployment.yamlto the externally visible URL; - configure the optional OIDC and Mailbridge settings when you use those services;
- review the PostgreSQL
5Gipersistent volume claim and ensure the cluster has a suitable defaultStorageClass.
The root kustomization.yaml is the entry point. Remove optional resources there if your deployment provides its own PostgreSQL, PDF service, or mail delivery.
Deploy
Apply the complete example deployment with:
kubectl apply -k deploy/kubernetes
Check the workloads:
kubectl -n kumbuka get pods
kubectl -n kumbuka get services
The included Kumbuka service is a ClusterIP. For a quick local check, forward it to your machine:
kubectl -n kumbuka port-forward service/kumbuka 8080:8080
Then open http://localhost:8080.
For a normal cluster deployment, expose the kumbuka service through your own Ingress, Gateway, or other cluster-specific routing and set KUMBUKA__PUBLIC_URL to the matching external URL.
Manifest reference
The canonical manifests are maintained with the server repository:
kustomization.yamlkumbuka/deployment.yamlkumbuka/secret.yamlkumbuka/service.yamlpostgres/statefulset.yamlhtml2pdf/deployment.yamlmailbridge/deployment.yaml
See Runtime configuration for Kumbuka deployment settings and secrets.