mirror of https://github.com/kubernetes/kops.git
Merge pull request #16348 from hakman/azure-well-known-services
azure: Replace lb.ForAPIServer with lb.WellKnownServices
This commit is contained in:
commit
f060b9252a
|
@ -21,6 +21,7 @@ import (
|
||||||
|
|
||||||
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
||||||
"k8s.io/kops/pkg/apis/kops"
|
"k8s.io/kops/pkg/apis/kops"
|
||||||
|
"k8s.io/kops/pkg/wellknownservices"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/upup/pkg/fi/cloudup/azuretasks"
|
"k8s.io/kops/upup/pkg/fi/cloudup/azuretasks"
|
||||||
)
|
)
|
||||||
|
@ -53,6 +54,7 @@ func (b *APILoadBalancerModelBuilder) Build(c *fi.CloudupModelBuilderContext) er
|
||||||
Lifecycle: b.Lifecycle,
|
Lifecycle: b.Lifecycle,
|
||||||
ResourceGroup: b.LinkToResourceGroup(),
|
ResourceGroup: b.LinkToResourceGroup(),
|
||||||
Tags: map[string]*string{},
|
Tags: map[string]*string{},
|
||||||
|
WellKnownServices: []wellknownservices.WellKnownService{wellknownservices.KubeAPIServer},
|
||||||
}
|
}
|
||||||
|
|
||||||
switch lbSpec.Type {
|
switch lbSpec.Type {
|
||||||
|
@ -81,7 +83,7 @@ func (b *APILoadBalancerModelBuilder) Build(c *fi.CloudupModelBuilderContext) er
|
||||||
c.AddTask(lb)
|
c.AddTask(lb)
|
||||||
|
|
||||||
if b.Cluster.UsesLegacyGossip() || b.Cluster.UsesPrivateDNS() || b.Cluster.UsesNoneDNS() {
|
if b.Cluster.UsesLegacyGossip() || b.Cluster.UsesPrivateDNS() || b.Cluster.UsesNoneDNS() {
|
||||||
lb.ForAPIServer = true
|
lb.WellKnownServices = append(lb.WellKnownServices, wellknownservices.KopsController)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -19,12 +19,14 @@ package azuretasks
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"slices"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
||||||
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
"k8s.io/kops/pkg/wellknownports"
|
"k8s.io/kops/pkg/wellknownports"
|
||||||
|
"k8s.io/kops/pkg/wellknownservices"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
"k8s.io/kops/upup/pkg/fi/cloudup/azure"
|
"k8s.io/kops/upup/pkg/fi/cloudup/azure"
|
||||||
)
|
)
|
||||||
|
@ -41,7 +43,10 @@ type LoadBalancer struct {
|
||||||
External *bool
|
External *bool
|
||||||
|
|
||||||
Tags map[string]*string
|
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 (
|
var (
|
||||||
|
@ -57,8 +62,8 @@ func (lb *LoadBalancer) CompareWithID() *string {
|
||||||
|
|
||||||
// GetWellKnownServices implements fi.HasAddress::GetWellKnownServices.
|
// GetWellKnownServices implements fi.HasAddress::GetWellKnownServices.
|
||||||
// It indicates which services we support with this load balancer.
|
// It indicates which services we support with this load balancer.
|
||||||
func (lb *LoadBalancer) GetWellKnownServices() bool {
|
func (lb *LoadBalancer) GetWellKnownServices() []wellknownservices.WellKnownService {
|
||||||
return lb.ForAPIServer
|
return lb.WellKnownServices
|
||||||
}
|
}
|
||||||
|
|
||||||
func (lb *LoadBalancer) FindAddresses(c *fi.CloudupContext) ([]string, error) {
|
func (lb *LoadBalancer) FindAddresses(c *fi.CloudupContext) ([]string, error) {
|
||||||
|
@ -117,7 +122,7 @@ func (lb *LoadBalancer) Find(c *fi.CloudupContext) (*LoadBalancer, error) {
|
||||||
actual := &LoadBalancer{
|
actual := &LoadBalancer{
|
||||||
Name: lb.Name,
|
Name: lb.Name,
|
||||||
Lifecycle: lb.Lifecycle,
|
Lifecycle: lb.Lifecycle,
|
||||||
ForAPIServer: lb.ForAPIServer,
|
WellKnownServices: lb.WellKnownServices,
|
||||||
ResourceGroup: &ResourceGroup{
|
ResourceGroup: &ResourceGroup{
|
||||||
Name: lb.ResourceGroup.Name,
|
Name: lb.ResourceGroup.Name,
|
||||||
},
|
},
|
||||||
|
@ -198,8 +203,12 @@ func (*LoadBalancer) RenderAzure(t *azure.AzureAPITarget, a, e, changes *LoadBal
|
||||||
Name: to.Ptr("LoadBalancerBackEnd"),
|
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"),
|
Name: to.Ptr("Health-TCP-443"),
|
||||||
Properties: &network.ProbePropertiesFormat{
|
Properties: &network.ProbePropertiesFormat{
|
||||||
Protocol: to.Ptr(network.ProbeProtocolTCP),
|
Protocol: to.Ptr(network.ProbeProtocolTCP),
|
||||||
|
@ -207,19 +216,8 @@ func (*LoadBalancer) RenderAzure(t *azure.AzureAPITarget, a, e, changes *LoadBal
|
||||||
IntervalInSeconds: to.Ptr[int32](15),
|
IntervalInSeconds: to.Ptr[int32](15),
|
||||||
NumberOfProbes: to.Ptr[int32](4),
|
NumberOfProbes: to.Ptr[int32](4),
|
||||||
},
|
},
|
||||||
},
|
})
|
||||||
{
|
lb.Properties.LoadBalancingRules = append(lb.Properties.LoadBalancingRules, &network.LoadBalancingRule{
|
||||||
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{
|
|
||||||
{
|
|
||||||
Name: to.Ptr("TCP-443"),
|
Name: to.Ptr("TCP-443"),
|
||||||
Properties: &network.LoadBalancingRulePropertiesFormat{
|
Properties: &network.LoadBalancingRulePropertiesFormat{
|
||||||
Protocol: to.Ptr(network.TransportProtocolTCP),
|
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"))),
|
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"),
|
Name: to.Ptr("TCP-3988"),
|
||||||
Properties: &network.LoadBalancingRulePropertiesFormat{
|
Properties: &network.LoadBalancingRulePropertiesFormat{
|
||||||
Protocol: to.Ptr(network.TransportProtocolTCP),
|
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"))),
|
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(
|
_, err := t.Cloud.LoadBalancer().CreateOrUpdate(
|
||||||
|
|
|
@ -22,6 +22,8 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"k8s.io/kops/pkg/wellknownservices"
|
||||||
|
|
||||||
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
|
||||||
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
||||||
"k8s.io/kops/upup/pkg/fi"
|
"k8s.io/kops/upup/pkg/fi"
|
||||||
|
@ -43,7 +45,7 @@ func newTestLoadBalancer() *LoadBalancer {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
External: to.Ptr(true),
|
External: to.Ptr(true),
|
||||||
ForAPIServer: true,
|
WellKnownServices: []wellknownservices.WellKnownService{wellknownservices.KubeAPIServer},
|
||||||
Tags: map[string]*string{
|
Tags: map[string]*string{
|
||||||
testTagKey: to.Ptr(testTagValue),
|
testTagKey: to.Ptr(testTagValue),
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue