Skip to content

Commit f49c919

Browse files
MaysaMacedopierreprinetti
authored andcommitted
OpenStack: Skip API/Ingress management when using external LB
When using external LB the API and Ingress are managed externally, so we shouldn't create Neutron Ports with the VIPs for API and Ingress nor should we set those addresses in the Machines allowed address pairs.
1 parent 9f18453 commit f49c919

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

pkg/asset/machines/openstack/openstackmachines.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
1111
capi "sigs.k8s.io/cluster-api/api/v1beta1"
1212

13+
configv1 "github.com/openshift/api/config/v1"
1314
machinev1 "github.com/openshift/api/machine/v1"
1415
"github.com/openshift/installer/pkg/asset"
1516
"github.com/openshift/installer/pkg/asset/manifests/capiutils"
@@ -112,13 +113,7 @@ func GenerateMachines(clusterID string, config *types.InstallConfig, pool *types
112113
func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *openstack.MachinePool, osImage string, role string, trunkSupport bool, failureDomain machinev1.OpenStackFailureDomain) (*capo.OpenStackMachineSpec, error) {
113114
port := capo.PortOpts{}
114115

115-
addressPairs := []capo.AddressPair{}
116-
for _, apiVIP := range platform.APIVIPs {
117-
addressPairs = append(addressPairs, capo.AddressPair{IPAddress: apiVIP})
118-
}
119-
for _, ingressVIP := range platform.IngressVIPs {
120-
addressPairs = append(addressPairs, capo.AddressPair{IPAddress: ingressVIP})
121-
}
116+
addressPairs := populateAllowedAddressPairs(platform)
122117

123118
if platform.ControlPlanePort != nil {
124119
if networkID := platform.ControlPlanePort.Network.ID; networkID != "" {
@@ -223,3 +218,17 @@ func generateMachineSpec(clusterID string, platform *openstack.Platform, mpool *
223218

224219
return &spec, nil
225220
}
221+
222+
func populateAllowedAddressPairs(platform *openstack.Platform) []capo.AddressPair {
223+
if lb := platform.LoadBalancer; lb != nil && lb.Type == configv1.LoadBalancerTypeUserManaged {
224+
return nil
225+
}
226+
addressPairs := []capo.AddressPair{}
227+
for _, apiVIP := range platform.APIVIPs {
228+
addressPairs = append(addressPairs, capo.AddressPair{IPAddress: apiVIP})
229+
}
230+
for _, ingressVIP := range platform.IngressVIPs {
231+
addressPairs = append(addressPairs, capo.AddressPair{IPAddress: ingressVIP})
232+
}
233+
return addressPairs
234+
}

pkg/infrastructure/openstack/infraready/floatingips.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,22 @@ import (
99
"github.com/gophercloud/gophercloud/openstack/networking/v2/ports"
1010
capo "sigs.k8s.io/cluster-api-provider-openstack/api/v1beta1"
1111

12+
configv1 "github.com/openshift/api/config/v1"
1213
"github.com/openshift/installer/pkg/asset/installconfig"
1314
openstackdefaults "github.com/openshift/installer/pkg/types/openstack/defaults"
1415
)
1516

1617
// FloatingIPs creates or gets the API and Ingress ports and attaches the Floating IPs to them.
1718
func FloatingIPs(cluster *capo.OpenStackCluster, installConfig *installconfig.InstallConfig, infraID string) error {
19+
platformOpenstack := installConfig.Config.OpenStack
20+
if lb := platformOpenstack.LoadBalancer; lb != nil && lb.Type == configv1.LoadBalancerTypeUserManaged {
21+
return nil
22+
}
1823
networkClient, err := openstackdefaults.NewServiceClient("network", openstackdefaults.DefaultClientOpts(installConfig.Config.Platform.OpenStack.Cloud))
1924
if err != nil {
2025
return err
2126
}
2227
var apiPort, ingressPort *ports.Port
23-
platformOpenstack := installConfig.Config.OpenStack
2428
if platformOpenstack.ControlPlanePort != nil && len(platformOpenstack.ControlPlanePort.FixedIPs) == 2 {
2529
// To avoid unnecessary calls to Neutron, let's fetch the Ports in case there is a need to attach FIPs
2630
if platformOpenstack.APIFloatingIP != "" {

0 commit comments

Comments
 (0)