in pkg/azure/client.go [477:653]
func getTemplate() map[string]interface{} {
template := `
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"applicationGatewayName": {
"defaultValue": "appgw",
"type": "string",
"metadata": {
"description": "Name of the Application Gateway."
}
},
"applicationGatewaySubnetId": {
"type": "string",
"metadata": {
"description": "Resource Id of Subnet in which Application Gateway will be deployed."
}
},
"applicationGatewaySku": {
"allowedValues": [
"Standard_v2",
"WAF_v2"
],
"type": "string",
"metadata": {
"description": "The sku of the Application Gateway. Default: WAF_v2 (Detection mode). In order to further customize WAF, use azure portal or cli."
}
}
},
"variables": {
"resgpguid": "[substring(replace(guid(resourceGroup().id), '-', ''), 0, 4)]",
"vnetName": "[concat('virtualnetwork' , variables('resgpguid'))]",
"applicationGatewayPublicIpName": "[concat(parameters('applicationGatewayName'), '-appgwpip')]",
"applicationGatewayPublicIpId": "[resourceId('Microsoft.Network/publicIPAddresses',variables('applicationGatewayPublicIpName'))]",
"applicationGatewayId": "[resourceId('Microsoft.Network/applicationGateways', parameters('applicationGatewayName'))]",
"webApplicationFirewallConfiguration": {
"enabled": "true",
"firewallMode": "Detection"
}
},
"resources": [
{
"type": "Microsoft.Network/publicIPAddresses",
"name": "[variables('applicationGatewayPublicIpName')]",
"apiVersion": "2018-08-01",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAllocationMethod": "Static"
}
},
{
"type": "Microsoft.Network/applicationGateways",
"name": "[parameters('applicationGatewayName')]",
"apiVersion": "2018-08-01",
"location": "[resourceGroup().location]",
"tags": {
"managed-by-k8s-ingress": "true",
"created-by": "ingress-appgw"
},
"properties": {
"sku": {
"name": "[parameters('applicationGatewaySku')]",
"tier": "[parameters('applicationGatewaySku')]",
"capacity": 2
},
"gatewayIPConfigurations": [
{
"name": "appGatewayIpConfig",
"properties": {
"subnet": {
"id": "[parameters('applicationGatewaySubnetId')]"
}
}
}
],
"frontendIPConfigurations": [
{
"name": "appGatewayFrontendIP",
"properties": {
"PublicIPAddress": {
"id": "[variables('applicationGatewayPublicIpId')]"
}
}
}
],
"frontendPorts": [
{
"name": "httpPort",
"properties": {
"Port": 80
}
},
{
"name": "httpsPort",
"properties": {
"Port": 443
}
}
],
"backendAddressPools": [
{
"name": "bepool",
"properties": {
"backendAddresses": []
}
}
],
"httpListeners": [
{
"name": "httpListener",
"properties": {
"protocol": "Http",
"frontendPort": {
"id": "[concat(variables('applicationGatewayId'), '/frontendPorts/httpPort')]"
},
"frontendIPConfiguration": {
"id": "[concat(variables('applicationGatewayId'), '/frontendIPConfigurations/appGatewayFrontendIP')]"
}
}
}
],
"backendHttpSettingsCollection": [
{
"name": "setting",
"properties": {
"port": 80,
"protocol": "Http"
}
}
],
"requestRoutingRules": [
{
"name": "rule1",
"properties": {
"httpListener": {
"id": "[concat(variables('applicationGatewayId'), '/httpListeners/httpListener')]"
},
"backendAddressPool": {
"id": "[concat(variables('applicationGatewayId'), '/backendAddressPools/bepool')]"
},
"backendHttpSettings": {
"id": "[concat(variables('applicationGatewayId'), '/backendHttpSettingsCollection/setting')]"
}
}
}
],
"webApplicationFirewallConfiguration": "[if(equals(parameters('applicationGatewaySku'), 'WAF_v2'), variables('webApplicationFirewallConfiguration'), json('null'))]"
},
"dependsOn": [
"[concat('Microsoft.Network/publicIPAddresses/', variables('applicationGatewayPublicIpName'))]"
]
}
],
"outputs": {
"subscriptionId": {
"type": "string",
"value": "[subscription().subscriptionId]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"applicationGatewayName": {
"type": "string",
"value": "[parameters('applicationGatewayName')]"
}
}
}`
contents := make(map[string]interface{})
json.Unmarshal([]byte(template), &contents)
return contents
}