RedisInsight¶
RedisInsight (GitHub) is Redis's official graphical management tool. It provides a browser-based interface for inspecting data structures, profiling queries, monitoring memory usage, and managing cluster topologies — without requiring direct CLI access to Redis nodes.
Unlike lightweight alternatives (Redis Commander, phpRedisAdmin), RedisInsight is maintained by the Redis team and natively understands Sentinel topologies, cluster sharding, and Redis Streams. It ships as a single container with an embedded database for persisting connection profiles and query history, requiring no external dependencies beyond the Redis instances it manages.
Overview¶
| Property | Value |
|---|---|
| Namespace | redisinsight |
| Type | Deployment |
| Layer | Database UI services |
| Status | Enabled |
| Source | apps/base/redisinsight/ |
Dependencies¶
Upstream — required before RedisInsight starts¶
| Service | Reason | Status |
|---|---|---|
redis-sentinel |
Flux dependsOn |
Active |
Downstream — services that depend on RedisInsight¶
No known downstream Flux dependencies.
Purpose¶
RedisInsight provides the platform's operator-facing Redis management interface. It connects to the Redis Sentinel deployment to give engineers visual access to key inspection, slow-log analysis, memory profiling, and stream monitoring — operations that would otherwise require redis-cli access into the cluster.
Exposed at redis.local via Traefik, it serves as the day-two operations tool for debugging cache behavior, verifying pub/sub channel activity, and inspecting consumer group lag on Redis Streams workloads.
Features¶
| Feature | Detail |
|---|---|
| Health-gated startup | Flux healthChecks verify both the upstream redis-sentinel StatefulSet and the RedisInsight Deployment are healthy before declaring reconciliation success |
| HTTP health probes | Liveness and readiness probes hit the root path on the application port, with staggered initial delays to accommodate cold-start database initialization |
| Traefik ingress routing | IngressRoute exposes the UI on a dedicated virtual host via the web entrypoint, keeping it accessible without port-forwarding |
| Service port remapping | ClusterIP Service maps the external-facing port to the container's native application port, decoupling internal container layout from service discovery |
| Dedicated namespace isolation | Runs in its own namespace with matching labels, enabling per-service network policies and RBAC scoping |
Architecture¶
Request routing and dependency topology¶
graph TD
subgraph traefik-ns[traefik]
TR[Traefik Ingress Controller]
end
subgraph redisinsight-ns[redisinsight namespace]
IR[IngressRoute<br/>Host: redis.local]
SVC[Service<br/>:8080]
DEP[Deployment: redisinsight<br/>:5540]
end
subgraph redis-sentinel-ns[redis-sentinel namespace]
RS[Redis Sentinel<br/>StatefulSet]
end
TR -->|entryPoint: web| IR
IR -->|port: 8080| SVC
SVC -->|targetPort: 5540| DEP
DEP -->|dependsOn| RS
Configuration¶
All values sourced from base/services/environment.env
(base); per-environment overrides in clusters/stages/dev/.../environment.env.
| Parameter | Dev | Prod |
|---|---|---|
REDISINSIGHT_CPU_LIMIT |
100m |
500m |
REDISINSIGHT_CPU_REQUEST |
100m |
100m |
REDISINSIGHT_MEMORY_LIMIT |
128Mi |
512Mi |
REDISINSIGHT_MEMORY_REQUEST |
128Mi |
256Mi |
REDISINSIGHT_STORAGE_SIZE |
500Mi |
2Gi |
Operations¶
Pod failing readiness probe on startup¶
Symptoms: Pod stuck in 0/1 Running state. Events show Readiness probe failed: Get "http://10.x.x.x:5540/": dial tcp connection refused. Service receives no traffic.
kubectl describe pod -l app=redisinsight -n redisinsight | grep -A5 "Conditions"
kubectl logs -l app=redisinsight -n redisinsight --tail=50
kubectl get events -n redisinsight --sort-by=.lastTimestamp | tail -20
kubectl get deployment redisinsight -n redisinsight -o jsonpath='{.spec.template.spec.containers[0].resources}'
RedisInsight UI unreachable via redis.local¶
Symptoms: Browser returns 404 or connection timeout when accessing http://redis.local. Pod and Service are healthy. Traefik access logs show no matching route.
kubectl get ingressroute redisinsight -n redisinsight -o yaml
kubectl get endpoints redisinsight -n redisinsight
kubectl logs -l app.kubernetes.io/name=traefik -n traefik --tail=30 | grep redis
kubectl port-forward svc/redisinsight 8080:8080 -n redisinsight
curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/
Cannot connect to Redis from RedisInsight UI¶
Symptoms: RedisInsight UI loads but adding a Redis connection fails with "Error: connect ECONNREFUSED" or "NOAUTH Authentication required". Database list remains empty.
kubectl exec -it deploy/redisinsight -n redisinsight -- wget -qO- http://localhost:5540/api/databases || true
kubectl get statefulset redis-sentinel-node -n redis-sentinel
kubectl exec -it redis-sentinel-node-0 -n redis-sentinel -c sentinel -- redis-cli -p 26379 sentinel masters
kubectl exec -it redis-sentinel-node-0 -n redis-sentinel -c redis -- redis-cli -p 6379 ping
Flux Kustomization stuck due to healthCheck failure¶
Symptoms: flux get kustomization redisinsight shows Health check failed or dependency 'flux-system/redis-sentinel' is not ready. Deployment never reconciles.
flux get kustomization redisinsight
flux get kustomization redis-sentinel
kubectl get statefulset redis-sentinel-node -n redis-sentinel -o jsonpath='{.status.readyReplicas}'
kubectl get deployment redisinsight -n redisinsight -o jsonpath='{.status.conditions[?(@.type=="Available")].status}'
flux reconcile kustomization redisinsight --with-source
OOMKilled during heavy query visualization¶
Symptoms: Pod restarts with reason: OOMKilled in events. kubectl top pod shows memory spike before restart. Last container exit code 137.
kubectl get events -n redisinsight --field-selector reason=OOMKilling --sort-by=.lastTimestamp
kubectl top pod -l app=redisinsight -n redisinsight
kubectl get deployment redisinsight -n redisinsight -o jsonpath='{.spec.template.spec.containers[0].resources.limits.memory}'
kubectl logs -l app=redisinsight -n redisinsight --previous --tail=30
Related¶
apps/base/redisinsight/— Kubernetes manifestsbase/services/redisinsight.yaml— Flux Kustomizationbase/services/environment.env— environment variables
Generated from service-catalog.json at commit 165b485 · catalog sha 4d088b0b3a67b4c4