Flat reachability
Internal workloads can communicate across the cluster network.
Investigation 023 - Cluster Networking Principles
Inside the platform, a service has a stable address and a derived name. A browser knows only shop.example.com. What translates that public intent without exposing the platform beneath it?
Prologue
A customer enters https://shop.example.com/products. Public DNS supplies an address. The connection reaches the platform's edge.
The browser asks for the public hostname and the products path.
Internal workloads can reach stable services by cluster-aware names.
The browser knows none of those internal names or virtual addresses.
Something must decide which internal service should receive the request.
First Principles
A public endpoint describes how the outside world approaches a platform. An internal service describes how the platform has organized application behavior. Their lifetimes and owners differ.
Internal workloads can communicate across the cluster network.
Callers inside the platform do not track changing workload addresses.
Internal names converge from authoritative service state.
Those contracts solve communication for a caller already inside. They do not tell an external request how to enter.
Naive Architecture
Every node already has an address the outside world can contact. Let a node forward a public connection to the service that owns it.
One service becomes reachable without another routing component.
Each team exposes the application it already operates.
An internal tool or a few independent services may need nothing more.
The Architecture That Almost Worked
Three independent applications receive three endpoints. New services repeat the pattern. Responsibility stays local, failures stay separate, and no shared component becomes critical.
The design remains plausible until independent applications become one public product.
Breaking Our Design
Each experiment begins from its own state, earns one architectural step, and stops before the next episode's answer.
Pressure. One externally reachable node forwards traffic to a service that remains healthy inside the platform.
Prediction. Replacing infrastructure should not change how an external client reaches the still-available service.
Expose node-a, then replace it while the service remains available.
Internal service identity survives; the old public endpoint does not.
Infrastructure churn became an external concern.
The platform needs one architectural boundary.
Can one address use ports to select services?
The boundary is not implemented yet.
Prediction: replacing infrastructure should not change a public route to an available service.
Pressure. One public address must distinguish a growing set of internal services.
Prediction. Assigning one port per service should remain simple as the service count grows.
Grow from 5 to 20 to 100 assignments, then duplicate one.
Registry entries and client mappings grow with services.
The namespace collides and clients require synchronization.
Per-service port conventions create a namespace and registry ownership burden and a client-synchronization burden. Both grow with participants, and assignments can collide.
What information distinguishes requests?
No universal failure threshold is asserted.
Prediction: one port per service should remain a simple convention.
Pressure. Requests for /products and /cart share one public address, port, and hostname.
Prediction. The transport envelope should contain enough information to choose the intended service.
Compare envelopes, then inspect request content.
The envelopes match; the paths differ.
Transport reaches the platform but cannot choose the application.
Destination choice needs application-level information.
Who owns that shared decision?
No API, syntax, or routing policy is selected.
Prediction: address, port, and hostname should reveal the internal destination.
Pressure. Four application teams independently own one public identity and four repeated edge responsibilities.
Prediction. Independent ownership should preserve one coherent platform boundary.
Count assignments, then let one team change its version.
Four responsibilities become sixteen assignments and diverge.
Applications collectively own platform behavior.
One platform-owned boundary owns the four responsibilities once.
Controlled-boundary ownership is earned.
No security mechanism or internal isolation is solved.
Prediction: four teams can independently own one public identity, routing decisions, incoming request records, and boundary protection.
Optional Episode Review
The Turning Point
The boundary mediates between two addressing models. It does not merge them.
The External Access Contract
Translate external requests into internal service communication while keeping internal architecture invisible to external clients.
The boundary presents the platform's public identity. Applications do not own how the platform identifies itself externally.
External requests enter through one architectural boundary, independent of the number of internal services.
The boundary turns application-level request information into internal service destinations.
Workload addresses, service addresses, node topology, and deployment structure remain private.
Platform-wide edge responsibilities are owned once rather than duplicated across applications.
Ownership defines where these responsibilities belong. It does not prove any particular security mechanism, policy, or implementation.
Only Now: Kubernetes
Kubernetes Ingress describes HTTP and HTTPS routes from outside a cluster to Services. An implementation-specific controller must realize that description; creating the resource alone does not create a working boundary.
The Kubernetes project states that the Ingress API is frozen and recommends Gateway instead. Gateway API is its successor and offers a broader, role-oriented family of routing APIs. Neither API is the universal architecture: both are ways to express parts of the controlled-boundary contract.
This investigation does not teach their syntax, select a controller, or claim that either option provisions identity, authentication, authorization, rate limiting, filtering, or internal isolation by itself.
The architecture is controlled boundary entry. Ingress and Gateway API are Kubernetes options for expressing it.
Engineering Reflection
When external expectations differ from internal organization, one dedicated boundary must own the translation between them.
One application or a few intentionally separate endpoints may justify the simpler design.
Shared public identity and application-level intent create responsibilities no individual service should own.
The boundary must be operated, observed, and kept available.
A boundary failure can affect several services at once.
External requests cross another component before reaching a service.
Boundary changes require coordination across platform and application owners.
No. It remains economical when services are few and intentionally independent.
No. It located ownership of boundary protection. Mechanisms and policies remain separate work.
Investigation Exercise
Predict the client knowledge and ownership assignments required by ten direct endpoints.
Record public identity, route, incoming request record, and boundary protection ownership for each service.
Compare the repeated assignments with one boundary that forwards to stable internal services.
Separate business ownership from responsibilities that exist once for the platform.
Bridge to INV-024
External clients use one stable public boundary.
The boundary translates public intent into internal service communication.
Application teams no longer duplicate ownership of the platform's edge.
But the flat network still lets every internal workload reach every other workload.
Reachability establishes capability. It does not establish authorization.
The boundary controls entry. The next mystery asks which communication paths should exist once inside.
This investigation inherits decomposition and continuous control ideas established earlier in the book and grounded in control theory, Borg, and Omega. It applies that lineage to ownership of an external boundary; it does not claim Borg or Omega invented Kubernetes ingress.