Skip to content

Add xDS docs - #1349

Open
minwoox wants to merge 1 commit into
line:mainfrom
minwoox:xds_doc
Open

Add xDS docs#1349
minwoox wants to merge 1 commit into
line:mainfrom
minwoox:xds_doc

Conversation

@minwoox

@minwoox minwoox commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@minwoox
minwoox requested review from ikhoon and jrhee17 as code owners August 5, 2026 02:42
@minwoox minwoox added this to the 0.86.0 milestone Aug 5, 2026
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The 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.

Changes

Envoy xDS documentation

Layer / File(s) Summary
Documentation structure
site/src/sphinx/index.rst, site/src/sphinx/mirroring.rst
Adds the xDS page to the table of contents and corrects mirroring heading levels.
xDS resources and management
site/src/sphinx/xds.rst
Documents supported resources, repository layout, Web UI management, editing, mirroring, permissions, and Kubernetes endpoint aggregators.
Access and client serving
site/src/sphinx/xds.rst
Documents repository roles, credentials, gRPC discovery services, authorization, authentication, and Envoy ADS configuration.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: ikhoon

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive No pull request description was provided, so its relevance to the documentation changes cannot be assessed. Add a brief description of the xDS documentation and heading updates.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the primary change: adding xDS documentation.
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

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.

@minwoox

minwoox commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author
screencapture-file-Users-minu-IdeaProjects-centraldogma-site-build-site-xds-html-2026-08-05-11_43_23

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 `@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

📥 Commits

Reviewing files that changed from the base of the PR and between 5afa110 and 80653e5.

⛔ Files ignored due to path filters (4)
  • site/src/sphinx/_images/xds_1.png is excluded by !**/*.png
  • site/src/sphinx/_images/xds_2.png is excluded by !**/*.png
  • site/src/sphinx/_images/xds_3.png is excluded by !**/*.png
  • site/src/sphinx/_images/xds_4.png is excluded by !**/*.png
📒 Files selected for processing (3)
  • site/src/sphinx/index.rst
  • site/src/sphinx/mirroring.rst
  • site/src/sphinx/xds.rst

Comment on lines 163 to +164
Mirror limit settings
---------------------
^^^^^^^^^^^^^^^^^^^^^^

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 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)
PY

Repository: 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}")
PY

Repository: 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.”

Comment thread site/src/sphinx/xds.rst
Comment on lines +200 to +203
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}``.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ 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 || true

Repository: 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' ' ') || true

Repository: 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.

@jrhee17 jrhee17 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.

👍 👍

Comment thread site/src/sphinx/xds.rst
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

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.

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?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Will do after #1345 is merged. 😉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants