11# S3Proxy Helm Chart Values
22
3- # Deployment settings
43replicaCount : 3
54
6- # Container image
75image :
8- # IMPORTANT: Change to your image registry
9- # Example: ghcr.io/myorg/sseproxy-python or your private registry
106 repository : ghcr.io/YOUR_USERNAME/sseproxy-python
11- # IMPORTANT: Never use 'latest' in production - use specific version tags
12- # Example: "v0.1.0", "v0.2.0", etc.
137 tag : latest
148 pullPolicy : IfNotPresent
159
16- # S3 configuration (used only when minio.enabled=false)
17- # Ignored if MinIO is enabled - MinIO will be used as the S3 backend
10+ # S3 configuration (used when minio.enabled=false)
1811s3 :
19- # S3-compatible endpoint: AWS S3, DigitalOcean Spaces, etc.
20- # Examples:
21- # - "s3.amazonaws.com" (AWS S3)
22- # - "s3.us-west-2.amazonaws.com" (AWS S3 specific region)
23- # - "nyc3.digitaloceanspaces.com" (DigitalOcean Spaces)
2412 host : " s3.amazonaws.com"
25- # AWS region (ignored for non-AWS S3 services)
2613 region : " us-east-1"
2714
28- # Server settings
2915server :
30- port : 4433 # Listen port (should match service.port)
31- noTls : true # TLS termination handled by Ingress or Load Balancer
16+ port : 4433
17+ noTls : true
3218
33- # Performance tuning settings
3419performance :
35- maxConcurrentUploads : 10 # Max concurrent upload operations
36- maxConcurrentDownloads : 10 # Max concurrent download operations
37- autoMultipartMb : 16 # Chunk size in MB for multipart uploads
20+ throttlingRequestsMax : 10
21+ maxUploadSizeMb : 45
3822
39- # MinIO configuration (embedded S3 backend)
40- # Set enabled: false to use external S3 (AWS, DigitalOcean Spaces, etc.)
41- # When disabled, configure s3.host and set secrets.awsAccessKeyId/awsSecretAccessKey
23+ # Embedded MinIO (set enabled: false to use external S3)
4224minio :
43- enabled : true # For production, consider external S3 service
25+ enabled : true
4426 image :
4527 repository : minio/minio
46- tag : latest # Specify version for production, e.g., "RELEASE.2024-01-16T16-07-38Z"
28+ tag : latest
4729 pullPolicy : IfNotPresent
48- # IMPORTANT: Change credentials in production!
49- # Default credentials below are for development only
5030 rootUser : " minioadmin"
5131 rootPassword : " minioadmin"
5232 resources :
@@ -57,38 +37,22 @@ minio:
5737 cpu : " 500m"
5838 memory : " 512Mi"
5939
60- # Redis cache for upload state management
61- # Choose one: redis-ha (for HA) or externalRedis (for managed services)
40+ # External Redis (for managed services)
6241externalRedis :
63- # Use this for managed Redis: AWS ElastiCache, Azure Cache, Redis Cloud, etc.
64- # Leave empty to use redis-ha instead
65- # Format: redis://host:port/db or redis://:password@host:port/db
66- url : " " # e.g., "redis://my-elasticache.abc123.cache.amazonaws.com:6379/0"
67- # Include password in URL if needed: redis://:mypassword@host:port/db
68- # TTL for upload state in hours
42+ url : " "
6943 uploadTtlHours : 24
7044
71- # Redis HA configuration (embedded high-availability Redis)
72- # Uses dandydev/redis-ha chart with Sentinel for automatic failover
73- # Set enabled: false if using externalRedis instead
45+ # Redis HA (embedded)
7446redis-ha :
75- enabled : true # Disable if using managed Redis service
76- # Number of Redis replicas (1 master + N-1 replicas)
47+ enabled : true
7748 replicas : 3
49+ existingSecret : " "
7850
79- # Use existing secret for Redis password (RECOMMENDED for production)
80- # If provided, auth and authKey below are ignored
81- # Create with: kubectl create secret generic redis-password --from-literal=redis-password="your-password"
82- existingSecret : " " # Name of existing secret with key "redis-password"
83-
84- # Persistence configuration
8551 persistentVolume :
8652 enabled : true
8753 size : 10Gi
88- storageClass : " " # Use default storage class, or specify e.g., "gp3", "standard"
54+ storageClass : " "
8955
90- # HAProxy for single-endpoint access (recommended)
91- # This allows standard redis:// URLs without sentinel-aware client code
9256 haproxy :
9357 enabled : true
9458 replicas : 2
@@ -100,7 +64,6 @@ redis-ha:
10064 cpu : " 200m"
10165 memory : " 128Mi"
10266
103- # Sentinel configuration
10467 sentinel :
10568 port : 26379
10669 quorum : 2
@@ -109,22 +72,17 @@ redis-ha:
10972 failover-timeout : 180000
11073 parallel-syncs : 5
11174
112- # Redis configuration
11375 redis :
11476 port : 6379
11577 config :
11678 maxmemory-policy : volatile-lru
11779 min-replicas-to-write : 1
11880 min-replicas-max-lag : 5
11981
120- # Security - Redis password authentication (ignored if existingSecret is set above)
121- auth : false # Set to true to enable password protection
122- authKey : " " # Redis password (required if auth=true and no existingSecret, generate with: openssl rand -base64 32)
123-
124- # Pod anti-affinity for HA (spread across nodes)
82+ auth : false
83+ authKey : " "
12584 hardAntiAffinity : true
12685
127- # Resource limits for Redis pods
12886 resources :
12987 requests :
13088 cpu : " 100m"
@@ -133,54 +91,30 @@ redis-ha:
13391 cpu : " 500m"
13492 memory : " 512Mi"
13593
136- # Secret Configuration
137- # IMPORTANT: Never commit actual secrets to git!
138- # Priority: existingSecrets > create static secret
139-
94+ # Secrets (use existing secret in production)
14095secrets :
141- # Option 1: Use existing Secret (RECOMMENDED for production)
142- # Reference an existing Kubernetes secret and optionally map its keys
143- # If using default key names, just set the secret name:
144- # kubectl create secret generic my-s3-secrets \
145- # --from-literal=S3PROXY_ENCRYPT_KEY="$(openssl rand -base64 32)" \
146- # --from-literal=AWS_ACCESS_KEY_ID="AKIA..." \
147- # --from-literal=AWS_SECRET_ACCESS_KEY="..."
14896 existingSecrets :
14997 enabled : false
150- name : " " # Name of existing Kubernetes secret
151- # Optional: Map secret keys if using different key names
98+ name : " "
15299 keys :
153- encryptKey : " S3PROXY_ENCRYPT_KEY" # Secret key name for encryption key
154- awsAccessKeyId : " AWS_ACCESS_KEY_ID" # Secret key name for access key
155- awsSecretAccessKey : " AWS_SECRET_ACCESS_KEY" # Secret key name for secret key
156-
157- # Option 2: Create new secret from values (use only for development)
158- # For production, use existingSecrets with a pre-created secret
159- # Provide values via helm --set or secure values file, never hardcode here
100+ encryptKey : " S3PROXY_ENCRYPT_KEY"
101+ awsAccessKeyId : " AWS_ACCESS_KEY_ID"
102+ awsSecretAccessKey : " AWS_SECRET_ACCESS_KEY"
160103
161- # S3PROXY_ENCRYPT_KEY: AES-256-GCM encryption key (base64-encoded 32 bytes)
162- # Generate with: openssl rand -base64 32
163104 encryptKey : " "
164-
165- # AWS/S3 credentials (ignored if minio.enabled=true and using MinIO defaults)
166- # Only needed when: minio.enabled=false AND using external S3
167105 awsAccessKeyId : " "
168106 awsSecretAccessKey : " "
169107
170- # Logging
171- logLevel : " INFO" # Options: DEBUG, INFO, WARNING, ERROR
108+ logLevel : " INFO"
172109
173- # Resource limits for s3proxy pods
174- # Adjust based on your workload and cluster capacity
175110resources :
176111 requests :
177112 cpu : " 100m"
178- memory : " 256Mi "
113+ memory : " 512Mi "
179114 limits :
180115 cpu : " 1000m"
181- memory : " 512Mi "
116+ memory : " 1Gi "
182117
183- # Kubernetes Service configuration
184118service :
185- type : ClusterIP # Use LoadBalancer for external access, or configure Ingress
186- port : 4433 # Service port (container also runs on this port)
119+ type : ClusterIP
120+ port : 4433
0 commit comments