-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathvalues.yaml
More file actions
287 lines (242 loc) · 9.63 KB
/
Copy pathvalues.yaml
File metadata and controls
287 lines (242 loc) · 9.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
# Default configuration for Inngest Self-Hosted Helm Chart
# This file contains all configurable values with their defaults.
# Override these values in your own values file or with --set flags.
# Number of Inngest application replicas
# When KEDA is enabled, this serves as the baseline before scaling
replicaCount: 1
# Container image configuration
image:
repository: inngest/inngest # Docker image repository
pullPolicy: IfNotPresent # Image pull policy (Always, Never, IfNotPresent)
tag: "latest" # Image tag - CHANGE to specific version for production
# Secrets for pulling private images (if needed)
imagePullSecrets: []
# Kubernetes namespace configuration
namespace:
create: true # Whether to create the namespace
name: "inngest" # Namespace name - consistent across all resources
# ServiceAccount configuration
serviceAccount:
create: true # Whether to create a service account
annotations: {} # Annotations to add to the service account
name: "" # Name of service account (uses default if empty)
# Additional labels applied to all chart resources (e.g., for org-wide labeling)
commonLabels: {}
# Additional labels applied to pods only (e.g., for pod-level selection or monitoring)
podLabels: {}
# Additional annotations for pods (e.g., for service mesh, monitoring)
podAnnotations: {}
# Pod-level security context - applies to all containers in the pod
# These settings enhance security by running as non-root user
podSecurityContext:
runAsNonRoot: true # Prevent running as root user
runAsUser: 1000 # Run as specific user ID
runAsGroup: 1000 # Run as specific group ID
fsGroup: 1000 # File system group for mounted volumes
# Container-level security context - applies to individual containers
# These settings provide defense-in-depth security
securityContext:
allowPrivilegeEscalation: false # Prevent privilege escalation
readOnlyRootFilesystem: true # Make root filesystem read-only
runAsNonRoot: true # Enforce non-root execution
runAsUser: 1000 # Specific user ID
capabilities:
drop:
- ALL # Drop all Linux capabilities
# Kubernetes Service configuration
service:
type: ClusterIP # Service type (ClusterIP, NodePort, LoadBalancer)
port: 8288 # Main Inngest API and UI port
connPort: 8289 # Inngest Connect service port for function registration
# Ingress configuration for external access
ingress:
enabled: false # Set to true to enable ingress
className: "nginx" # Ingress class (e.g., "nginx", "traefik")
annotations:
# Let's Encrypt annotations for automatic SSL certificate provisioning
cert-manager.io/cluster-issuer: "letsencrypt-prod"
# Use letsencrypt-staging for testing, letsencrypt-prod for production
nginx.ingress.kubernetes.io/ssl-redirect: "true"
hosts:
- host: chart-example.local # Change to your domain
paths:
- path: /
pathType: Prefix
tls:
- secretName: inngest-tls # Secret name for TLS certificate
hosts:
- chart-example.local # Change to your domain
# Liveness probe configuration for the main Inngest container
# Increase initialDelaySeconds when connecting to external databases that take longer to initialize
livenessProbe:
initialDelaySeconds: 60
# Readiness probe configuration for the main Inngest container
# Determines when the container is ready to receive traffic
readinessProbe:
initialDelaySeconds: 60
# Resource limits and requests for the main Inngest container
# These defaults provide headroom for typical workloads; adjust for production
resources:
limits: {}
# cpu: 2000m
# memory: 2Gi
requests:
cpu: 500m
memory: 1Gi
# Standard HPA autoscaling is disabled - use KEDA for metrics-based scaling
# Termination grace period for graceful shutdown (in seconds)
# Allows in-flight function executions to complete before pod termination
# Set this as long as you may need a single step or a series of checkpointed
# steps to execute for to ensure the server does not terminate early.
terminationGracePeriodSeconds: 60
# Node selection constraints
nodeSelector: {}
# Tolerations for node taints
tolerations: []
# Pod affinity/anti-affinity rules
affinity: {}
# Inngest application configuration
# These values map directly to Inngest environment variables
inngest:
# REQUIRED: Authentication keys for Inngest
eventKey: "" # Event key for sending events to Inngest (INNGEST_EVENT_KEY)
signingKey: "" # Signing key for validating requests (INNGEST_SIGNING_KEY)
# Optional configuration
config: "" # Path to Inngest configuration file (INNGEST_CONFIG)
host: "" # Server hostname (INNGEST_HOST)
port: "8288" # Server port (INNGEST_PORT)
sdkUrl: [] # App serve URLs for function sync (INNGEST_SDK_URL)
# Service configuration
connectGatewayPort: 8289 # Connect gateway port (INNGEST_CONNECT_GATEWAY_PORT)
noUI: false # Disable web UI (INNGEST_NO_UI)
# Performance tuning
pollInterval: 60 # Polling interval for app updates in seconds (INNGEST_POLL_INTERVAL)
queueWorkers: 100 # Number of executor workers (INNGEST_QUEUE_WORKERS)
retryInterval: 1 # Retry interval for linear backoff (INNGEST_RETRY_INTERVAL)
tick: 150 # Executor queue polling interval in ms (INNGEST_TICK)
# Logging configuration
json: false # Output logs as JSON (INNGEST_JSON)
logLevel: "info" # Log level: trace, debug, info, warn, error (INNGEST_LOG_LEVEL)
verbose: false # Enable verbose logging (INNGEST_VERBOSE)
# Database configuration - use external databases
postgres:
uri: "" # External PostgreSQL URI (INNGEST_POSTGRES_URI)
redis:
uri: "" # External Redis URI (INNGEST_REDIS_URI)
sqlite:
dir: "" # SQLite directory path (INNGEST_SQLITE_DIR)
# Extra environment variables to pass to the Inngest container
# Useful for setting env vars supported by future versions of Inngest
# Example:
# extraEnv:
# - name: INNGEST_CUSTOM_VAR
# value: "custom-value"
# - name: INNGEST_SECRET_VAR
# valueFrom:
# secretKeyRef:
# name: my-secret
# key: secret-key
extraEnv: []
# Internal PostgreSQL database configuration
# Set enabled: false to use external PostgreSQL (configure inngest.postgres.uri)
postgresql:
enabled: true # Deploy internal PostgreSQL instance
image:
repository: postgres # PostgreSQL Docker image
tag: "17" # PostgreSQL version
pullPolicy: IfNotPresent
# Database authentication (stored in Kubernetes Secret for security)
auth:
database: inngest # Database name
username: inngest # Database username
password: password # Database password - CHANGE for production
service:
port: 5432 # PostgreSQL service port
# Resource management for PostgreSQL
resources:
limits:
cpu: 1000m # 1 CPU core limit
memory: 1Gi # 1GB memory limit
requests:
cpu: 100m # 100m CPU request
memory: 256Mi # 256MB memory request
# Persistent storage configuration
persistence:
enabled: true # Enable persistent storage
size: 8Gi # Storage size - increase for production
storageClass: "" # Storage class (uses default if empty)
accessModes:
- ReadWriteOnce # Access mode for the volume
# Node scheduling constraints for PostgreSQL pods
nodeSelector: {}
tolerations: []
affinity: {}
# Internal Redis cache configuration
# Set enabled: false to use external Redis (configure inngest.redis.uri)
redis:
enabled: true # Deploy internal Redis instance
image:
repository: redis # Redis Docker image
tag: "7-alpine" # Redis version
pullPolicy: IfNotPresent
service:
port: 6379 # Redis service port
# Resource management for Redis
resources:
limits:
cpu: 500m # 500m CPU limit
memory: 512Mi # 512MB memory limit
requests:
cpu: 100m # 100m CPU request
memory: 128Mi # 128MB memory request
# Persistent storage for Redis data
persistence:
enabled: true # Enable persistent storage
size: 8Gi # Storage size - adjust based on needs
storageClass: "" # Storage class (uses default if empty)
accessModes:
- ReadWriteOnce # Access mode for the volume
# Node scheduling constraints for Redis pods
nodeSelector: {}
tolerations: []
affinity: {}
# KEDA autoscaling configuration
# Uses Prometheus sidecar to scrape Inngest metrics for scaling decisions
keda:
enabled: false # Enable KEDA-based autoscaling
minReplicas: 1 # Minimum number of replicas
maxReplicas: 10 # Maximum number of replicas
pollingInterval: 30 # How often to check metrics (seconds)
cooldownPeriod: 300 # Cooldown period after scaling (seconds)
scaleTargetRef:
name: inngest # Target deployment to scale
triggers:
- type: prometheus # Use Prometheus scaler (via sidecar)
metadata:
metricName: inngest_queue_depth # Metric name for scaling
threshold: "10" # Scale up when > 10 items in queue
query: inngest_queue_depth # Prometheus query
# Network policies for additional security isolation
networkPolicy:
enabled: false # Enable network policies
ingress: [] # Custom ingress rules
egress: [] # Custom egress rules
# Prometheus sidecar configuration (only used when keda.enabled is true)
# This sidecar scrapes Inngest metrics and provides a Prometheus API for KEDA
prometheus:
image:
repository: prom/prometheus # Prometheus Docker image
tag: "v2.45.0" # Prometheus version
pullPolicy: IfNotPresent
# Prometheus scrape configuration
scrapeInterval: "15s" # How often to scrape metrics
evaluationInterval: "15s" # How often to evaluate rules
# Resource limits for the Prometheus sidecar
# Keep these lightweight since it's only for KEDA metrics
resources:
limits:
cpu: 100m # CPU limit
memory: 128Mi # Memory limit
requests:
cpu: 50m # CPU request
memory: 64Mi # Memory request