MATIH Platform is in active MVP development. Documentation reflects current implementation status.
17. Kubernetes & Helm
PostgreSQL

PostgreSQL

PostgreSQL serves as the primary relational database for all MATIH services, deployed via the Bitnami Helm chart with primary-replica replication and connection pooling.


Control Plane PostgreSQL

# From matih-control-plane/values.yaml
postgresql:
  enabled: true
  auth:
    existingSecret: matih-db-credentials
  primary:
    persistence:
      enabled: true
      size: 50Gi
      storageClass: gp3
    resources:
      requests: { cpu: 500m, memory: 1Gi }
      limits: { cpu: 2000m, memory: 4Gi }
  readReplicas:
    replicaCount: 2
    persistence:
      enabled: true
      size: 50Gi
  metrics:
    enabled: true
    serviceMonitor:
      enabled: true

Data Plane PostgreSQL

The data plane has its own PostgreSQL instance with databases for each service:

DatabaseServicePurpose
ai_serviceai-serviceAgent state, sessions, prompts
query_enginequery-engineQuery cache, metadata
catalog_servicecatalog-serviceCatalog metadata
pipeline_servicepipeline-servicePipeline definitions
bi_servicebi-serviceDashboards, widgets
semantic_layersemantic-layerSemantic models

Database Initialization

A Kubernetes Job creates databases and users on first deployment:

dbInit:
  enabled: true
  image:
    repository: postgres
    tag: "16-alpine"
  postgresql:
    host: postgresql
    port: 5432
    existingSecret: postgresql
    passwordKey: postgres-password

Secret Management

PostgreSQL credentials are stored in Kubernetes secrets, never in values files:

# Correct pattern
auth:
  existingSecret: matih-db-credentials
 
# Per-service credentials
config:
  database:
    existingSecret: "ai-service-db-credentials"
    passwordKey: "password"