docs(redis): correct the cross-datacenter replication API surface - #59
Merged
Conversation
Validated docs/en/functions/95-disaster-recovery/ against a live business
cluster and against redis-operator release-5.1. Several documented API names
and procedures no longer match the product, and the setup guides could not be
followed as written.
Peer authentication now binds the instance's default account, per 207d1c3c
("accept the default account as a peer-auth credential") and 77851bdc. Both
setup guides used to open by creating a dedicated custom RedisUser with the
username aapeerrepl and its own password Secret; aapeerrepl was removed from
the product together with secretName, its only password source, and never
shipped in a released build. Step 1 of each guide now confirms the
default-account RedisUser — drc-acl-<instance>-default on cluster,
rfr-acl-<instance>-default otherwise — which needs no provisioning, and states
the requirement that follows: default passwords are generated per instance, so
every member of a group must be given the same one. Binding a custom account
stays documented as the narrower alternative.
API corrections:
- spec.activeRedis.redisUserName does not exist; the field is redisUserRef.
A patch using the old name is a silent no-op: the API server strips it with
only a warning and reports "patched (no change)".
- ActiveRedisConnection.spec.secretName was removed. Manifests carrying it are
rejected outright, which made the whole Redis 6.0 setup procedure
unexecutable. A 6.0 link takes the same instance-level binding.
- Port 7379 is added to the proxy Service only in Active-Active mode. A
Disaster Recovery link uses the proxy RESP endpoint alone, so the upgrade
guide's prerequisite to open 7379 between datacenters was for a port nothing
listens on in that mode.
- spec.peerPort has no 7379 default; it defaults to the port of addresses[0]
and is meant to be left unset.
Also corrected: the peer-auth RedisUser may be a custom or a default account
(only system is refused), the password-Secret exclusivity rule applies when
either RedisUser involved is bound as a peer-auth credential, the automatic
6.0 path binds the existing default-account RedisUser rather than minting one,
the failover sample no longer shows pause: true as an upstream failure, and the
Redis 6.0 downstream example no longer reuses the upstream's serviceID under a
warning that it must be unique. The Redis 6.0 procedure gains a step to wait
for the operator-written binding, which the connection would otherwise outrun.
Corrected examples were re-validated by server-side dry-run.
Deploying alauda-redis with
|
| Latest commit: |
2fc1146
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://8691b63b.alauda-redis.pages.dev |
| Branch Preview URL: | https://docs-dr-api-corrections.alauda-redis.pages.dev |
This was referenced Sep 7, 2026
chideat
added a commit
that referenced
this pull request
Sep 9, 2026
… (#60) Validated docs/en/functions/95-disaster-recovery/ against a live business cluster and against redis-operator release-5.1. Several documented API names and procedures no longer match the product, and the setup guides could not be followed as written. Peer authentication now binds the instance's default account, per 207d1c3c ("accept the default account as a peer-auth credential") and 77851bdc. Both setup guides used to open by creating a dedicated custom RedisUser with the username aapeerrepl and its own password Secret; aapeerrepl was removed from the product together with secretName, its only password source, and never shipped in a released build. Step 1 of each guide now confirms the default-account RedisUser — drc-acl-<instance>-default on cluster, rfr-acl-<instance>-default otherwise — which needs no provisioning, and states the requirement that follows: default passwords are generated per instance, so every member of a group must be given the same one. Binding a custom account stays documented as the narrower alternative. API corrections: - spec.activeRedis.redisUserName does not exist; the field is redisUserRef. A patch using the old name is a silent no-op: the API server strips it with only a warning and reports "patched (no change)". - ActiveRedisConnection.spec.secretName was removed. Manifests carrying it are rejected outright, which made the whole Redis 6.0 setup procedure unexecutable. A 6.0 link takes the same instance-level binding. - Port 7379 is added to the proxy Service only in Active-Active mode. A Disaster Recovery link uses the proxy RESP endpoint alone, so the upgrade guide's prerequisite to open 7379 between datacenters was for a port nothing listens on in that mode. - spec.peerPort has no 7379 default; it defaults to the port of addresses[0] and is meant to be left unset. Also corrected: the peer-auth RedisUser may be a custom or a default account (only system is refused), the password-Secret exclusivity rule applies when either RedisUser involved is bound as a peer-auth credential, the automatic 6.0 path binds the existing default-account RedisUser rather than minting one, the failover sample no longer shows pause: true as an upstream failure, and the Redis 6.0 downstream example no longer reuses the upstream's serviceID under a warning that it must be unique. The Redis 6.0 procedure gains a step to wait for the operator-written binding, which the connection would otherwise outrun. Corrected examples were re-validated by server-side dry-run. (cherry picked from commit 386e527)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Validated
docs/en/functions/95-disaster-recovery/against a live business cluster (operatorv5.1.0-rc.43.g2e4ef16f, an ancestor ofrelease-5.1whose only intervening commits are e2e tests) and againstrelease-5.1source. Several documented API names and procedures no longer match the product, and the setup guides could not be followed as written.Peer authentication now binds the default account
Per
207d1c3c(accept the default account as a peer-auth credential) and77851bdc. Both setup guides used to open by creating a dedicatedcustomRedisUserwith the usernameaapeerrepland its own password Secret.aapeerreplwas removed from the product together withsecretName, its only password source, and never shipped in a released build.Step 1 of each guide now confirms the default-account
RedisUser—drc-acl-<instance>-defaulton cluster,rfr-acl-<instance>-defaultotherwise — which needs no provisioning, and states the requirement that follows: default passwords are generated per instance, so every member of a group must be given the same one. Binding acustomaccount stays documented as the narrower alternative.API corrections
spec.activeRedis.redisUserNameredisUserRefWarning: unknown field+patched (no change)— a silent no-opActiveRedisConnection.spec.secretNamestrict decoding error: unknown field "spec.secretName"— the Redis 6.0 procedure was unexecutable7379internal/builder/activeredis/service.go:73if isNew && as.Spec.IsMeshMode(); the livepeerofinstance's proxy Service has only6379, and replicates finespec.peerPortdefaults to7379addresses[0]api/middleware/redis/v1alpha1/activeredisconnection_types.go:68-80The upgrade guide's prerequisite to open
7379between datacenters was for a port nothing listens on in Disaster Recovery mode.Also corrected
RedisUsermay be acustomor adefaultaccount; onlysystemis refused (ResolvePeerAuthCredential).RedisUserinvolved is bound as a peer-auth credential, not to any twocustomusers (validateSecretExclusivity).RedisUserrather than minting one —redis_peerauth_provision.go:29-76says "Nothing is provisioned".pause: trueas an upstream failure; a paused connection is itself a cause of disconnected shards.serviceIDdirectly under a warning that it must be unique.Verification
yarn lint: 0 errors, 0 warnings. In-repo anchor check: 0 unmatched across 51 files.TERMINOLOGY_CANDIDATES.md— 4 terms await human confirmation.Not verified here
Web Console procedures, cross-datacenter/LoadBalancer reachability, Redis 6.0 runtime behaviour (no 6.0 instance available), mesh convergence, failover and teardown. None of these are marked as verified in the docs.
Follow-ups outside this repo
internal/webhook/middleware/v1/validation/validation.go:194warns aboutspec.activeRedis.mesh.announceAddress, a path that does not exist; the field isspec.activeRedis.proxy.service.announceAddress.defaultActiveRedisPeerAuthBindingdoc-comment atredis_webhook.go:465-477still describes minting a RedisUser and password Secret from the connection credential, whichensureAutoPeerAuthUserno longer does. That stale comment is the likely origin of theaa-peer/aapeerreplstory in these docs.mastercarries the same disaster-recovery pages (from #51) and needs a cherry-pick of this alongside the still-open #58.🤖 Generated with Claude Code