Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions pkg/consts/consts.go
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,8 @@ const (
LoadBalancerSKUBasic = "basic"
// LoadBalancerSKUStandard is the load balancer standard SKU
LoadBalancerSKUStandard = "standard"
// LoadBalancerSKUService is the load balancer service SKU
LoadBalancerSKUService = "service"

// ServiceAnnotationLoadBalancerInternal is the annotation used on the service
ServiceAnnotationLoadBalancerInternal = "service.beta.kubernetes.io/azure-load-balancer-internal"
Expand Down Expand Up @@ -383,9 +385,8 @@ const (
LoadBalancerBackendPoolConfigurationTypeNodeIPConfiguration = "nodeIPConfiguration"
// LoadBalancerBackendPoolConfigurationTypeNodeIP is the lb backend pool config type node ip
LoadBalancerBackendPoolConfigurationTypeNodeIP = "nodeIP"
// LoadBalancerBackendPoolConfigurationTypePODIP is the lb backend pool config type pod ip
// TODO (nilo19): support pod IP in the future
LoadBalancerBackendPoolConfigurationTypePODIP = "podIP"
// LoadBalancerBackendPoolConfigurationTypePodIP is the lb backend pool config type pod ip
LoadBalancerBackendPoolConfigurationTypePodIP = "podIP"
)

// error messages
Expand Down
17 changes: 14 additions & 3 deletions pkg/provider/azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,18 @@ func (az *Cloud) InitializeCloudFromConfig(ctx context.Context, config *azurecon
return fmt.Errorf("InitializeCloudFromConfig: cannot initialize from nil config")
}

// Use a single flag to determine if the service gateway is enabled.
// All 3 conditions must be true:
// 1. ServiceGatewayEnabled is true
// 2. lb sku is service
// 3. backendPoolType is PodIP
if az.ServiceGatewayEnabled && az.IsLBBackendPoolTypePodIPAndUseServiceLoadBalancer() {
logger.V(2).Info("Service Gateway is enabled, using PodIP backend pool type with Service Load Balancer")
az.ServiceGatewayEnabled = true
} else {
az.ServiceGatewayEnabled = false
}

if config.RouteTableResourceGroup == "" {
config.RouteTableResourceGroup = config.ResourceGroup
}
Expand Down Expand Up @@ -300,14 +312,13 @@ func (az *Cloud) InitializeCloudFromConfig(ctx context.Context, config *azurecon
}

if config.LoadBalancerBackendPoolConfigurationType == "" ||
// TODO(nilo19): support pod IP mode in the future
strings.EqualFold(config.LoadBalancerBackendPoolConfigurationType, consts.LoadBalancerBackendPoolConfigurationTypePODIP) {
strings.EqualFold(config.LoadBalancerBackendPoolConfigurationType, consts.LoadBalancerBackendPoolConfigurationTypePodIP) {
config.LoadBalancerBackendPoolConfigurationType = consts.LoadBalancerBackendPoolConfigurationTypeNodeIPConfiguration
} else {
supportedLoadBalancerBackendPoolConfigurationTypes := utilsets.NewString(
strings.ToLower(consts.LoadBalancerBackendPoolConfigurationTypeNodeIPConfiguration),
strings.ToLower(consts.LoadBalancerBackendPoolConfigurationTypeNodeIP),
strings.ToLower(consts.LoadBalancerBackendPoolConfigurationTypePODIP))
strings.ToLower(consts.LoadBalancerBackendPoolConfigurationTypePodIP))
if !supportedLoadBalancerBackendPoolConfigurationTypes.Has(strings.ToLower(config.LoadBalancerBackendPoolConfigurationType)) {
return fmt.Errorf("loadBalancerBackendPoolConfigurationType %s is not supported, supported values are %v", config.LoadBalancerBackendPoolConfigurationType, supportedLoadBalancerBackendPoolConfigurationTypes.UnsortedList())
}
Expand Down
15 changes: 15 additions & 0 deletions pkg/provider/config/azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,9 @@ type Config struct {
ClusterServiceSharedLoadBalancerHealthProbePort int32 `json:"clusterServiceSharedLoadBalancerHealthProbePort,omitempty" yaml:"clusterServiceSharedLoadBalancerHealthProbePort,omitempty"`
// ClusterServiceSharedLoadBalancerHealthProbePath defines the target path of the shared health probe. Default to `/healthz`.
ClusterServiceSharedLoadBalancerHealthProbePath string `json:"clusterServiceSharedLoadBalancerHealthProbePath,omitempty" yaml:"clusterServiceSharedLoadBalancerHealthProbePath,omitempty"`

// ServiceGatewayEnabled indicates whether the service gateway is enabled for the cluster.
ServiceGatewayEnabled bool `json:"serviceGatewayEnabled,omitempty" yaml:"serviceGatewayEnabled,omitempty"`
}

// HasExtendedLocation returns true if extendedlocation prop are specified.
Expand All @@ -180,6 +183,18 @@ func (az *Config) IsLBBackendPoolTypeNodeIP() bool {
return strings.EqualFold(az.LoadBalancerBackendPoolConfigurationType, consts.LoadBalancerBackendPoolConfigurationTypeNodeIP)
}

func (az *Config) IsLBBackendPoolTypePodIP() bool {
return strings.EqualFold(az.LoadBalancerBackendPoolConfigurationType, consts.LoadBalancerBackendPoolConfigurationTypePodIP)
}

func (az *Config) UseServiceLoadBalancer() bool {
return strings.EqualFold(az.LoadBalancerSKU, consts.LoadBalancerSKUService)
}

func (az *Config) IsLBBackendPoolTypePodIPAndUseServiceLoadBalancer() bool {
return az.IsLBBackendPoolTypePodIP() && az.UseServiceLoadBalancer()
Comment thread
georgeedward2000 marked this conversation as resolved.
}

func (az *Config) GetPutVMSSVMBatchSize() int {
return az.PutVMSSVMBatchSize
}
Expand Down
Loading