Skip to content

Document cross-namespace clusterRef for shadow links in Kubernetes (26.1)#1794

Merged
JakeSCahill merged 1 commit into
mainfrom
dyu/k-shadow-link-cross-namespace-26.1
Jul 15, 2026
Merged

Document cross-namespace clusterRef for shadow links in Kubernetes (26.1)#1794
JakeSCahill merged 1 commit into
mainfrom
dyu/k-shadow-link-cross-namespace-26.1

Conversation

@david-yu

@david-yu david-yu commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Description

26.1 counterpart of #1793.

The optional namespace field on clusterRef was backported to the operator's 26.1.x line in redpanda-data/redpanda-operator#1663 and will ship in operator v26.1.9 (v26.1.8 was cut before the backport merged). This updates the Configure Shadowing in Kubernetes page (26.1) to:

  • Add an example of a shadow link across namespaces on the same Kubernetes cluster using clusterRef.namespace, noting it requires Redpanda Operator v26.1.9 or later.
  • Warn that this same-cluster, cross-namespace topology is for development and testing only — a single Kubernetes cluster is a single failure domain, so production disaster recovery should place source and shadow clusters in separate Kubernetes clusters, ideally in separate cloud regions.
  • Fix the note that previously said cross-namespace clusters require staticConfiguration.

⚠️ Hold merging until operator v26.1.9 is released.

Page previews

🤖 Generated with Claude Code

The Redpanda Operator now supports an optional namespace field on
clusterRef (redpanda-operator#1562, backported in #1663), so a
ShadowLink can reference a source cluster in a different namespace on
the same Kubernetes cluster. Add an example and state that this
topology is for development and testing only; production disaster
recovery should place source and shadow clusters in separate Kubernetes
clusters and cloud regions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@david-yu
david-yu requested a review from a team as a code owner July 14, 2026 06:40
@netlify

netlify Bot commented Jul 14, 2026

Copy link
Copy Markdown

Deploy Preview for redpanda-docs-preview ready!

Name Link
🔨 Latest commit 0f4f5e0
🔍 Latest deploy log https://app.netlify.com/projects/redpanda-docs-preview/deploys/6a55d9cc4927280008e3a4e5
😎 Deploy Preview https://deploy-preview-1794--redpanda-docs-preview.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Updated the Kubernetes Operator “Create a shadow link” instructions to clarify clusterRef authentication and when to use staticConfiguration. Added a Redpanda Operator v26.1.9+ example for same-operator, cross-namespace connectivity using clusterRef.namespace, plus a warning limiting that topology to development and testing and recommending separate clusters with staticConfiguration for production.

Estimated code review effort: 1 (Trivial) | ~2 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers the change and preview, but it omits the required Jira link, review deadline, and checklist status. Add the Jira ticket link, review deadline, and complete the required checks checklist to match the template.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly states the main change: documenting cross-namespace clusterRef shadow links in Kubernetes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dyu/k-shadow-link-cross-namespace-26.1

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/manage/pages/kubernetes/shadowing/k-shadow-linking.adoc`:
- Around line 102-105: Update the separate-cluster production guidance around
staticConfiguration to require broker addresses that are externally reachable
from the other Kubernetes cluster, rather than cluster-local *.svc.cluster.local
names. Add a concise note about configuring externally reachable advertised
listeners, or replace the example with a valid separate-cluster configuration
while preserving the existing same-cluster example.
- Line 105: Update the staticConfiguration guidance in the ShadowLink
documentation to state that the Secrets referenced by caCertSecretRef and
passwordSecretRef must exist in the ShadowLink’s <shadow-namespace>. Clarify
that users must create or copy equivalent Secrets there; Secrets with the same
names only in <source-namespace> are not sufficient.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 10b65d46-d2fe-4696-a3c4-dc4c32266081

📥 Commits

Reviewing files that changed from the base of the PR and between f42fbd7 and 0f4f5e0.

📒 Files selected for processing (1)
  • modules/manage/pages/kubernetes/shadowing/k-shadow-linking.adoc

Comment on lines +102 to +105
Use this same-cluster, cross-namespace topology only for development and testing, such as rehearsing replication and failover on a single Kubernetes cluster. A single Kubernetes cluster is a single failure domain, so it cannot provide disaster recovery. For production, deploy the source and shadow clusters in separate Kubernetes clusters, ideally in separate cloud regions, and connect them using `staticConfiguration`.
====

- For external or cross-namespace clusters, use `staticConfiguration`:
- For external clusters, or clusters that are not managed by the same operator, use `staticConfiguration`:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Use reachable broker addresses for the separate-cluster production example.

The new production guidance recommends separate Kubernetes clusters, but the staticConfiguration example below uses *.svc.cluster.local broker names. Those addresses are cluster-local and generally cannot be resolved or reached from another cluster. Add a note requiring externally reachable advertised listeners, or provide a separate-cluster example.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/manage/pages/kubernetes/shadowing/k-shadow-linking.adoc` around lines
102 - 105, Update the separate-cluster production guidance around
staticConfiguration to require broker addresses that are externally reachable
from the other Kubernetes cluster, rather than cluster-local *.svc.cluster.local
names. Add a concise note about configuring externally reachable advertised
listeners, or replace the example with a valid separate-cluster configuration
while preserving the existing same-cluster example.

====

- For external or cross-namespace clusters, use `staticConfiguration`:
- For external clusters, or clusters that are not managed by the same operator, use `staticConfiguration`:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Document where the staticConfiguration Secrets must exist.

caCertSecretRef and passwordSecretRef are namespace-scoped, and this ShadowLink is applied in <shadow-namespace>. The example uses source-cluster Secret names but does not tell users to create or copy equivalent Secrets into the shadow namespace, so the manifest can fail even when the Secrets exist in <source-namespace>.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/manage/pages/kubernetes/shadowing/k-shadow-linking.adoc` at line 105,
Update the staticConfiguration guidance in the ShadowLink documentation to state
that the Secrets referenced by caCertSecretRef and passwordSecretRef must exist
in the ShadowLink’s <shadow-namespace>. Clarify that users must create or copy
equivalent Secrets there; Secrets with the same names only in <source-namespace>
are not sufficient.

Source: Learnings

@RafalKorepta

Copy link
Copy Markdown
Contributor

@david-yu

Copy link
Copy Markdown
Contributor Author

@JakeSCahill Could you review

@JakeSCahill
JakeSCahill merged commit f6da005 into main Jul 15, 2026
7 checks passed
@JakeSCahill
JakeSCahill deleted the dyu/k-shadow-link-cross-namespace-26.1 branch July 15, 2026 12:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants