Support for multiple ControlPlaneEndpoints
#5,295 opened on Sep 22, 2021
Repository metrics
- Stars
- (4,267 stars)
- PR merge metrics
- (PR metrics pending)
Description
User Story
As a cluster user I want to be able to access my Azure private cluster and/or CAPD cluster on MacOS after the cluster is provisioned without having to hack my /etc/hosts, set up DNS routing or hack my kubeconfig.
Detailed Description
[A clear and concise description of what you want to happen.]
The origins of this discussion originally lay within the machine load balancer proposal with @JoelSpeed . Originally, the idea of having multiple controlPlaneEndpoints was being considered for AWS as having separate internal and external load balancers can lead to cost reductions in AWS, and lower latency between nodes and the control plane. However, since the original investigation, two other use cases have emerged:
-
For CAPD on MacOS, the control plane endpoint needs to be modified for the end user's kubeconfig in order to connect into the Docker machine. See also #5263
-
To provide a stable endpoint, CAPZ creates a capz.io DNS zone and links it into the Azure subscription. For private clusters, this means having to make the DNS name resolvable at the client level. This might be done by hacking /etc/hosts or setting up some conditional DNS forwarding to Azure, though this is non-trivial. It would be preferable to provide an external control plane endpoint that points directly at the IP of the cluster load balancer, and have that in the downloadable kubeconfig, and have worker nodes continue to point at the internal stable endpoint - whether that's a DNS entry or an LB IP.
Anything else you would like to add:
@JoelSpeed captured a lot of the original requirements in https://hackmd.io/6nomCHkLTjaRU_d3_pnwpg
[Miscellaneous information that will assist in solving the issue.]
/kind feature