@@ -124,7 +124,13 @@ func (c *AzureCluster) setSubnetDefaults() {
124124 if subnet .RouteTable .Name == "" {
125125 subnet .RouteTable .Name = generateNodeRouteTableName (c .ObjectMeta .Name )
126126 }
127- if subnet .IsNatGatewayEnabled () {
127+
128+ if ! subnet .IsIPv6Enabled () {
129+ // NAT gateway supports the use of IPv4 public IP addresses for outbound connectivity.
130+ // So default use the NAT gateway for outbound traffic in IPv4 cluster instead of loadbalancer.
131+ if subnet .NatGateway .Name == "" {
132+ subnet .NatGateway .Name = withIndex (generateNatGatewayName (c .ObjectMeta .Name ), nodeSubnetCounter )
133+ }
128134 if subnet .NatGateway .NatGatewayIP .Name == "" {
129135 subnet .NatGateway .NatGatewayIP .Name = generateNatGatewayIPName (c .ObjectMeta .Name , subnet .Name )
130136 }
@@ -146,6 +152,11 @@ func (c *AzureCluster) setSubnetDefaults() {
146152 RouteTable : RouteTable {
147153 Name : generateNodeRouteTableName (c .ObjectMeta .Name ),
148154 },
155+ NatGateway : NatGateway {
156+ NatGatewayClassSpec : NatGatewayClassSpec {
157+ Name : generateNatGatewayName (c .ObjectMeta .Name ),
158+ },
159+ },
149160 }
150161 c .Spec .NetworkSpec .Subnets = append (c .Spec .NetworkSpec .Subnets , nodeSubnet )
151162 }
@@ -208,7 +219,7 @@ func (c *AzureCluster) SetNodeOutboundLBDefaults() {
208219
209220 var needsOutboundLB bool
210221 for _ , subnet := range c .Spec .NetworkSpec .Subnets {
211- if subnet .Role == SubnetNode && ! subnet .IsNatGatewayEnabled () {
222+ if subnet .Role == SubnetNode && subnet .IsIPv6Enabled () {
212223 needsOutboundLB = true
213224 break
214225 }
@@ -436,6 +447,11 @@ func generateControlPlaneOutboundIPName(clusterName string) string {
436447 return fmt .Sprintf ("pip-%s-controlplane-outbound" , clusterName )
437448}
438449
450+ // generateNatGatewayName generates a NAT gateway name.
451+ func generateNatGatewayName (clusterName string ) string {
452+ return fmt .Sprintf ("%s-%s" , clusterName , "node-natgw" )
453+ }
454+
439455// generateNatGatewayIPName generates a NAT gateway IP name.
440456func generateNatGatewayIPName (clusterName , subnetName string ) string {
441457 return fmt .Sprintf ("pip-%s-%s-natgw" , clusterName , subnetName )
0 commit comments