Skip to content

Commit 8c8e3f4

Browse files
authored
Merge pull request #3138 from CecileRobertMichon/fix-lb-value
Fix wrong LB idletimeout for node outbound
2 parents 8c66502 + 97d1995 commit 8c8e3f4

File tree

2 files changed

+283
-2
lines changed

2 files changed

+283
-2
lines changed

azure/scope/cluster.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ func (s *ClusterScope) LBSpecs() []azure.ResourceSpecGetter {
242242
FrontendIPConfigs: s.APIServerLB().FrontendIPs,
243243
APIServerPort: s.APIServerPort(),
244244
Type: s.APIServerLB().Type,
245-
SKU: infrav1.SKUStandard,
245+
SKU: s.APIServerLB().SKU,
246246
Role: infrav1.APIServerRole,
247247
BackendPoolName: s.APIServerLB().BackendPool.Name,
248248
IdleTimeoutInMinutes: s.APIServerLB().IdleTimeoutInMinutes,
@@ -284,7 +284,7 @@ func (s *ClusterScope) LBSpecs() []azure.ResourceSpecGetter {
284284
Type: s.ControlPlaneOutboundLB().Type,
285285
SKU: s.ControlPlaneOutboundLB().SKU,
286286
BackendPoolName: s.ControlPlaneOutboundLB().BackendPool.Name,
287-
IdleTimeoutInMinutes: s.NodeOutboundLB().IdleTimeoutInMinutes,
287+
IdleTimeoutInMinutes: s.ControlPlaneOutboundLB().IdleTimeoutInMinutes,
288288
Role: infrav1.ControlPlaneOutboundRole,
289289
AdditionalTags: s.AdditionalTags(),
290290
})

