Add xDS docs - #1349
Conversation
📝 WalkthroughWalkthroughThe documentation adds an Envoy xDS v3 control plane page, links it from the index, documents Kubernetes endpoint aggregators and access controls, and describes gRPC discovery services with an Envoy ADS configuration example. It also corrects mirroring heading levels. ChangesEnvoy xDS documentation
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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 `@site/src/sphinx/mirroring.rst`:
- Around line 163-164: Update the “Mirror limit settings” heading in the
mirroring documentation to use the appropriate hierarchy: promote it to a
top-level or mirroring-section heading with the matching underline marker if it
applies to all mirroring modes, or retain the subsection marker only when its
content is specific to “Central Dogma to Central Dogma mirroring.”
In `@site/src/sphinx/xds.rst`:
- Around line 200-203: Update the client resource-addressing documentation
around the generic ``groups/{group}/{type}/{id}`` pattern to explicitly document
the Kubernetes endpoint aggregator exception
``groups/{group}/k8s/clusters/{id}``, including that EDS clients should use this
cluster name.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: e7e540ce-b952-41ec-b8e7-2ce467b246df
⛔ Files ignored due to path filters (4)
site/src/sphinx/_images/xds_1.pngis excluded by!**/*.pngsite/src/sphinx/_images/xds_2.pngis excluded by!**/*.pngsite/src/sphinx/_images/xds_3.pngis excluded by!**/*.pngsite/src/sphinx/_images/xds_4.pngis excluded by!**/*.png
📒 Files selected for processing (3)
site/src/sphinx/index.rstsite/src/sphinx/mirroring.rstsite/src/sphinx/xds.rst
| Mirror limit settings | ||
| --------------------- | ||
| ^^^^^^^^^^^^^^^^^^^^^^ |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "File exists and line count:"
wc -l site/src/sphinx/mirroring.rst || true
echo
echo "Around target heading and surrounding section structure:"
nl -ba site/src/sphinx/mirroring.rst | sed -n '120,185p'
echo
echo "All rst headings in file with line numbers and symbols:"
python3 - <<'PY'
from pathlib import Path
p = Path("site/src/sphinx/mirroring.rst")
for i, line in enumerate(p.read_text().splitlines(), 1):
s = line.strip()
if len(s) >= 3 and all(c in s.replace(s[0], '').replace(' ', '') == '' for c in s) and s[0] in "-^=`~\"'#+<>_|[]()":
# print only common Sphinx reST heading chars for this file
if s[0] in "-^`=~":
print(i, s[0], line)
PYRepository: line/centraldogma
Length of output: 315
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "File size:"
wc -l site/src/sphinx/mirroring.rst
echo
echo "Surrounding lines around target heading:"
awk 'NR>=130 && NR<=180 { printf "%d\t%s\n", NR, $0 }' site/src/sphinx/mirroring.rst
echo
echo "All reST headings in file:"
python3 - <<'PY'
from pathlib import Path
p = Path("site/src/sphinx/mirroring.rst")
lines = p.read_text().splitlines()
chars = set("-^`=~")
for i, line in enumerate(lines, 1):
s = line.strip()
if len(s) >= 3 and s[0] in chars and all(ch == s[0] for ch in s if ch != " "):
print(f"{i}:\t[{s[0]}] {line}")
PYRepository: line/centraldogma
Length of output: 2290
Make Mirror limit settings a top-level or mirroring-section heading.
^ is a subsection marker in this file, so this heading lives under Central Dogma to Central Dogma mirroring. Use - if it applies to all mirroring modes, or keep ^ only if the content applies only to that subsection.
🤖 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 `@site/src/sphinx/mirroring.rst` around lines 163 - 164, Update the “Mirror
limit settings” heading in the mirroring documentation to use the appropriate
hierarchy: promote it to a top-level or mirroring-section heading with the
matching underline marker if it applies to all mirroring modes, or retain the
subsection marker only when its content is specific to “Central Dogma to Central
Dogma mirroring.”
| The gRPC discovery services (LDS, RDS, CDS, EDS and ADS) are served on the same server port as the REST API | ||
| and follow the server's TLS configuration. An authenticated application identity is | ||
| served the union of every group it has ``READ`` access to, and resources are addressed as | ||
| ``groups/{group}/{type}/{id}``. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== target file outline/sections =="
wc -l site/src/sphinx/xds.rst || true
sed -n '80,115p' site/src/sphinx/xds.rst || true
echo "== target doc section =="
sed -n '188,212p' site/src/sphinx/xds.rst || true
echo "== resource name references in xds.rst =="
rg -n "groups/|clusters|k8s|READ|gRPC discovery|resource" site/src/sphinx/xds.rst || true
echo "== broader references in site documentation =="
rg -n "k8s/clusters|groups/{group}/k8s/clusters|kubernetes aggregator|aggregator path|READ access|resource name|resources are addressed" site/src/sphinx -S || trueRepository: line/centraldogma
Length of output: 6795
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== xds.rst resource name definitions =="
sed -n '24,36p' site/src/sphinx/xds.rst || true
sed -n '92,101p' site/src/sphinx/xds.rst || true
sed -n '198,205p' site/src/sphinx/xds.rst || true
echo "== broader site references =="
rg -n 'k8s/clusters|groups/[^}]+/k8s/clusters|aggregat|K8s Aggregator|Kubernetes endpoint aggregator|resources are addressed|Resource name|endpoint binding' site/src/sphinx || true
echo "== source references to k8s/clusters =="
rg -n 'k8s/clusters|k8s.*/clusters|clusters/' $(git ls-files | grep -E '\.(kt|kts|java|ts|js|py|rst|yaml|yml)$' | tr '\n' ' ') || trueRepository: line/centraldogma
Length of output: 24394
Document the Kubernetes aggregator resource name separately.
Kubernetes endpoint aggregators are served as groups/{group}/k8s/clusters/{id}, but the client addressing section says resources are groups/{group}/{type}/{id}. Add an explicit exception/example for the aggregator form so EDS clients use the correct cluster name.
🤖 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 `@site/src/sphinx/xds.rst` around lines 200 - 203, Update the client
resource-addressing documentation around the generic
``groups/{group}/{type}/{id}`` pattern to explicitly document the Kubernetes
endpoint aggregator exception ``groups/{group}/k8s/clusters/{id}``, including
that EDS clients should use this cluster name.
| remove it. Both require the ``WRITE`` role on the group. The endpoints an aggregator generates appear, | ||
| read-only, in the group's *Endpoints* section. | ||
|
|
||
| .. image:: _images/xds_4.png |
There was a problem hiding this comment.
The form in the xds_4.png will become outdated once #1345 (comment) is merged.
What do you think of updating the legacy image with the new one attached in #1345?

No description provided.