Repository navigation
Conversation
Draft proposal for the KafkaProtocolRouter CRD and VirtualKafkaCluster changes needed to support the routing API (proposal 070) in the operator. Addresses kroxylicious/kroxylicious#4430. Assisted-by: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
Assisted-by: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
- Use DeprecationWarning (from Condition.Type) instead of made-up DeprecatedField for the targetKafkaServiceRef deprecation condition on VKC - KafkaProtocolRouter now follows the same ResolvedRefs-only pattern as KafkaProtocolFilter (no Accepted, since a router is not uniquely associated with a KafkaProxy) - Move RouterDAGCycle warning from KafkaProtocolRouter to VirtualKafkaCluster, using Accepted: False (cycle is a structural validity problem, not a ref resolution failure), consistent with Gateway API conventions - Split VKC unresolvable-target condition to TargetNotFound reason only; RouterDAGCycle now has its own Accepted condition Co-Authored-By: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
k-wall
force-pushed
the
kube-api-routing
branch
from
October 9, 2026 09:22
75aaa96 to
c11b9d5
Compare
…nal routing DAG - Complete example updated to a two-level tenant→region routing DAG with two VKCs sharing the same graph, illustrating both full-graph reuse and sub-graph sharing (both tenant routes reference the same region-router) - New "Router graph reuse" section explains the three reuse modes and the no-override constraint, cross-referencing the updated example Co-Authored-By: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
… override Documents three approaches considered for allowing topology reuse with different leaf KafkaService targets (template CRD, VKC-level substitution map, KPR inheritance) and explains why each was rejected. Co-Authored-By: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
…ssplane evidence - Adds context from Cluster API ClusterClass and Crossplane Compositions showing that every mature Kubernetes solution reaches for field path strings or code - Explains CAPI's clean two-layer separation (template controller stamps out concrete resources; infrastructure controllers reconcile normally) and why collapsing that into one reconciler is an ugly mixture - Notes that a single mixed-concern reconciler goes against the grain of the Java Operator SDK's one-reconciler-one-job model - Ties all three points into the closing rationale for deferring to Kustomize/Helm Co-Authored-By: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]> Signed-off-by: Keith Wall <[email protected]>
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.
Summary
Draft proposal for the Kubernetes CRD changes needed to support the routing API (proposal 070) in the Kroxylicious operator.
Addresses kroxylicious/kroxylicious#4430.
Key decisions
KafkaProtocolRouterCRD (namespace-scoped, noproxyRef, consistent withKafkaProtocolFilter)KafkaProtocolRouter, each with an explicit stableid,filterRefs, and atargetRefdiscriminated union (KafkaService|KafkaProtocolRouter)VirtualKafkaClustergains atargetReffield (same union); existingtargetKafkaServiceRefis deprecated with a condition warningtargetRef/targetKafkaServiceRefenforced viaoneOfin the CRD OpenAPI schemaiduniqueness, non-negativity, and contiguity enforced via CEL validation rulesKroxyliciousSidecarConfigextension is out of scopeTest plan
🤖 Generated with Claude Code