Helm Chart

Deploy Surgewave using Helm package manager.

Installation

# Add repository (future)
helm repo add surgewave https://charts.surgewave.io
helm install surgewave surgewave/surgewave

# From local chart
helm install surgewave ./deploy/helm/surgewave

Configuration

values.yaml

replicaCount: 3

image:
  repository: kuestenlogik/surgewave
  tag: latest
  pullPolicy: IfNotPresent

service:
  type: ClusterIP
  kafka:
    port: 9092
  grpc:
    port: 9093
  external:
    enabled: false
    type: LoadBalancer

persistence:
  enabled: true
  storageClass: fast-ssd
  size: 100Gi

resources:
  requests:
    memory: 2Gi
    cpu: 1
  limits:
    memory: 4Gi
    cpu: 2

surgewave:
  storageMode: File
  autoCreateTopics: true
  defaultNumPartitions: 6
  defaultReplicationFactor: 3
  minInSyncReplicas: 2
  useRaftConsensus: true

security:
  enabled: false
  sasl:
    enabled: false
    mechanism: SCRAM-SHA-256
  tls:
    enabled: false

metrics:
  enabled: true
  serviceMonitor:
    enabled: false
    interval: 30s

podDisruptionBudget:
  enabled: true
  minAvailable: 2

Custom Values

Production

# prod-values.yaml
replicaCount: 5

resources:
  requests:
    memory: 8Gi
    cpu: 4
  limits:
    memory: 16Gi
    cpu: 8

persistence:
  size: 500Gi
  storageClass: fast-ssd

surgewave:
  defaultReplicationFactor: 3
  minInSyncReplicas: 2

security:
  enabled: true
  sasl:
    enabled: true
    mechanism: SCRAM-SHA-256
  tls:
    enabled: true

metrics:
  enabled: true
  serviceMonitor:
    enabled: true
helm install surgewave ./deploy/helm/surgewave -f prod-values.yaml

Development

# dev-values.yaml
replicaCount: 1

resources:
  requests:
    memory: 512Mi
    cpu: 250m

persistence:
  size: 10Gi

surgewave:
  defaultReplicationFactor: 1

Upgrade

# Upgrade with new values
helm upgrade surgewave ./deploy/helm/surgewave -f prod-values.yaml

# Upgrade to new version
helm upgrade surgewave ./deploy/helm/surgewave --set image.tag=v2.0.0

Common Operations

Scale

helm upgrade surgewave ./deploy/helm/surgewave --set replicaCount=5

Enable Security

helm upgrade surgewave ./deploy/helm/surgewave \
    --set security.enabled=true \
    --set security.sasl.enabled=true

Enable Monitoring

helm upgrade surgewave ./deploy/helm/surgewave \
    --set metrics.enabled=true \
    --set metrics.serviceMonitor.enabled=true

Uninstall

helm uninstall surgewave

# Keep PVCs
helm uninstall surgewave --keep-history

# Delete PVCs
kubectl delete pvc -l app.kubernetes.io/name=surgewave

Chart Structure

surgewave/
├── Chart.yaml          # Chart metadata
├── values.yaml         # Default values
├── templates/
│   ├── _helpers.tpl    # Template helpers
│   ├── statefulset.yaml
│   ├── service.yaml
│   ├── pdb.yaml
│   └── servicemonitor.yaml
└── README.md

Next Steps