Merge pull request #16348 from hakman/azure-well-known-services

azure: Replace lb.ForAPIServer with lb.WellKnownServices
This commit is contained in:
Kubernetes Prow Robot 2024-02-11 06:21:45 -08:00 committed by GitHub
commit f060b9252a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 87 additions and 76 deletions

View File

@ -21,6 +21,7 @@ import (
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/wellknownservices"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/azuretasks"
)
@ -53,6 +54,7 @@ func (b *APILoadBalancerModelBuilder) Build(c *fi.CloudupModelBuilderContext) er
Lifecycle: b.Lifecycle,
ResourceGroup: b.LinkToResourceGroup(),
Tags: map[string]*string{},
WellKnownServices: []wellknownservices.WellKnownService{wellknownservices.KubeAPIServer},
}
switch lbSpec.Type {
@ -81,7 +83,7 @@ func (b *APILoadBalancerModelBuilder) Build(c *fi.CloudupModelBuilderContext) er
c.AddTask(lb)
if b.Cluster.UsesLegacyGossip() || b.Cluster.UsesPrivateDNS() || b.Cluster.UsesNoneDNS() {
lb.ForAPIServer = true
lb.WellKnownServices = append(lb.WellKnownServices, wellknownservices.KopsController)
}
return nil

View File

@ -19,12 +19,14 @@ package azuretasks
import (
"context"
"fmt"
"slices"
"strings"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
"k8s.io/klog/v2"
"k8s.io/kops/pkg/wellknownports"
"k8s.io/kops/pkg/wellknownservices"
"k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/cloudup/azure"
)
@ -41,7 +43,10 @@ type LoadBalancer struct {
External *bool
Tags map[string]*string
ForAPIServer bool
// WellKnownServices indicates which services are supported by this resource.
// This field is internal and is not rendered to the cloud.
WellKnownServices []wellknownservices.WellKnownService
}
var (
@ -57,8 +62,8 @@ func (lb *LoadBalancer) CompareWithID() *string {
// GetWellKnownServices implements fi.HasAddress::GetWellKnownServices.
// It indicates which services we support with this load balancer.
func (lb *LoadBalancer) GetWellKnownServices() bool {
return lb.ForAPIServer
func (lb *LoadBalancer) GetWellKnownServices() []wellknownservices.WellKnownService {
return lb.WellKnownServices
}
func (lb *LoadBalancer) FindAddresses(c *fi.CloudupContext) ([]string, error) {
@ -117,7 +122,7 @@ func (lb *LoadBalancer) Find(c *fi.CloudupContext) (*LoadBalancer, error) {
actual := &LoadBalancer{
Name: lb.Name,
Lifecycle: lb.Lifecycle,
ForAPIServer: lb.ForAPIServer,
WellKnownServices: lb.WellKnownServices,
ResourceGroup: &ResourceGroup{
Name: lb.ResourceGroup.Name,
},
@ -198,8 +203,12 @@ func (*LoadBalancer) RenderAzure(t *azure.AzureAPITarget, a, e, changes *LoadBal
Name: to.Ptr("LoadBalancerBackEnd"),
},
},
Probes: []*network.Probe{
{
},
Tags: e.Tags,
}
if slices.Contains(e.WellKnownServices, wellknownservices.KubeAPIServer) {
lb.Properties.Probes = append(lb.Properties.Probes, &network.Probe{
Name: to.Ptr("Health-TCP-443"),
Properties: &network.ProbePropertiesFormat{
Protocol: to.Ptr(network.ProbeProtocolTCP),
@ -207,19 +216,8 @@ func (*LoadBalancer) RenderAzure(t *azure.AzureAPITarget, a, e, changes *LoadBal
IntervalInSeconds: to.Ptr[int32](15),
NumberOfProbes: to.Ptr[int32](4),
},
},
{
Name: to.Ptr("Health-TCP-3988"),
Properties: &network.ProbePropertiesFormat{
Protocol: to.Ptr(network.ProbeProtocolTCP),
Port: to.Ptr[int32](wellknownports.KopsControllerPort),
IntervalInSeconds: to.Ptr[int32](15),
NumberOfProbes: to.Ptr[int32](4),
},
},
},
LoadBalancingRules: []*network.LoadBalancingRule{
{
})
lb.Properties.LoadBalancingRules = append(lb.Properties.LoadBalancingRules, &network.LoadBalancingRule{
Name: to.Ptr("TCP-443"),
Properties: &network.LoadBalancingRulePropertiesFormat{
Protocol: to.Ptr(network.TransportProtocolTCP),
@ -238,8 +236,20 @@ func (*LoadBalancer) RenderAzure(t *azure.AzureAPITarget, a, e, changes *LoadBal
ID: to.Ptr(fmt.Sprintf("/%s/loadbalancers/%s/probes/%s", idPrefix, *e.Name, *to.Ptr("Health-TCP-443"))),
},
},
})
}
if slices.Contains(e.WellKnownServices, wellknownservices.KopsController) {
lb.Properties.Probes = append(lb.Properties.Probes, &network.Probe{
Name: to.Ptr("Health-TCP-3988"),
Properties: &network.ProbePropertiesFormat{
Protocol: to.Ptr(network.ProbeProtocolTCP),
Port: to.Ptr[int32](wellknownports.KopsControllerPort),
IntervalInSeconds: to.Ptr[int32](15),
NumberOfProbes: to.Ptr[int32](4),
},
{
})
lb.Properties.LoadBalancingRules = append(lb.Properties.LoadBalancingRules, &network.LoadBalancingRule{
Name: to.Ptr("TCP-3988"),
Properties: &network.LoadBalancingRulePropertiesFormat{
Protocol: to.Ptr(network.TransportProtocolTCP),
@ -258,10 +268,7 @@ func (*LoadBalancer) RenderAzure(t *azure.AzureAPITarget, a, e, changes *LoadBal
ID: to.Ptr(fmt.Sprintf("/%s/loadbalancers/%s/probes/%s", idPrefix, *e.Name, *to.Ptr("Health-TCP-3988"))),
},
},
},
},
},
Tags: e.Tags,
})
}
_, err := t.Cloud.LoadBalancer().CreateOrUpdate(

View File

@ -22,6 +22,8 @@ import (
"reflect"
"testing"
"k8s.io/kops/pkg/wellknownservices"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
"k8s.io/kops/upup/pkg/fi"
@ -43,7 +45,7 @@ func newTestLoadBalancer() *LoadBalancer {
},
},
External: to.Ptr(true),
ForAPIServer: true,
WellKnownServices: []wellknownservices.WellKnownService{wellknownservices.KubeAPIServer},
Tags: map[string]*string{
testTagKey: to.Ptr(testTagValue),
},