Self-contained, fully-filled-in Kubernetes examples that stand up SEMOSS together with all of its dependencies in-cluster — no external database or storage required. They differ only in the cluster-coordination backend. Each folder has its own README with a component breakdown and the port-forward access step.
| Example | Coordination backend | Contents |
|---|---|---|
semoss-with-postgres-minio-zk |
ZooKeeper (single node) | Postgres + MinIO + ZooKeeper + SEMOSS |
semoss-with-postgres-minio-redis |
Redis (single node) | Postgres + MinIO + Redis + SEMOSS |
semoss-with-postgres-minio-zk-ha |
ZooKeeper 3-node ensemble | Postgres + MinIO + ZK ensemble + SEMOSS |
semoss-with-postgres-minio-redis-ha |
Redis + Sentinel (HA) | Postgres + MinIO + Redis/replicas + Sentinels + SEMOSS |
The -ha variants make the coordination layer fault-tolerant: a 3-node ZooKeeper
ensemble (tolerates 1 node down), or Redis with Sentinel automatic failover. The
Redis example uses Sentinel (REDIS_SENTINEL_ENABLED / REDIS_MASTER_NAME /
REDIS_SENTINEL_NODES); SEMOSS also supports standalone and Redis Cluster
topologies (see the Redis keys in the root README).
These stacks expose SEMOSS as a ClusterIP service and are accessed via
kubectl port-forward (see each folder's README). To reach SEMOSS through a real
URL with an NGINX ingress instead, see ingress/ — it covers the
required ingress controller, plus DNS + TLS for production.
Each stack includes:
- Postgres — a
Deployment+Service+ PVC, with an initConfigMapthat creates the eight databases SEMOSS needs on first startup. - MinIO — an S3-compatible object store as a
StatefulSet+Service, plus a one-shotJobthat creates thesemossbucket. - ZooKeeper or Redis — the coordination backend as a
StatefulSet+Service. - SEMOSS — a
Deployment(config viaenvFromaConfigMap/Secret) +Service. ItsinitContainerswait for Postgres, MinIO, and the backend to be reachable, so a singlekubectl apply -k .works regardless of creation order.
cd semoss-with-postgres-minio-zk # or semoss-with-postgres-minio-redis
kubectl apply -k .
Watch it come up:
kubectl -n semoss get pods -w
Reach the UI by port-forwarding the service (use port 8080 — the config's
REDIRECT is hardcoded to localhost:8080):
kubectl -n semoss port-forward svc/semoss-service 8080:8080
| What | URL |
|---|---|
| Health / readiness check | http://localhost:8080/Monolith/health/ready (READY=200) |
| SEMOSS UI | http://localhost:8080/SemossWeb/packages/client/dist/ |
| Component | Value |
|---|---|
| Postgres user / password | myuser / mypassword |
| Postgres databases | security, localmaster, scheduler, themes, user_tracking, model_logs, prompt_hub, audit_logs |
| MinIO access / secret key | minioadmin / minioadmin |
| MinIO bucket / endpoint | semoss / http://minio:9000 |
Note: The example SEMOSS pod requests 8Gi / limits 16Gi. Make sure your cluster/node has the headroom, or adjust the values in
semoss-deployment.ymlto fit your environment.
kubectl delete -k . # removes everything except PVCs
kubectl -n semoss delete pvc --all # also delete persistent volumes