Harbor Chose Valkey
With Harbor v2.15.2, the Harbor team replaced Redis with Valkey as its internal cache backend. This was a deliberate open source choice that highlights the flexibility and resilience of the open source ecosystem.
Harbor is a CNCF graduated open source container registry, a place where organizations can store, manage, and secure container images, Helm charts, OCI artifacts, CNAB (Cloud Native Application Bundles), and AI models via ModelPack. Among organizations that self-host their container registries for production Kubernetes environments, Harbor is one of the most widely adopted solutions. What you might not know is that Harbor has always depended on Redis under the hood. With v2.15.2, that changed.
The Harbor team opened issue #22935 in March 2026, merged PR #23157 on April 28, and shipped the change in v2.15.2. The reason is simple: open source projects benefit from dependencies with clear governance models that align with their own community values.
Why Harbor uses a cache
Harbor is not a simple file server. Every time someone pushes or pulls an image, Harbor is doing a lot of work simultaneously. Things like:
- Session storage stores user login sessions
- Manifest cache serves OCI manifest data without hitting the database on every pull.
- Job queue manages background tasks like vulnerability scans, garbage collection, and replication jobs.
- Quota counter for tracking push concurrency per project.
All of this needs a fast in-memory store. That was why Redis has been part of Harbor since the beginning; it is the engine behind every interaction with the registry. Now with Valkey, Harbor keeps doing exactly the same work, with a better open source foundation underneath.
What makes it the right choice for Harbor:
- BSD 3-Clause license: permissive, with fewer legal risks and fewer restrictions than non open source alternatives.
- Wire compatible: same RESP protocol as Redis; no application-level RESP changes were required, while Harbor’s image/build templates were updated to valkey-photon.
- Actively maintained: governed by the Linux Foundation with a clear release cadence.
- Production ready: available as a fully managed service on Amazon ElastiCache, Google Cloud Memorystore, OCI Cache, Aiven, DigitalOcean, Momento, Vultr, and other providers, or self-hosted on your own infrastructure.
- Performance: Valkey has continued improving beyond its 7.2 foundation. Valkey 9.1 delivers up to 2 million requests per second in official benchmarks, more than double the throughput of Valkey 7.2
For Harbor, the migration was clean. Same protocol, few application code changes, and a dependency that is fully aligned with open source principles.
Install Harbor with Valkey
Harbor v2.15.2 ships with valkey-photon as its internal cache image. However, the official Helm chart has not been updated yet to reflect this; it still defaults to the Redis image. To run Harbor with Valkey today, we override the internal cache image with goharbor/valkey-photon from Docker Hub.
First, add the Harbor Helm repo:
helm repo add harbor https://helm.goharbor.io
helm repo update
Then install Harbor pointing to the Valkey image:
helm install harbor harbor/harbor \
--namespace harbor \
--create-namespace \
--set expose.type=nodePort \
--set expose.tls.enabled=false \
--set externalURL=http://<node-ip>:30002 \
--set harborAdminPassword="your-secure-password" \
--set redis.internal.image.repository=goharbor/valkey-photon \
--set redis.internal.image.tag=v2.15.2
The first lines are basic setup so Harbor can start and be accessible. The last two lines tell the Helm chart to use the valkey-photon image from Docker Hub instead of the default Redis one.
The Harbor team chose Valkey not only for technical compatibility, but also because it aligns with Harbor's commitment to open source sustainability. And it is a reminder that the open source ecosystem can respond quickly and effectively when a foundational dependency changes direction.
Harbor v2.15.2 is out. Try the latest release of Harbor today!