Skip to content

feat: CodeZero Helm chart — first ISV partner#12

Open
robinbraemer wants to merge 3 commits intomainfrom
feat/codezero-chart
Open

feat: CodeZero Helm chart — first ISV partner#12
robinbraemer wants to merge 3 commits intomainfrom
feat/codezero-chart

Conversation

@robinbraemer
Copy link
Copy Markdown
Member

Summary

Helm chart for CodeZero — CNAP's first ISV deployment partner. Converts their docker-compose (12 services) to a production-ready Kubernetes chart hosted in cnap-tech/charts.

Architecture

IDE profile (the app):

  • Bitnami PostgreSQL 18.5.17 (subchart, auto-generated passwords, PVC)
  • Sagittarius Rails web (backend API + health checks)
  • Sagittarius Rails background (GoodJob worker)
  • Sagittarius gRPC (streaming)
  • Sculptor (Next.js frontend)
  • Nginx (reverse proxy — routes GraphQL, gRPC, static to backends)

Runtime profile (flow execution, conditional):

  • NATS with JetStream (inline, not subchart — simple single-instance)
  • Aquila (runtime gateway, token-authenticated to sagittarius)
  • Taurus (flow execution engine)
  • Draco REST + Cron (trigger adapters)

Key design decisions

  • Config generator eliminated — Code Zero's Ruby ERB config generator replaced with Helm-rendered ConfigMaps. Two small configs (nginx routing + sagittarius DB) templated directly.
  • Bitnami PostgreSQL as chart dependency — proper StatefulSet, PVC, health checks, PodDisruptionBudget, auto-generated passwords. No hardcoded credentials.
  • NATS kept inline — simple single-instance broker, Bitnami chart overkill for this use case.
  • Runtime conditionalruntime.enabled toggles all flow execution services.
  • No NetworkPolicies — CNAP isolates at namespace level. Bitnami Postgres has its own.

Resources generated

10 Deployments, 9 Services, 2 ConfigMaps, 2 Secrets, 1 StatefulSet, 1 ServiceAccount, 1 PodDisruptionBudget, 1 NetworkPolicy (Bitnami)

Test plan

  • helm lint — 0 errors
  • helm template — renders 28 resources correctly
  • Tested locally via docker-compose — all services running, UI accessible, runtime connected
  • Deploy on CNAP cluster (next step)

Context

  • Partnership docs
  • Code Zero: source-available no-code automation platform, 8 self-hosted B2B customers via GLS logistics partnership
  • Images from registry.gitlab.com/code0-tech/packages with -ce/-ee edition suffix

First ISV partner chart. Converts Code Zero's docker-compose (12 services)
to Kubernetes-native Helm chart:

IDE profile:
- Postgres 16.1 StatefulSet with PVC
- Sagittarius Rails web (backend API, health checks)
- Sagittarius Rails background (GoodJob worker)
- Sagittarius gRPC server
- Sculptor (Next.js frontend)
- Nginx reverse proxy (routes graphql, grpc, static to backends)

Runtime profile (conditional, runtime.enabled):
- NATS with JetStream
- Aquila (runtime gateway, connects to sagittarius via token)
- Taurus (flow execution engine)
- Draco REST (HTTP trigger adapter)
- Draco Cron (scheduled trigger adapter)

Config generator replaced with Helm-rendered ConfigMaps — nginx routing
config and sagittarius DB config are templated directly, no Ruby ERB
container needed.

Images from registry.gitlab.com/code0-tech/packages with -ce/-ee suffix.
Replace inline Postgres StatefulSet with Bitnami postgresql 16.7.5
subchart. Gets us production-grade Postgres with:
- Proper StatefulSet + PVC management
- Health checks, probes, security context
- PodDisruptionBudget, NetworkPolicy, ServiceAccount
- Backup support, replication option, metrics exporter
- Configurable via standard postgresql.* values

Removed: deployment-postgres.yaml, inline postgres Service
Added: Chart.yaml dependency, postgresql.* values block
Updated: secret, configmap, helpers to reference Bitnami service name

NATS kept inline — simple single-instance broker, Bitnami chart
would be overkill for Code Zero's use case.
- Upgraded from 16.7.5 to 18.5.17 (latest, PostgreSQL 18.3)
- Removed hardcoded postgres password from values.yaml — Bitnami
  auto-generates and stores in K8s Secret
- All sagittarius containers read POSTGRES_PASSWORD from Bitnami's
  secret via secretKeyRef
- envFrom used for other env vars from codezero secret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant