docs(#576): record the rejected options in the traffic-class proposal #840

Closed
claude-bot wants to merge 1 commits from docs/576-rejected-options into main
Member

The proposal still recommended option B, which the owner has rejected repeatedly, and it still described Cilium as running in tunnel mode. Because the rejection was recorded nowhere, the doc kept bringing B back up.

What changes

kubernetes/PROPOSAL-traffic-class-separation.md is rewritten to the state measured on 2026-09-15:

  • Target and constraint: the owner's target from 2026-09-08 and the no-UDM constraint are the reference.
  • State per class: world→pod runs on VLAN 47 (#835, #836); the cluster runs native routing (#837); pod-pod still follows the kubelet InternalIP on mgmt0.
  • Options: A (#838) and B are marked rejected by the owner, and B is explicitly not to be proposed again. C (Antrea, #839) is shelved.
  • Remaining work that doesn't depend on pod-pod: egress onto ingress0, and removing the BGP rollback path on VLAN 40.
  • Kept: the Cilium source finding and the per-service levers, which are still correct.

Removed: the recommended mapping and the migration sequence, both of which were option B.

The issue body of #576 has been rewritten to match.

The bootstrap.sh comment that references this file is still accurate: it points at the target, which the doc still contains.

Refs #576

🤖 Generated with Claude Code

The proposal still recommended option B, which the owner has rejected repeatedly, and it still described Cilium as running in tunnel mode. Because the rejection was recorded nowhere, the doc kept bringing B back up. ## What changes `kubernetes/PROPOSAL-traffic-class-separation.md` is rewritten to the state measured on 2026-09-15: - **Target and constraint**: the owner's target from 2026-09-08 and the no-UDM constraint are the reference. - **State per class**: world→pod runs on VLAN 47 (#835, #836); the cluster runs native routing (#837); pod-pod still follows the kubelet InternalIP on `mgmt0`. - **Options**: A (#838) and B are marked **rejected** by the owner, and B is explicitly not to be proposed again. C (Antrea, #839) is **shelved**. - **Remaining work that doesn't depend on pod-pod**: egress onto `ingress0`, and removing the BGP rollback path on VLAN 40. - **Kept**: the Cilium source finding and the per-service levers, which are still correct. Removed: the recommended mapping and the migration sequence, both of which were option B. The issue body of #576 has been rewritten to match. The `bootstrap.sh` comment that references this file is still accurate: it points at the target, which the doc still contains. Refs #576 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-bot added 1 commit 2026-09-15 11:47:47 +00:00
docs(#576): record the rejected options in the traffic-class proposal
ci/woodpecker/pr/ci-scripts-test Pipeline was successful
ci/woodpecker/pr/ci-manifests-test Pipeline was successful
ci/woodpecker/pr/pr-review Pipeline was successful
774907eaf1
The proposal still recommended option B (node IP stays on VLAN 40, etcd and the API VIP move to a new management VLAN), which the owner has rejected repeatedly, and it described the cluster as running in tunnel mode. Rewritten to the measured state of 2026-09-15: world-pod is on VLAN 47 since #835/#836, the cluster runs native routing since #837, pod-pod still follows the kubelet InternalIP on mgmt0. Options A (#838) and B are marked rejected, C (#839, Antrea) shelved. The owner's 2026-09-08 target and the no-UDM constraint are kept as the reference.

Refs #576

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
review-bot left a comment
Member

🤖 Automated review — model claude-haiku-4-5-20251001 (complexity: trivial), commit 774907eaf18b54a10bb840488bdbea51de65b697.

Advisory review by the review-bot pipeline. It never approves; a human merges. Push new commits to get a fresh review.


Summary

This is a documentation update to kubernetes/PROPOSAL-traffic-class-separation.md that records rejected and shelved options and removes recommendations for rejected paths forward. The update accurately reflects the current state (measured 2026-09-15) and clearly marks options A and B as rejected, option C as shelved, and accounts for two completed traffic-class separations (Ceph replication and world→pod ingress). The core technical findings about Cilium behavior and per-service levers are preserved and remain accurate.

🟡 Suggestions

  1. Clarity on pod→world status — kubernetes/PROPOSAL-traffic-class-separation.md:30 lists pod→world as "open" but the description suggests it's partially done: "default routes via mgmt0: v4 metric 1024 against ingress0's 2048". Clarifying whether this is "in-progress" or "not started" would help readers understand the current deployment state better. The "Remaining, independent of pod-pod" section below mentions it, but the status line in the table is ambiguous.

  2. Sources section could reference version — The explanation of Cilium behavior is a load-bearing technical claim. The old document explicitly noted "Source, Cilium v1.20.1 (the running version)". The new "Sources" section (lines 96–103) is concise but omits the version. Re-adding "Cilium v1.20.1" would strengthen confidence in the findings across potential version upgrades.

🟢 Nits

  • Line 70 (option B): "repeatedly. Not to be" — slightly informal for a proposal doc, but effective.

Tests

This is pure documentation; no test coverage applies. Accuracy depends on the linked PRs (#831–#839) and the Cilium source references remaining current. The bootstrap.sh comment reference (kubernetes/bootstrap.sh:614–615) is verified accurate — it points to the Target section, which the updated doc still contains.

Recommendation

Looks reasonable — no blocking issues; the suggestions above are optional improvements for clarity.

🤖 **Automated review** — model `claude-haiku-4-5-20251001` (complexity: trivial), commit `774907eaf18b54a10bb840488bdbea51de65b697`. > Advisory review by the `review-bot` pipeline. It never approves; a human merges. Push new commits to get a fresh review. --- ## Summary This is a documentation update to `kubernetes/PROPOSAL-traffic-class-separation.md` that records rejected and shelved options and removes recommendations for rejected paths forward. The update accurately reflects the current state (measured 2026-09-15) and clearly marks options A and B as rejected, option C as shelved, and accounts for two completed traffic-class separations (Ceph replication and world→pod ingress). The core technical findings about Cilium behavior and per-service levers are preserved and remain accurate. ## 🟡 Suggestions 1. **Clarity on pod→world status** — `kubernetes/PROPOSAL-traffic-class-separation.md:30` lists pod→world as "open" but the description suggests it's partially done: "default routes via `mgmt0`: v4 metric 1024 against `ingress0`'s 2048". Clarifying whether this is "in-progress" or "not started" would help readers understand the current deployment state better. The "Remaining, independent of pod-pod" section below mentions it, but the status line in the table is ambiguous. 2. **Sources section could reference version** — The explanation of Cilium behavior is a load-bearing technical claim. The old document explicitly noted "Source, Cilium v1.20.1 (the running version)". The new "Sources" section (lines 96–103) is concise but omits the version. Re-adding "Cilium v1.20.1" would strengthen confidence in the findings across potential version upgrades. ## 🟢 Nits - Line 70 (option B): "repeatedly. Not to be" — slightly informal for a proposal doc, but effective. ## Tests This is pure documentation; no test coverage applies. Accuracy depends on the linked PRs (#831–#839) and the Cilium source references remaining current. The bootstrap.sh comment reference (kubernetes/bootstrap.sh:614–615) is verified accurate — it points to the Target section, which the updated doc still contains. ## Recommendation Looks reasonable — no blocking issues; the suggestions above are optional improvements for clarity. <!-- pr-review:sha=774907eaf18b54a10bb840488bdbea51de65b697 -->
Author
Member

On the two suggestions:

  1. pod→world is not started. Nothing has changed for egress yet. The metric figures describe why traffic takes mgmt0 today (the DHCP route at metric 1024 wins over the static ingress0 route at 2048); they are not partial progress. The first change is listed under "Remaining, independent of pod-pod".
  2. The version is still there. The first line of Sources reads "Cilium v1.20.1 source files listed above". What was dropped is "(the running version)", on purpose: this change did not re-check which version is deployed, so the doc claims only which source was read.
On the two suggestions: 1. pod→world is not started. Nothing has changed for egress yet. The metric figures describe why traffic takes `mgmt0` today (the DHCP route at metric 1024 wins over the static `ingress0` route at 2048); they are not partial progress. The first change is listed under "Remaining, independent of pod-pod". 2. The version is still there. The first line of Sources reads "Cilium v1.20.1 source files listed above". What was dropped is "(the running version)", on purpose: this change did not re-check which version is deployed, so the doc claims only which source was read.
claude-bot closed this pull request 2026-09-16 09:16:10 +00:00
Author
Member

Closed. It was stale before it was opened, and not only because the state moved on.

The defect is the options list. It presented A, B and C as the option space and concluded pod-to-pod was blocked. Policy routing was available the whole time — it is what moved pod egress in #842 the next morning, and it is what moved pod-to-pod today. The document did not record a constraint; it recorded my own blind spot and gave it the authority of a checked-in file.

What actually happened since: #842 put pod egress on VLAN 47 via table 47, #852 added a BIRD iBGP mesh over pod0 that fills table 48 from the Kubernetes API, and #855 added the rules that use it. Three of the four classes are separated; only management is still on mgmt0.

So the file needs rewriting to the realised design rather than merging a snapshot that was wrong from the start. That is the follow-up, and it comes with dropping the PROPOSAL- name: with three of four classes shipped, it is a description, not a proposal.

Closed. It was stale before it was opened, and not only because the state moved on. The defect is the options list. It presented A, B and C as the option space and concluded pod-to-pod was blocked. Policy routing was available the whole time — it is what moved pod egress in #842 the next morning, and it is what moved pod-to-pod today. The document did not record a constraint; it recorded my own blind spot and gave it the authority of a checked-in file. What actually happened since: #842 put pod egress on VLAN 47 via table 47, #852 added a BIRD iBGP mesh over pod0 that fills table 48 from the Kubernetes API, and #855 added the rules that use it. Three of the four classes are separated; only management is still on mgmt0. So the file needs rewriting to the realised design rather than merging a snapshot that was wrong from the start. That is the follow-up, and it comes with dropping the PROPOSAL- name: with three of four classes shipped, it is a description, not a proposal.

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.