Skip to content

docs(external-database-exposure): orchestrate exposure on the objects that exist - #68

Closed
Aleksei Sviridkin (lexfrei) wants to merge 2 commits into
fix/tls-pki-canonical-name-and-ownerreffrom
docs/exposure-orchestration-after-serviceexposure
Closed

docs(external-database-exposure): orchestrate exposure on the objects that exist#68
Aleksei Sviridkin (lexfrei) wants to merge 2 commits into
fix/tls-pki-canonical-name-and-ownerreffrom
docs/exposure-orchestration-after-serviceexposure

Conversation

@lexfrei

@lexfrei Aleksei Sviridkin (lexfrei) commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Stacked on #36, which edits the same file. Base is fix/tls-pki-canonical-name-and-ownerref; retarget to main after #36 merges.

Section 5 gave the trigger and the per-release route to the layer that reconciled expose entries into ServiceExposure objects. That API group is gone: cozystack/cozystack#3218 removed it for native Service type: LoadBalancer with publishing.loadBalancerClass. It rode the v1.6.0 release candidates and was removed before v1.6.0 itself. The section pointed at something the platform does not have.

Rewritten against what exists. The TenantGateway controller renders one tls-<name> passthrough listener per tlsPassthroughListeners entry (cozystack/cozystack#3342), nothing routes until a TLSRoute attaches by sectionName and names a backend, and the release's own chart renders that route the way packages/apps/harbor renders its HTTPRoute. LoadBalancer Services stay the path for the engines that cannot be SNI-routed. Who declares the per-engine entry, the app chart or the tenant chart, stays an open question with the cost written on each side.

Before review

  • If this revises a merged design proposal: it adds a decision record under that proposal's decisions/ directory, or says below why none is needed.

decisions/0001-external-exposure-is-the-native-loadbalancer-service.md: what the removal settled, the three shapes it turned down and where each was argued.

DCO

  • Commits are signed off (git commit --signoff).

…ervice

The proposal's orchestration story pointed at a layer that reconciled
expose entries into ServiceExposure objects. That API group was removed
in favour of native Service type: LoadBalancer with loadBalancerClass,
on the ground that managed-application charts own their Service, so the
document named an integration point the platform does not have.

Write the decision down where its alternatives can be weighed once: what
the removal settled, the three shapes it turned down and where each was
argued, and what follows for a design that wanted an object in between.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <f@lex.la>
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

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.

… that exist

Section 5 handed the trigger and the per-release route to a layer that
reconciled expose entries into ServiceExposure objects. Reground it on
what the tenant Gateway offers: one tls-<name> passthrough listener per
tlsPassthroughListeners entry, nothing routed until a TLSRoute attaches
by sectionName and names a backend, and the release's own chart
rendering that route from values it already reads. Native LoadBalancer
Services remain the path for the engines that cannot be SNI-routed.

Claims the same reading falsifies go with it: the listeners declare no
route kinds rather than restricting them to TLSRoute, declaring an entry
withdraws termination from every name its SNI covers, route attachment
is confined to the Gateway's own namespace, the listener cap fails the
whole render rather than one listener, and the shared listener does not
disappear with an engine's last release. The flat-hostname phase gains
the second gate that rule puts on it, in each place that describes the
phase. Who declares the per-engine entry, the app chart or the tenant
chart, is stated as an open question with the cost on each side rather
than answered.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <f@lex.la>
@lexfrei
Aleksei Sviridkin (lexfrei) force-pushed the docs/exposure-orchestration-after-serviceexposure branch from 9dc4c26 to a7c0c02 Compare September 3, 2026 19:22
@lexfrei

Copy link
Copy Markdown
Contributor Author

Folded into #36 as its last two commits, same content, so the exposure proposal and the TLS proposal move together in one review. Closing this one.

@lexfrei
Aleksei Sviridkin (lexfrei) deleted the docs/exposure-orchestration-after-serviceexposure branch September 3, 2026 21:44
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.

1 participant