diff --git a/docs/images/additional-listener-workflow.png b/docs/images/additional-listener-workflow.png index 1bce5e65a..c2879af9c 100644 Binary files a/docs/images/additional-listener-workflow.png and b/docs/images/additional-listener-workflow.png differ diff --git a/docs/proposal/additional-listener.md b/docs/proposal/additional-listener.md index 220e5137f..daa563e2b 100644 --- a/docs/proposal/additional-listener.md +++ b/docs/proposal/additional-listener.md @@ -1,11 +1,9 @@ -# Adding additional listeners to nodes based on the selector +# Support configuring additional listeners to specific machines [Github Issue](https://github.com/kubernetes-sigs/cluster-api-provider-ibmcloud/issues/1678) ## Motivation -Currently, when a listener pool is configured for a specific port (e.g., port 22), all machines are added to the pool. -This creates a challenge when debugging OpenShift cluster deployments, as access to the bootstrap node is necessary for -retrieving log files and other diagnostic data. Since all machines are included in the pool, SSH access to the bootstrap -node becomes impossible. +Currently, when configuring LoadBalancer's additional listeners, all the machines are added to the listener pool. +This creates a challenge when you want to ssh into a particular machine. To address this, there should be a mechanism to assign listeners to specific machines using label selector matching. ## Goal @@ -85,16 +83,13 @@ spec: The load balancer pool member configuration is now invoked for all machines inorder to provide the ability to assign the listeners to any machine based on the label selectors. -The load balancer details are retrieved from the IBMPowerVSCluster.Spec.LoadBalancers. If no load balancers are -specified in the Spec, the load balancer details are generated based on the IBMPowerVSCluster name. -Loop through the load balancers, check the status of the IBMPowerVSCluster, and verify the load balancer's -provisioning status. Proceed only if the status is Active and it contains backend pools. -Loop through the load balancer pools, retrieve the associated pool members for each, and then verify the label selector -specified in the listener. +Loop through the load balancer pools, retrieve the associated pool members for each, and fetch the selector from the +listener using the default pool name. Then, verify if the machine label matches the listener's label selector, +and depending on the outcome, the process continues as follows: - If the selector matches, continue with adding the listener to the machine. - If it doesn't match, skip the listener and move on to the next pool member. - - If the selector is empty and the machine is a control plane, continue to add the listener, since all listeners + - If the selector is empty and the machine is a control plane, proceed with adding the listener, as all listeners can be assigned to control plane machines. ### Workflow