Prerequisites
- Kubernetes 1.19+
- Helm 3.0+
- (Optional) S3-compatible object storage for persistent data
Quick Start
1
Add the Helm repository
2
Install with default settings
The default installation runs in-memory mode (great for testing):
3
Verify the installation
Installation from OCI Registry
You can also install directly from GitHub Container Registry:Storage Options
In-Memory (Default)
Perfect for development and testing:S3-Compatible Object Storage
For production deployments with persistent data:Configuration Examples
AWS S3 with IAM Role (IRSA)
Recommended for EKS deployments:1
Create IAM policy and role
Create an IAM policy with S3 access:Create an IAM role with OIDC trust relationship for your EKS cluster.
2
Create values file
values.yaml
3
Install with values
With Static Credentials
For non-AWS S3-compatible storage (MinIO, Tigris, R2, etc.):1
Create a secret
2
Create values file
values.yaml
3
Install
With TLS
Self-Signed Certificate
For development/testing:values.yaml
Clients will need to use
--insecure or configure SSL verification to trust the self-signed certificate.Provided Certificate
For production with valid certificates:1
Create TLS secret
2
Create values file
values.yaml
3
Install
With Ingress
Expose S2 Lite via an Ingress controller:values.yaml
Behind AWS Network Load Balancer
values.yaml
Monitoring with Prometheus
Enable Prometheus monitoring:values.yaml
Requires Prometheus Operator to be installed in your cluster.
values.yaml
Resource Configuration
Set resource requests and limits:values.yaml
Pod Disruption Budget
Protect against voluntary disruptions:values.yaml
Advanced Configuration
SlateDB Settings
Configure SlateDB parameters via environment variables:values.yaml
Enable Pipelining
For better performance (currently disabled by default for safety):values.yaml
Init File for Resources
Pre-create basins and streams at startup:1
Create ConfigMap
2
Configure values
values.yaml
Configuration Reference
Common Helm values: | Parameter | Description | Default | |-----------|-------------|---------|| |replicaCount | Number of replicas (must be 1) | 1 |
| image.repository | Image repository | ghcr.io/s2-streamstore/s2 |
| image.tag | Image tag | Chart appVersion |
| service.type | Service type | ClusterIP |
| service.port | Service port | 80 |
| service.targetPort | Container port | 8080 |
| tls.enabled | Enable TLS | false |
| tls.selfSigned | Use self-signed cert | false |
| objectStorage.enabled | Enable object storage | false |
| objectStorage.bucket | S3 bucket name | "" |
| metrics.serviceMonitor.enabled | Enable ServiceMonitor | false |
| resources | Resource requests/limits | {} |
See the values.yaml for all options.
Upgrading
Uninstalling
Uninstalling will not delete data in object storage. Your S3 bucket remains intact.
Troubleshooting
Pod Not Starting
Check pod events:Check Logs
Health Check Failures
Test the health endpoint:Object Storage Connection Issues
Verify credentials and permissions:Next Steps
Monitoring
Set up monitoring and alerts
Configuration
Detailed configuration reference