KubeBlocks
BlogsKubeBlocks Cloud
⌘K
​
Back
  1. So easy, right? Well...
  2. If nothing goes wrong, something will
  3. Hidden challenges ahead
  4. I still want to give it a try

Redis Operatorization — Ready Yet?

In the Kubernetes era, “operatorizing” databases is both irresistibly attractive and routinely intimidating for cloud‑native teams.

Open-source databases like MySQL and PostgreSQL came of age in the PC server era and often hold critical business data. Moving them to Kubernetes Operators takes real effort and conviction. Redis, on the other hand—born alongside containers and often treated as a cache—looks simpler. Many teams assume it’ll be easy. Practice says otherwise.

So easy, right? Well...

Spinning up Redis as a container is dead simple—pull an image and go. Co-locating apps with an operator-managed Redis in the same cluster also reduces onboarding friction. But two “minor” problems show up immediately:

  • Redis service isn’t highly available When a Redis Pod gets rescheduled, its IP changes and app-side connection pools break. You can’t safely expose the Pod IP to applications. You need a VIP or a stable DNS name for a consistent endpoint.

  • Redis service isn’t highly reliable If the node running Redis crashes, the backing PV can get corrupted, risking data loss. Plenty of developers treat Redis as ephemeral, but many rely on it for durable key-value storage. Operatorizing Redis inevitably means solving for persistent data via distributed block storage or local disk sync.

If nothing goes wrong, something will

Ambitious teams don’t ship toy Redis. They look to operator-driven, multi-instance orchestration. These setups run multiple Redis Pods (replicas) across nodes to survive one or more Pod failures and keep serving traffic.

Redis itself isn’t distributed; you need external components for role assignment and replication config. Sentinel is a battle-tested option with solid community support. For example, Bitnami’s Redis Helm Chart can deploy a Primary/Secondary + Sentinel cluster. With sensible replica counts, resource specs, and some kernel tuning, quality improves a lot. If load is steady, this works. But during failures or scaling, thorny problems appear:

  • Permanent degradation of service capacity Many teams don’t have mature distributed block storage; local disks are common. When Redis Pods land on local-disk nodes, they get “pinned.” If hardware fails and the node recovers quickly, the instance comes back. If not, the Pod sits Pending and can’t be rescheduled elsewhere. The service stays up but loses capacity indefinitely—and the Pending Pod is an eyesore that never goes away.

  • A low ceiling on capacity With local disks, your headroom is bounded by a single node. Memory is capped by the node’s available RAM and the number of co-located Pods. Storage is whatever local disk remains after everyone else. CPU is less of an issue—Redis isn’t multi-core hungry.

  • Scaling headaches Peaks happen; scaling follows. If the total dataset is steady and only hot keys increase, vertical memory scaling may suffice. But once total data grows and you need more storage, simply editing the StatefulSet via Helm won’t cut it; you’ll likely hijack PVCs by hand. Later, when you horizontally scale, new instances inherit the old config. Your neat, homogeneous, automated service turns into a heterogeneous, hand-stitched patchwork.

Hidden challenges ahead

High availability and reliability issues are visible from architecture diagrams and typically get addressed on Day 1. Day 2 problems—subtle capability gaps under specific conditions—depend on real workloads and team experience and often surface only in production.

A cautious team won’t run production databases as vanilla Kubernetes workloads—it’s like sailing a paper boat into open water. Kubernetes CRDs can aggregate storage, compute, and networking, exposing databases as declarative APIs. Several Redis Operators aim to solve Day 2 pain:

  • Redis Enterprise Operator (Redis Labs)
  • KubeDB (AppsCode)
  • KubeBlocks (ApeCloud)
  • Redis Operator (Spotahome)
  • Redis Operator (OpsTree)

Redis Labs, AppsCode, and ApeCloud target enterprise use cases with broader capabilities. Spotahome and OpsTree are fully open source—leaner and easier to read, but fewer features. Note release cadence: Spotahome last released Jan 19, 2022; OpsTree on Nov 10, 2022. Expect slower response to issues and plan accordingly.

Regardless of which Operator you pick, expect real-world networking to stress your Redis exposure strategy—especially when new Kubernetes apps must talk to existing Redis clusters. Without a plan, deployment speed suffers. Given the diversity of client SDKs, long-term viability typically requires supporting these models:

  • Single node (client talks to primary only)
    • Expose primary via NodePort
    • Expose primary via LoadBalancer
  • Dual nodes (client talks to primary only)
    • Expose primary via NodePort
    • Expose primary via LoadBalancer
  • Dual or multi-node (client uses Sentinel for read/write separation)
    • Expose Redis and Sentinel replica addresses via HostNetwork
    • Or via NodePort
    • Or via LoadBalancer
  • Sharding
    • Expose replica addresses via HostNetwork
  • Sharding + Proxy
    • Expose proxy via NodePort
    • Or via LoadBalancer

Why is sharding different—and seemingly HostNetwork-only? That’s the product–cloud tug-of-war. Redis wants sharding as a paid feature, but the code is BSD-licensed. To discourage cloud “free-riding,” upstream didn’t implement announce-ip, which breaks native sharding in many cloud networking setups. Cloud providers filled the gap with their own announce-ip equivalents and kept shipping at scale. Net result: in operatorized environments, native Redis sharding often ends up HostNetwork-only, adding ops friction. These commercial dynamics remain a live factor in Redis operatorization.

I still want to give it a try

Thinking “this is harder than it looked” and that managed cloud might be worth the premium? Fair take. But don’t give up.

Operatorization is a core direction for managed databases. The hard parts are elasticity and multi-network support. With block storage, object storage, VPCs, and L4 load balancers, cloud providers have an easier time and can ship polished features (fixed Pod IPs, in-place K8s upgrades, etc.). Most in-house teams lack SDS/SDN, so the hill is steeper.

The good news: most teams don’t need hyperscaler-grade complexity. If you pick your battles, narrow scope, and build production muscle gradually, the wave of problems won’t crash all at once. There’s plenty of field experience out there—some stories are about serious cost reduction; others are about enabling self-service for product teams.

If your goals are higher resource utilization and faster engineering velocity, Redis operatorization is worth a try. It’s not painless, but the payoff can justify the grind.


Appendix: Practical notes (keep handy)

  • Prefer distributed block storage over local disks. If you must use local, plan failover paths and capacity ceilings up front.
  • Standardize exposure (NodePort/LB/HostNetwork) and service discovery. Document it as a platform contract; don’t let teams improvise per-app.
  • Define scaling runbooks: vertical (memory-bound), capacity rebinds (PVC surgery), and homogeneous horizontal scale without config drift.
  • For sharding, either use a distro/proxy that supports announce-ip or accept the operational tax of HostNetwork.
  • Evaluate operator activity and support SLAs. For production, favor active ecosystems or commercial backing.
  • Run chaos/failover drills: node loss, PV loss, network partitions, and client reconnection behavior.

© 2025 ApeCloud PTE. Ltd.