mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-09 14:02:56 +09:00
A managed application's tenant-facing Services are its endpoints, and the only way to publish one externally has been the chart boolean `external`, which publishes one chart-chosen endpoint on one address from no particular pool through five different render paths. EndpointAttachment attaches one address, minted from an IPAddressClass or bound from a reserved IPAddressClaim, to one tenant-facing Service by rendering an additive LoadBalancer Service that mirrors the endpoint's selector and ports. The mechanism therefore needs no per-engine render knowledge and never touches the application's own objects, and a reserved address survives every attachment and moves between applications. The endpoint check requires both the lineage labels and the tenantresource marker: lineage alone also covers operator-internal Services. Identity is by owner reference throughout, so a Service carrying the ownership label without the reference is never adopted, and a same-name recreated application does not inherit the previous incarnation's attachments. The VM datapath modes render the cozy-proxy Service contract unchanged and are gated on a platform declaration rather than CNI detection: a proxy skips a Service delegated to a name it does not claim while the load balancer still attracts the address. Exclusivity is keyed on the backend pod in both modes because cozy-proxy's egress map holds one address per pod, and a whole-IP attachment with several ready backends keeps its address dark instead of picking one. The e2e suite is parked as disabled until the address substrate is packaged; the unit tests carry the hold/move and identity proofs. The kind lives in local.sdn.cozystack.io, the CRD-served half of the sdn family the address substrate and cozyplane share, so stock ResourceQuota counts keep working; the proposal text is being corrected from cozystack.io to match. Assisted-by: LLM Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
23 lines
1.2 KiB
YAML
23 lines
1.2 KiB
YAML
cozystackController:
|
|
image: ghcr.io/cozystack/cozystack/cozystack-controller:v1.6.0@sha256:b01f6fe6e8fe6426b112fbda2b4abac946b4e45cd118137c9001c9e6ee784b3d
|
|
debug: false
|
|
disableTelemetry: false
|
|
# Base URL of a Prometheus-compatible query API to fetch SeaweedFS bucket
|
|
# size metrics from, for deployments where SeaweedFS and the monitoring
|
|
# stack that scrapes it run in a separate cluster. Empty keeps discovery
|
|
# via the namespace.cozystack.io/monitoring label.
|
|
seaweedfsMetricsEndpoint: ""
|
|
# EndpointAttachment rendering.
|
|
endpointAttachments:
|
|
# Declares that a service proxy answering to the cozy-proxy
|
|
# service-proxy-name is deployed, so attachments may render
|
|
# method: WholeIP|PortList Services. The platform sets it wherever it
|
|
# deploys cozy-proxy. Left false, such attachments render no Service
|
|
# and report DatapathContractUnavailable instead of attracting an
|
|
# address nothing would serve.
|
|
cozyProxyContractImplemented: false
|
|
# Allocate node ports on rendered LoadBalancer Services. Off unless the
|
|
# load balancer forwards through node ports (Hetzner RobotLB), matching
|
|
# the cozy-lib convention the charts follow.
|
|
allocateLoadBalancerNodePorts: false
|