azure/scope/cluster_test.go

Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2674,3 +2674,284 @@ func TestFailureDomains(t *testing.T) {
26742674
})
26752675
}
26762676
}
2677+
2678+
func TestClusterScope_LBSpecs(t *testing.T) {
2679+
tests := []struct {
2680+
name string
2681+
azureCluster *infrav1.AzureCluster
2682+
want []azure.ResourceSpecGetter
2683+
}{
2684+
{
2685+
name: "API Server LB, Control Plane Oubound LB, and Node Outbound LB",
2686+
azureCluster: &infrav1.AzureCluster{
2687+
ObjectMeta: metav1.ObjectMeta{
2688+
Name: "my-cluster",
2689+
},
2690+
Spec: infrav1.AzureClusterSpec{
2691+
AzureClusterClassSpec: infrav1.AzureClusterClassSpec{
2692+
AdditionalTags: infrav1.Tags{
2693+
"foo": "bar",
2694+
},
2695+
SubscriptionID: "123",
2696+
Location: "westus2",
2697+
},
2698+
ResourceGroup: "my-rg",
2699+
NetworkSpec: infrav1.NetworkSpec{
2700+
Vnet: infrav1.VnetSpec{
2701+
Name: "my-vnet",
2702+
ResourceGroup: "my-rg",
2703+
},
2704+
Subnets: []infrav1.SubnetSpec{
2705+
{
2706+
SubnetClassSpec: infrav1.SubnetClassSpec{
2707+
Name: "cp-subnet",
2708+
Role: infrav1.SubnetControlPlane,
2709+
},
2710+
},
2711+
{
2712+
SubnetClassSpec: infrav1.SubnetClassSpec{
2713+
Name: "node-subnet",
2714+
Role: infrav1.SubnetNode,
2715+
},
2716+
},
2717+
},
2718+
APIServerLB: infrav1.LoadBalancerSpec{
2719+
Name: "api-server-lb",
2720+
BackendPool: infrav1.BackendPool{
2721+
Name: "api-server-lb-backend-pool",
2722+
},
2723+
LoadBalancerClassSpec: infrav1.LoadBalancerClassSpec{
2724+
Type: infrav1.Public,
2725+
IdleTimeoutInMinutes: pointer.Int32(30),
2726+
SKU: infrav1.SKUStandard,
2727+
},
2728+
FrontendIPs: []infrav1.FrontendIP{
2729+
{
2730+
Name: "api-server-lb-frontend-ip",
2731+
PublicIP: &infrav1.PublicIPSpec{
2732+
Name: "api-server-lb-frontend-ip",
2733+
},
2734+
},
2735+
},
2736+
},
2737+
ControlPlaneOutboundLB: &infrav1.LoadBalancerSpec{
2738+
Name: "cp-outbound-lb",
2739+
BackendPool: infrav1.BackendPool{
2740+
Name: "cp-outbound-backend-pool",
2741+
},
2742+
LoadBalancerClassSpec: infrav1.LoadBalancerClassSpec{
2743+
Type: infrav1.Public,
2744+
IdleTimeoutInMinutes: pointer.Int32(15),
2745+
SKU: infrav1.SKUStandard,
2746+
},
2747+
FrontendIPs: []infrav1.FrontendIP{
2748+
{
2749+
Name: "cp-outbound-lb-frontend-ip",
2750+
PublicIP: &infrav1.PublicIPSpec{
2751+
Name: "cp-outbound-lb-frontend-ip",
2752+
},
2753+
},
2754+
},
2755+
},
2756+
NodeOutboundLB: &infrav1.LoadBalancerSpec{
2757+
Name: "node-outbound-lb",
2758+
BackendPool: infrav1.BackendPool{
2759+
Name: "node-outbound-backend-pool",
2760+
},
2761+
LoadBalancerClassSpec: infrav1.LoadBalancerClassSpec{
2762+
Type: infrav1.Public,
2763+
IdleTimeoutInMinutes: pointer.Int32(50),
2764+
SKU: infrav1.SKUStandard,
2765+
},
2766+
FrontendIPs: []infrav1.FrontendIP{
2767+
{
2768+
Name: "node-outbound-lb-frontend-ip",
2769+
PublicIP: &infrav1.PublicIPSpec{
2770+
Name: "node-outbound-lb-frontend-ip",
2771+
},
2772+
},
2773+
},
2774+
},
2775+
},
2776+
},
2777+
},
2778+
want: []azure.ResourceSpecGetter{
2779+
&loadbalancers.LBSpec{
2780+
Name: "api-server-lb",
2781+
ResourceGroup: "my-rg",
2782+
SubscriptionID: "123",
2783+
ClusterName: "my-cluster",
2784+
Location: "westus2",
2785+
VNetName: "my-vnet",
2786+
VNetResourceGroup: "my-rg",
2787+
SubnetName: "cp-subnet",
2788+
FrontendIPConfigs: []infrav1.FrontendIP{
2789+
{
2790+
Name: "api-server-lb-frontend-ip",
2791+
PublicIP: &infrav1.PublicIPSpec{
2792+
Name: "api-server-lb-frontend-ip",
2793+
},
2794+
},
2795+
},
2796+
APIServerPort: 6443,
2797+
Type: infrav1.Public,
2798+
SKU: infrav1.SKUStandard,
2799+
Role: infrav1.APIServerRole,
2800+
BackendPoolName: "api-server-lb-backend-pool",
2801+
IdleTimeoutInMinutes: pointer.Int32(30),
2802+
AdditionalTags: infrav1.Tags{
2803+
"foo": "bar",
2804+
},
2805+
},
2806+
&loadbalancers.LBSpec{
2807+
Name: "node-outbound-lb",
2808+
ResourceGroup: "my-rg",
2809+
SubscriptionID: "123",
2810+
ClusterName: "my-cluster",
2811+
Location: "westus2",
2812+
VNetName: "my-vnet",
2813+
VNetResourceGroup: "my-rg",
2814+
FrontendIPConfigs: []infrav1.FrontendIP{
2815+
{
2816+
Name: "node-outbound-lb-frontend-ip",
2817+
PublicIP: &infrav1.PublicIPSpec{
2818+
Name: "node-outbound-lb-frontend-ip",
2819+
},
2820+
},
2821+
},
2822+
Type: infrav1.Public,
2823+
SKU: infrav1.SKUStandard,
2824+
Role: infrav1.NodeOutboundRole,
2825+
BackendPoolName: "node-outbound-backend-pool",
2826+
IdleTimeoutInMinutes: pointer.Int32(50),
2827+
AdditionalTags: infrav1.Tags{
2828+
"foo": "bar",
2829+
},
2830+
},
2831+
&loadbalancers.LBSpec{
2832+
Name: "cp-outbound-lb",
2833+
ResourceGroup: "my-rg",
2834+
SubscriptionID: "123",
2835+
ClusterName: "my-cluster",
2836+
Location: "westus2",
2837+
VNetName: "my-vnet",
2838+
VNetResourceGroup: "my-rg",
2839+
FrontendIPConfigs: []infrav1.FrontendIP{
2840+
{
2841+
Name: "cp-outbound-lb-frontend-ip",
2842+
PublicIP: &infrav1.PublicIPSpec{
2843+
Name: "cp-outbound-lb-frontend-ip",
2844+
},
2845+
},
2846+
},
2847+
Type: infrav1.Public,
2848+
SKU: infrav1.SKUStandard,
2849+
BackendPoolName: "cp-outbound-backend-pool",
2850+
IdleTimeoutInMinutes: pointer.Int32(15),
2851+
Role: infrav1.ControlPlaneOutboundRole,
2852+
AdditionalTags: infrav1.Tags{
2853+
"foo": "bar",
2854+
},
2855+
},
2856+
},
2857+
},
2858+
{
2859+
name: "Private API Server LB",
2860+
azureCluster: &infrav1.AzureCluster{
2861+
ObjectMeta: metav1.ObjectMeta{
2862+
Name: "my-cluster",
2863+
},
2864+
Spec: infrav1.AzureClusterSpec{
2865+
AzureClusterClassSpec: infrav1.AzureClusterClassSpec{
2866+
SubscriptionID: "123",
2867+
Location: "westus2",
2868+
},
2869+
ResourceGroup: "my-rg",
2870+
NetworkSpec: infrav1.NetworkSpec{
2871+
Vnet: infrav1.VnetSpec{
2872+
Name: "my-vnet",
2873+
ResourceGroup: "my-rg",
2874+
},
2875+
Subnets: []infrav1.SubnetSpec{
2876+
{
2877+
SubnetClassSpec: infrav1.SubnetClassSpec{
2878+
Name: "cp-subnet",
2879+
Role: infrav1.SubnetControlPlane,
2880+
},
2881+
},
2882+
{
2883+
SubnetClassSpec: infrav1.SubnetClassSpec{
2884+
Name: "node-subnet",
2885+
Role: infrav1.SubnetNode,
2886+
},
2887+
},
2888+
},
2889+
APIServerLB: infrav1.LoadBalancerSpec{
2890+
Name: "api-server-lb",
2891+
BackendPool: infrav1.BackendPool{
2892+
Name: "api-server-lb-backend-pool",
2893+
},
2894+
LoadBalancerClassSpec: infrav1.LoadBalancerClassSpec{
2895+
Type: infrav1.Internal,
2896+
IdleTimeoutInMinutes: pointer.Int32(30),
2897+
SKU: infrav1.SKUStandard,
2898+
},
2899+
},
2900+
},
2901+
},
2902+
},
2903+
want: []azure.ResourceSpecGetter{
2904+
&loadbalancers.LBSpec{
2905+
Name: "api-server-lb",
2906+
ResourceGroup: "my-rg",
2907+
SubscriptionID: "123",
2908+
ClusterName: "my-cluster",
2909+
Location: "westus2",
2910+
VNetName: "my-vnet",
2911+
VNetResourceGroup: "my-rg",
2912+
SubnetName: "cp-subnet",
2913+
APIServerPort: 6443,
2914+
Type: infrav1.Internal,
2915+
SKU: infrav1.SKUStandard,
2916+
Role: infrav1.APIServerRole,
2917+
BackendPoolName: "api-server-lb-backend-pool",
2918+
IdleTimeoutInMinutes: pointer.Int32(30),
2919+
AdditionalTags: infrav1.Tags{},
2920+
},
2921+
},
2922+
},
2923+
}
2924+
for _, tc := range tests {
2925+
tc := tc
2926+
t.Run(tc.name, func(t *testing.T) {
2927+
t.Parallel()
2928+
g := NewWithT(t)
2929+
scheme := runtime.NewScheme()
2930+
_ = infrav1.AddToScheme(scheme)
2931+
_ = clusterv1.AddToScheme(scheme)
2932+
2933+
cluster := &clusterv1.Cluster{
2934+
ObjectMeta: metav1.ObjectMeta{
2935+
Name: tc.azureCluster.Name,
2936+
Namespace: "default",
2937+
},
2938+
}
2939+
2940+
initObjects := []runtime.Object{cluster, tc.azureCluster}
2941+
fakeClient := fake.NewClientBuilder().WithScheme(scheme).WithRuntimeObjects(initObjects...).Build()
2942+
2943+
clusterScope, err := NewClusterScope(context.TODO(), ClusterScopeParams{
2944+
AzureClients: AzureClients{
2945+
Authorizer: autorest.NullAuthorizer{},
2946+
},
2947+
Cluster: cluster,
2948+
AzureCluster: tc.azureCluster,
2949+
Client: fakeClient,
2950+
})
2951+
g.Expect(err).NotTo(HaveOccurred())
2952+
if got := clusterScope.LBSpecs(); !reflect.DeepEqual(got, tc.want) {
2953+
t.Errorf("LBSpecs() diff between expected result and actual result (%v): %s", got, cmp.Diff(tc.want, got))
2954+
}
2955+
})
2956+
}
2957+
}

0 commit comments

Comments
 (0)