Kubernetes Deployment (Helm)

Production-grade Kubernetes deployment guide with Helm chart, Horizontal Pod Autoscaling (HPA), and secrets management.

For high-throughput enterprise environments, ScanDrix provides official Helm charts and Kubernetes manifests for deployment on AWS EKS, Google Cloud GKE, Azure AKS, or bare-metal Kubernetes clusters.

Architecture topology

A complete Kubernetes deployment separates API ingestion from asynchronous review workers:

code
[Ingress (TLS)]
       │
       ▼
[scandrix-api] (Go REST Service, 8080)
       │
       ├──► [PostgreSQL] (Row-Level Security, pgxpool)
       │
       └──► [RabbitMQ] (Quorum Queues & Delayed Exchange)
                  │
                  ▼
          [scandrix-worker] (Auto-scaled by queue depth via KEDA / HPA)
                  │
                  └──► [Ephemeral Tree-sitter & Model Runners]

Quick installation with Helm

bash
# Add official ScanDrix Helm repository
helm repo add scandrix https://charts.scandrix.dev
helm repo update

# Install ScanDrix into dedicated namespace
helm install scandrix scandrix/scandrix \
  --namespace scandrix-system \
  --create-namespace \
  --values values.production.yaml

Production values.yaml configuration

yaml
global:
  domain: "scandrix.internal.yourcompany.com"

api:
  replicaCount: 3
  resources:
    limits:
      cpu: 2000m
      memory: 4Gi
    requests:
      cpu: 500m
      memory: 1Gi
  env:
    PORT: "8080"
    DB_MAX_CONNS: "50"
    DB_MIN_CONNS: "5"

worker:
  replicaCount: 5
  autoscaling:
    enabled: true
    minReplicas: 3
    maxReplicas: 50
    targetRabbitMQQueueLength: 5

database:
  host: "postgres-cluster.internal.vpc"
  port: 5432
  name: "scandrix_prod"
  sslmode: "require"
  existingSecret: "scandrix-db-credentials"

rabbitmq:
  clusterHost: "rabbitmq.internal.vpc"
  port: 5672
  existingSecret: "scandrix-mq-credentials"

Horizontal Pod Autoscaler (HPA)

The review worker pool scales dynamically based on the number of unacknowledged pull request diffs in RabbitMQ:

yaml
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: scandrix-worker-scaler
  namespace: scandrix-system
spec:
  scaleTargetRef:
    name: scandrix-worker
  minReplicaCount: 3
  maxReplicaCount: 40
  triggers:
    - type: rabbitmq
      metadata:
        queueName: "scandrix.review.tasks"
        targetQueueValue: "2"

Setting targetQueueValue: "2" guarantees that whenever a PR spike occurs (e.g. at the end of a sprint), workers immediately scale up to review pull requests in parallel.