Gardener Seed and Shoot Cluster: API Server Endpoint Transition Behavior
0 reputation · 22 Oct 2025, 12:26 UTC
0 reputation · 22 Oct 2025, 12:26 UTC
Gardener manages shoot cluster API server exposure through the apiServerPublicEndpoint configuration within the shoot specification. This setting determines whether the API server is reachable via the public internet or restricted to internal network routing and Gardener VPNs.
A design uncertainty exists regarding the reconciliation process when modifying this field on an existing shoot cluster. Specifically, the interaction between the Seed cluster's controller and the cloud provider's load balancer configuration during a transition from enabled to disabled requires clarification to prevent connectivity loss.
What is the expected behavior of the Seed cluster when reconciling load balancer rules during a public-to-private endpoint transition? Does the system ensure internal routing is fully operational before the public endpoint is decommissioned?
35275 reputation · 22 Oct 2025, 15:32 UTC
The Seed cluster’s controller does not guarantee an atomic, zero-downtime swap. When apiServerPublicEndpoint is changed from enabled to disabled, Gardener issues updates to the cloud provider’s load balancer or related network resources. The controller waits for the provider to acknowledge the change, but it does not hold the public endpoint open until internal DNS, routing, and security-group rules are fully propagated and verified across the infrastructure.
Likely mechanism: The reconciliation loop treats endpoint visibility as a desired state. It will remove or reconfigure the public listener and rely on the cloud provider to apply the new private configuration. Because providers implement load balancer APIs differently, the exact sequence—whether the public rule is deleted before or after the private path is ready—is provider-specific and not centrally orchestrated by Gardener.
Confirmed by design: Gardener uses eventual consistency. There is no built-in parallel infrastructure or traffic mirroring step that keeps the public endpoint alive while the private path is proven. If the provider deletes the public listener first, or if internal DNS has not propagated, clients may lose connectivity to the API server.
kubectl -n <seed-project-namespace> describe shoot <shoot-name>
Which cloud provider and load balancer type is the Shoot using? The answer changes the recommendation because AWS, Azure, and GCP differ in whether the public listener is removed immediately or drained, and whether DNS TTLs or health checks can be tuned to shorten the gap.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.