Deployment

This guide covers deploying Korvet in production environments.

Docker Deployment

Single Instance

docker run -d \
  --name korvet \
  -p 9092:9092 \
  -e KORVET_REDIS_HOST=redis.example.com \
  -e KORVET_REDIS_PORT=6379 \
  -e KORVET_REDIS_PASSWORD=${REDIS_PASSWORD} \
  redisfield/korvet:latest

Docker Compose

services:
  redis:
    image: redis
    ports:
      - "6379:6379"

  korvet:
    image: redisfield/korvet:latest
    ports:
      - "9092:9092"
    environment:
      KORVET_REDIS_HOST: redis
    depends_on:
      - redis

Kubernetes Deployment

Deployment Manifest

apiVersion: apps/v1
kind: Deployment
metadata:
  name: korvet
spec:
  replicas: 3
  selector:
    matchLabels:
      app: korvet
  template:
    metadata:
      labels:
        app: korvet
    spec:
      containers:
      - name: korvet
        image: redisfield/korvet:latest
        ports:
        - containerPort: 9092
        env:
        - name: KORVET_REDIS_HOST
          value: redis-service
        - name: KORVET_REDIS_PORT
          value: "6379"
        resources:
          requests:
            memory: "512Mi"
            cpu: "500m"
          limits:
            memory: "2Gi"
            cpu: "2000m"
        livenessProbe:
          httpGet:
            path: /actuator/health/liveness
            port: 8080
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /actuator/health/readiness
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 5

Service Manifest

apiVersion: v1
kind: Service
metadata:
  name: korvet-service
spec:
  selector:
    app: korvet
  ports:
  - protocol: TCP
    port: 9092
    targetPort: 9092
  type: LoadBalancer

High Availability

For production deployments:

  • Multiple instances: Run 3+ Korvet instances behind a load balancer

  • Redis cluster: Use Redis Cluster or Redis Enterprise for HA

  • Health checks: Configure liveness and readiness probes

  • Graceful shutdown: Allow time for in-flight requests to complete

Scaling

Korvet can be scaled horizontally:

  • Stateless: Each instance is independent

  • Load balancing: Use any TCP load balancer

  • Partition assignment: Clients connect to any instance