Title here
Summary here
Before deploying bouine to production, verify each item below. Items are grouped by area. Skip items that don’t apply to your deployment.
insecure_skip_verify is not set in any upstream pool TLS configresources.limits.memory set and GOMEMLIMIT auto-computed (Helm chart does this)hot_max_bytes sized to fit in RAM without GC pressure (default: 75% of GOMEMLIMIT)warmVolume.size)warm_max_bytes set below PVC capacity to leave headroommax_object_size configured per route to reject oversized responsesmax_response_bytes configured to prevent memory exhaustion from large bodiesreplicaCount >= 3 for quorumpodDisruptionBudget.enabled: true with minAvailable >= 2hop_limit configured (default 2 is fine for most deployments)terminationGracePeriodSeconds >= 40 to allow graceful drainminReadySeconds >= 30 to let the ring converge before trafficttl_default set explicitlystale_while_revalidate configured for routes that can serve stalestale_if_error configured for origin-outage resiliencenegative_ttl set for routes that return errors (prevents error storms)jitter_percent > 0 to prevent synchronized revalidation burstsallow_set_cookie is off unless you explicitly need Set-Cookie cachingbypass_on_cookie/bypass_on_cookie_names — or key consent cookies via key.cookie_presence (see
Cache policy)cache.bypass_on_user_agent (declare once under route_defaults) (see
Cache policy)consecutive_5xx, eject_for)max_connections set per pool to prevent FD exhaustionlisten.max_connections set to bound total data-plane connections (default 65536 since v0.6.0; 0 disables the cap; refusals counted by bouine_conn_rejections_total)listen.idle_timeout tuned against front-end/LB idle timeouts (front-end must close idle connections first)connect.max_idle_conn_duration kept below any LB idle timeout between bouine and the origin (AWS NLB: 350s)response_header_timeout configured to prevent slow-origin connection churncluster.peer_max_idle_conn_duration kept below admin.idle_timeout (default 300s)cluster.peer_fetch_concurrency sized for strong-mode peer-hit load (default 64 since v0.6.0, range 1–128)bouine_conn_rejections_total (data-plane accept refusals — listen.max_connections reached)bouine_conn_rejections_total (data-plane accept refusals — listen.max_connections reached)bouine_fetch_shed_total (slow-origin shedding — see
Streaming)bouine_peer_shed_total and bouine_peer_fetch_queue_wait_seconds in strong-mode clusters (peer-fetch saturation — see
Monitoring)pprof_enabled is off in production (default)metric_relabel_configs considered for bouine_request_duration_seconds (see
Monitoring)values-production.yaml as base)NetworkPolicy.enabled: true to isolate admin and cluster portsservice.type: LoadBalancer — the admin plane stays on the separate admin Serviceautoscaling.enabled: ArgoCD ignoreDifferences for /spec/replicas on the StatefulSetserviceAccount.automount: false (bouine doesn’t need K8s API access)/readyz), liveness (/healthz)maxUnavailable: 1 for sequential pod restartsbouine config set, experimental config reload behind experimental.config_reload since v0.6.0)/drain endpoint + preStop hook)