in pkg/engine/loadbalancers.go [319:425]
func CreateMasterInternalLoadBalancer(cs *api.ContainerService) LoadBalancerARM {
var dependencies []string
if cs.Properties.MasterProfile.IsCustomVNET() {
dependencies = append(dependencies, "[variables('nsgID')]")
} else {
dependencies = append(dependencies, "[variables('vnetID')]")
}
armResource := ARMResource{
APIVersion: "[variables('apiVersionNetwork')]",
DependsOn: dependencies,
}
subnet := "[variables('vnetSubnetID')]"
if cs.Properties.MasterProfile.IsVirtualMachineScaleSets() {
subnet = "[variables('vnetSubnetIDMaster')]"
}
loadBalancer := network.LoadBalancer{
Location: to.StringPtr("[variables('location')]"),
Name: to.StringPtr("[variables('masterInternalLbName')]"),
LoadBalancerPropertiesFormat: &network.LoadBalancerPropertiesFormat{
BackendAddressPools: &[]network.BackendAddressPool{
{
Name: to.StringPtr("[variables('masterLbBackendPoolName')]"),
},
},
FrontendIPConfigurations: &[]network.FrontendIPConfiguration{
{
Name: to.StringPtr("[variables('masterInternalLbIPConfigName')]"),
FrontendIPConfigurationPropertiesFormat: &network.FrontendIPConfigurationPropertiesFormat{
PrivateIPAddress: to.StringPtr("[variables('kubernetesAPIServerIP')]"),
PrivateIPAllocationMethod: network.Static,
Subnet: &network.Subnet{
ID: to.StringPtr(subnet),
},
},
},
},
LoadBalancingRules: &[]network.LoadBalancingRule{
{
Name: to.StringPtr("InternalLBRuleHTTPS"),
LoadBalancingRulePropertiesFormat: &network.LoadBalancingRulePropertiesFormat{
BackendAddressPool: &network.SubResource{
ID: to.StringPtr("[concat(variables('masterInternalLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]"),
},
BackendPort: to.Int32Ptr(4443),
EnableFloatingIP: to.BoolPtr(false),
FrontendIPConfiguration: &network.SubResource{
ID: to.StringPtr("[variables('masterInternalLbIPConfigID')]"),
},
FrontendPort: to.Int32Ptr(443),
IdleTimeoutInMinutes: to.Int32Ptr(5),
Protocol: network.TransportProtocolTCP,
Probe: &network.SubResource{
ID: to.StringPtr("[concat(variables('masterInternalLbID'),'/probes/tcpHTTPSProbe')]"),
},
},
},
},
Probes: &[]network.Probe{
{
Name: to.StringPtr("tcpHTTPSProbe"),
ProbePropertiesFormat: &network.ProbePropertiesFormat{
IntervalInSeconds: to.Int32Ptr(5),
NumberOfProbes: to.Int32Ptr(2),
Port: to.Int32Ptr(4443),
Protocol: network.ProbeProtocolTCP,
},
},
},
},
Sku: &network.LoadBalancerSku{
Name: network.LoadBalancerSkuName("[variables('loadBalancerSku')]"),
},
Type: to.StringPtr("Microsoft.Network/loadBalancers"),
}
if cs.Properties.OrchestratorProfile.KubernetesConfig.LoadBalancerSku == api.StandardLoadBalancerSku {
udpRule := network.LoadBalancingRule{
Name: to.StringPtr("LBRuleUDP"),
LoadBalancingRulePropertiesFormat: &network.LoadBalancingRulePropertiesFormat{
BackendAddressPool: &network.SubResource{
ID: to.StringPtr("[concat(variables('masterInternalLbID'), '/backendAddressPools/', variables('masterLbBackendPoolName'))]"),
},
BackendPort: to.Int32Ptr(1123),
EnableFloatingIP: to.BoolPtr(false),
FrontendIPConfiguration: &network.SubResource{
ID: to.StringPtr("[variables('masterInternalLbIPConfigID')]"),
},
FrontendPort: to.Int32Ptr(1123),
IdleTimeoutInMinutes: to.Int32Ptr(5),
Protocol: network.TransportProtocolUDP,
Probe: &network.SubResource{
ID: to.StringPtr("[concat(variables('masterInternalLbID'),'/probes/tcpHTTPSProbe')]"),
},
},
}
*loadBalancer.LoadBalancerPropertiesFormat.LoadBalancingRules = append(*loadBalancer.LoadBalancerPropertiesFormat.LoadBalancingRules, udpRule)
}
loadBalancerARM := LoadBalancerARM{
ARMResource: armResource,
LoadBalancer: loadBalancer,
}
return loadBalancerARM
}