Overview
Proxy Hopper is stateless beyond its IP pool state. With Redis as the backend, multiple replicas share a single pool — each IP is checked out to exactly one replica at a time via RedisBLPOP atomicity. This makes horizontal scaling straightforward.
HorizontalPodAutoscaler
HPA with multiple replicas requires the Redis backend. The in-memory backend gives each pod its own independent pool state — IPs may be used concurrently across pods and quarantine state is not shared.
Redis for HA
Use a managed Redis service for production rather than the bundled Bitnami subchart:- AWS — ElastiCache for Redis
- GCP — Cloud Memorystore
- Azure — Azure Cache for Redis
- Self-hosted — Redis Sentinel or Redis Cluster with persistence enabled
PodDisruptionBudget
Maintain minimum availability during node drain and rolling upgrades:Resource requests and limits
Proxy Hopper is I/O-bound. CPU usage is low; memory scales with the number of open connections.kubectl top pods).
Health probes
Proxy Hopper exposes readiness and liveness endpoints. The Helm chart configures these automatically, but if you are deploying manually:Example: full HA values file
Production checklist
Use a Secret for config with auth
Use a Secret for config with auth
If auth is enabled, store the config in a Kubernetes Secret and reference it with
config.existingSecret. Credentials in config.inline end up in Helm release history.Use managed Redis
Use managed Redis
The bundled Redis subchart is convenient for development but not hardened for production. Use a managed service with persistence and replication enabled.
Set resource requests and limits
Set resource requests and limits
Without resource limits, a traffic spike can starve other pods on the node. Set limits based on observed memory usage under load.
Add a PodDisruptionBudget
Add a PodDisruptionBudget
Ensure at least one replica remains available during node maintenance or rolling upgrades.
Enable the admin API for health checks
Enable the admin API for health checks
The
/health endpoint on the admin port is the most reliable liveness/readiness signal. Enable admin.enabled: true in your values.