Skip to main content

Overview

This guide covers production deployment of S2 Lite using Kubernetes and Helm, including TLS, monitoring, high availability considerations, and security best practices.

Prerequisites

  • Kubernetes cluster (1.19+)
  • Helm 3.0+
  • kubectl configured
  • S3-compatible object storage bucket
  • (Optional) Prometheus Operator for metrics

Quick Start

Install from Helm Repository

1

Add the S2 Helm repository

2

Install with default settings (in-memory)

3

Install with S3 storage (production)

Install from OCI Registry (GitHub Container Registry)

Production Configuration

Complete values.yaml Example

Create a values.yaml file for your production deployment:
Deploy with:

TLS Configuration

Option 1: Self-Signed Certificate (Testing)

Self-signed certificates should only be used for testing. Use proper certificates in production.

Option 2: Provided Certificate (Production)

1

Create TLS secret

2

Configure Helm values

3

Deploy

Option 3: cert-manager Integration

1

Install cert-manager

2

Create ClusterIssuer

3

Create Certificate

Cloud Provider Examples

AWS EKS with IRSA

1

Create IAM policy

2

Create IAM role with OIDC

3

Deploy with IRSA annotations

GCP GKE with Workload Identity

1

Create GCP service account

2

Grant GCS permissions

3

Bind Kubernetes SA to GCP SA

4

Deploy with Workload Identity

Azure AKS with Managed Identity

1

Create managed identity

2

Grant storage permissions

3

Deploy with pod identity

Monitoring & Observability

Prometheus Integration

With Prometheus Operator installed:

Key Metrics to Monitor

  • s2_lite_append_duration_seconds - Append latency histogram
  • s2_lite_read_duration_seconds - Read latency histogram
  • s2_lite_active_streams - Number of active streams
  • s2_lite_active_sessions - Number of active client sessions
  • slatedb_* - SlateDB internal metrics

Grafana Dashboard

Query the /metrics endpoint to build dashboards:

High Availability Considerations

Important: S2 Lite is currently a single-node deployment. The Recreate deployment strategy ensures only one instance writes to the object store at a time, preventing data corruption.

Current Architecture

  • Single Active Instance: Only one S2 Lite pod can be active at a time
  • Recreate Strategy: Old pod terminates before new pod starts
  • Fencing: On startup, S2 Lite waits one manifest poll interval to ensure previous instance is fenced

Achieving High Availability

  1. Fast Recovery: Minimize downtime during pod restarts
  2. Multi-Region Deployments: Run separate S2 Lite instances in different regions with different buckets
  3. Client-Side Retry: Configure SDKs with retry logic and failover

Planned Multi-Node Support

Future versions may support horizontal scaling. Track progress:

Resource Initialization

Declarative Basin/Stream Creation

Create basins and streams automatically on startup:
1

Create init spec file

2

Create ConfigMap

3

Mount in Helm values

Security Best Practices

Pod Security

The default Helm chart includes security hardening:

Network Policies

Restrict network access:

CORS Configuration

Disable permissive CORS in production:
Or use --no-cors flag.

Upgrading

1

Check release notes

Review CHANGELOG for breaking changes.
2

Update Helm repository

3

Upgrade release

4

Verify deployment

Pinning Versions

Pin to specific chart and app versions in production:

Troubleshooting

Check Logs

Common Issues

Check events:
Common causes:
  • Insufficient resources
  • Node selector mismatch
  • Missing service account
Check object storage permissions:
Verify:
  • Bucket exists
  • IAM role has correct permissions
  • Endpoint URL is correct
Increase startup time:

Next Steps

Backup & Restore

Learn backup strategies for disaster recovery

S3 Setup

Configure different object storage providers