当前位置 博文首页 > 路边两盏灯:【Azure 微服务】基于已经存在的虚拟网络(VNET)及子

    路边两盏灯:【Azure 微服务】基于已经存在的虚拟网络(VNET)及子

    作者:路边两盏灯 时间:2021-02-10 18:29

    问题描述

    创建新的Service Fabric集群,可以通过门户,Powershell命令,或者是ARM模板。但是通过门户和PowerShell命令时,创建的SF集群都会自动新建一个虚拟网络而无法使用以及存在的虚拟网络及子网来部署SF。

    这对于已经存在的网络来说是一个不友好的方面。那是否可以通过ARM模板来实现呢?

     

    解决办法

    使用ARM Template可以

    1)准备好ARM模板, 并在模板中的高亮区修改为已经准备好的VNET名称和VNET资源所在的资源组

    由于模板内容太长,所以这里列举出需要修改的部分:

       ...

      "existingVNetRGName": {

                "type": "string",

                "defaultValue": "vke-rg"

            },

            "existingVNetName": {

                "type": "string",

                "defaultValue": "vke-vnet-sf-03"

            },

      ...

     

    exsitvnet.json全部内容:

    {
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "clusterLocation": {
                "type": "string",
                "defaultValue": "chinanorth2",
                "metadata": {
                    "description": "Location of the Cluster"
                }
            },
            "clusterName": {
                "type": "string",
                "defaultValue": "Clustervanke",
                "metadata": {
                    "description": "Name of your cluster - Between 3 and 23 characters. Letters and numbers only"
                }
            },
            "nt0applicationStartPort": {
                "type": "int",
                "defaultValue": 20000
            },
            "nt0applicationEndPort": {
                "type": "int",
                "defaultValue": 30000
            },
            "nt0ephemeralStartPort": {
                "type": "int",
                "defaultValue": 49152
            },
            "nt0ephemeralEndPort": {
                "type": "int",
                "defaultValue": 65534
            },
            "nt0fabricTcpGatewayPort": {
                "type": "int",
                "defaultValue": 19000
            },
            "nt0fabricHttpGatewayPort": {
                "type": "int",
                "defaultValue": 19080
            },
            "subnet0Name": {
                "type": "string",
                "defaultValue": "default"
            },
            "existingVNetRGName": {
                "type": "string",
                "defaultValue": "vanke-rg"
            },
            "existingVNetName": {
                "type": "string",
                "defaultValue": "vanke-vnet-sf-03"
            },
            "computeLocation": {
                "type": "string",
                "defaultValue": "chinanorth2"
            },
            "vmStorageAccountName": {
                "type": "string",
                "defaultValue": "sftestsa002"
            },
            "publicIPAddressName": {
                "type": "string",
                "defaultValue": "PublicIP-SF-VM"
            },
            "publicIPAddressType": {
                "type": "string",
                "allowedValues": [
                    "Dynamic"
                ],
                "defaultValue": "Dynamic"
            },
            "vmStorageAccountContainerName": {
                "type": "string",
                "defaultValue": "vhds"
            },
            "adminUserName": {
                "type": "string",
                "defaultValue": "testadmin",
                "metadata": {
                    "description": "Remote desktop user Id"
                }
            },
            "adminPassword": {
                "type": "securestring",
                "defaultValue": "1qaz#EDC5tgb",
                "metadata": {
                    "description": "Remote desktop user password. Must be a strong password"
                }
            },
            "virtualNetworkName": {
                "type": "string",
                "defaultValue": "VNet"
            },
            "addressPrefix": {
                "type": "string",
                "defaultValue": "10.3.0.0/24"
            },
            "dnsName": {
                "type": "string",
                "defaultValue": "sfdnstest02"
            },
            "nicName": {
                "type": "string",
                "defaultValue": "NIC"
            },
            "lbName": {
                "type": "string",
                "defaultValue": "LoadBalancer"
            },
            "lbIPName": {
                "type": "string",
                "defaultValue": "PublicIP-LB-SF-FE"
            },
            "overProvision": {
                "type": "string",
                "defaultValue": "false"
            },
            "vmImagePublisher": {
                "type": "string",
                "defaultValue": "MicrosoftWindowsServer"
            },
            "vmImageOffer": {
                "type": "string",
                "defaultValue": "WindowsServer"
            },
            "vmImageSku": {
                "type": "string",
                "defaultValue": "2016-Datacenter-with-Containers"
            },
            "vmImageVersion": {
                "type": "string",
                "defaultValue": "latest"
            },
            "loadBalancedAppPort1": {
                "type": "int",
                "defaultValue": 80,
                "metadata": {
                    "description": "Input endpoint1 for the application to use. Replace it with what your application uses"
                }
            },
            "storageAccountType": {
                "type": "string",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS"
                ],
                "defaultValue": "Standard_LRS",
                "metadata": {
                    "description": "Replication option for the VM image storage account"
                }
            },
            "supportLogStorageAccountType": {
                "type": "string",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS"
                ],
                "defaultValue": "Standard_LRS",
                "metadata": {
                    "description": "Replication option for the support log storage account"
                }
            },
            "supportLogStorageAccountName": {
                "type": "string",
                "defaultValue": "[toLower( concat('sflogs', uniqueString(resourceGroup().id),'2'))]",
                "metadata": {
                    "description": "Name for the storage account that contains support logs from the cluster"
                }
            },
            "applicationDiagnosticsStorageAccountType": {
                "type": "string",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS"
                ],
                "defaultValue": "Standard_LRS",
                "metadata": {
                    "description": "Replication option for the application diagnostics storage account"
                }
            },
            "applicationDiagnosticsStorageAccountName": {
                "type": "string",
                "defaultValue": "[toLower(concat(uniqueString(resourceGroup().id), '3' ))]",
                "metadata": {
                    "description": "Name for the storage account that contains application diagnostics data from the cluster"
                }
            },
            "nt0InstanceCount": {
                "type": "int",
                "defaultValue": 1,
                "metadata": {
                    "description": "Instance count for node type"
                }
            },
            "vmNodeType0Name": {
                "type": "string",
                "defaultValue": "Node1",
                "maxLength": 9
            },
            "vmNodeType0Size": {
                "type": "string",
                "defaultValue": "Standard_D1_v2"
            }
        },
        "variables": {
            "vmssApiVersion": "2016-03-30",
            "lbApiVersion": "2015-06-15",
            "vNetApiVersion": "2015-06-15",
            "storageApiVersion": "2016-01-01",
            "publicIPApiVersion": "2015-06-15",
            "vnetID": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('existingVNetRGName'), '/providers/Microsoft.Network/virtualNetworks/', parameters('existingVNetName'))]",
            "subnet0Ref": "[concat(variables('vnetID'),'/subnets/',parameters('subnet0Name'))]",
            "lbID0": "[resourceId('Microsoft.Network/loadBalancers', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]",
            "lbIPConfig0": "[concat(variables('lbID0'),'/frontendIPConfigurations/LoadBalancerIPConfig')]",
            "lbPoolID0": "[concat(variables('lbID0'),'/backendAddressPools/LoadBalancerBEAddressPool')]",
            "lbProbeID0": "[concat(variables('lbID0'),'/probes/FabricGatewayProbe')]",
            "lbHttpProbeID0": "[concat(variables('lbID0'),'/probes/FabricHttpGatewayProbe')]",
            "lbNatPoolID0": "[concat(variables('lbID0'),'/inboundNatPools/LoadBalancerBEAddressNatPool')]",
            "vmStorageAccountName0": "[toLower(concat(uniqueString(resourceGroup().id), '1', '0' ))]",
            "uniqueStringArray0": [
                "[concat(variables('vmStorageAccountName0'), '0')]",
                "[concat(variables('vmStorageAccountName0'), '1')]",
                "[concat(variables('vmStorageAccountName0'), '2')]",
                "[concat(variables('vmStorageAccountName0'), '3')]",
                "[concat(variables('vmStorageAccountName0'), '4')]"
            ]
        },
        "resources": [
            {
                "apiVersion": "[variables('storageApiVersion')]",
                "type": "Microsoft.Storage/storageAccounts",
                "name": "[parameters('supportLogStorageAccountName')]",
                "location": "[parameters('computeLocation')]",
                "dependsOn": [],
                "properties": {},
                "kind": "Storage",
                "sku": {
                    "name": "[parameters('supportLogStorageAccountType')]"
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            },
            {
                "apiVersion": "[variables('storageApiVersion')]",
                "type": "Microsoft.Storage/storageAccounts",
                "name": "[parameters('applicationDiagnosticsStorageAccountName')]",
                "location": "[parameters('computeLocation')]",
                "dependsOn": [],
                "properties": {},
                "kind": "Storage",
                "sku": {
                    "name": "[parameters('applicationDiagnosticsStorageAccountType')]"
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            },
            {
                "apiVersion": "[variables('publicIPApiVersion')]",
                "type": "Microsoft.Network/publicIPAddresses",
                "name": "[concat(parameters('lbIPName'),'-','0')]",
                "location": "[parameters('computeLocation')]",
                "properties": {
                    "dnsSettings": {
                        "domainNameLabel": "[parameters('dnsName')]"
                    },
                    "publicIPAllocationMethod": "Dynamic"
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            },
            {
                "apiVersion": "[variables('lbApiVersion')]",
                "type": "Microsoft.Network/loadBalancers",
                "name": "[concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name'))]",
                "location": "[parameters('computeLocation')]",
                "dependsOn": [
                    "[concat('Microsoft.Network/publicIPAddresses/',concat(parameters('lbIPName'),'-','0'))]"
                ],
                "properties": {
                    "frontendIPConfigurations": [
                        {
                            "name": "LoadBalancerIPConfig",
                            "properties": {
                                "publicIPAddress": {
                                    "id": "[resourceId('Microsoft.Network/publicIPAddresses',concat(parameters('lbIPName'),'-','0'))]"
                                }
                            }
                        }
                    ],
                    "backendAddressPools": [
                        {
                            "name": "LoadBalancerBEAddressPool",
                            "properties": {}
                        }
                    ],
                    "loadBalancingRules": [
                        {
                            "name": "LBRule",
                            "properties": {
                                "backendAddressPool": {
                                    "id": "[variables('lbPoolID0')]"
                                },
                                "backendPort": "[parameters('nt0fabricTcpGatewayPort')]",
                                "enableFloatingIP": "false",
                                "frontendIPConfiguration": {
                                    "id": "[variables('lbIPConfig0')]"
                                },
                                "frontendPort": "[parameters('nt0fabricTcpGatewayPort')]",
                                "idleTimeoutInMinutes": "5",
                                "probe": {
                                    "id": "[variables('lbProbeID0')]"
                                },
                                "protocol": "tcp"
                            }
                        },
                        {
                            "name": "LBHttpRule",
                            "properties": {
                                "backendAddressPool": {
                                    "id": "[variables('lbPoolID0')]"
                                },
                                "backendPort": "[parameters('nt0fabricHttpGatewayPort')]",
                                "enableFloatingIP": "false",
                                "frontendIPConfiguration": {
                                    "id": "[variables('lbIPConfig0')]"
                                },
                                "frontendPort": "[parameters('nt0fabricHttpGatewayPort')]",
                                "idleTimeoutInMinutes": "5",
                                "probe": {
                                    "id": "[variables('lbHttpProbeID0')]"
                                },
                                "protocol": "tcp"
                            }
                        },
                        {
                            "name": "AppPortLBRule1",
                            "properties": {
                                "backendAddressPool": {
                                    "id": "[variables('lbPoolID0')]"
                                },
                                "backendPort": "[parameters('loadBalancedAppPort1')]",
                                "enableFloatingIP": "false",
                                "frontendIPConfiguration": {
                                    "id": "[variables('lbIPConfig0')]"
                                },
                                "frontendPort": "[parameters('loadBalancedAppPort1')]",
                                "idleTimeoutInMinutes": "5",
                                "probe": {
                                    "id": "[concat(variables('lbID0'),'/probes/AppPortProbe1')]"
                                },
                                "protocol": "tcp"
                            }
                        }
                    ],
                    "probes": [
                        {
                            "name": "FabricGatewayProbe",
                            "properties": {
                                "intervalInSeconds": 5,
                                "numberOfProbes": 2,
                                "port": "[parameters('nt0fabricTcpGatewayPort')]",
                                "protocol": "tcp"
                            }
                        },
                        {
                            "name": "FabricHttpGatewayProbe",
                            "properties": {
                                "intervalInSeconds": 5,
                                "numberOfProbes": 2,
                                "port": "[parameters('nt0fabricHttpGatewayPort')]",
                                "protocol": "tcp"
                            }
                        },
                        {
                            "name": "AppPortProbe1",
                            "properties": {
                                "intervalInSeconds": 5,
                                "numberOfProbes": 2,
                                "port": "[parameters('loadBalancedAppPort1')]",
                                "protocol": "tcp"
                            }
                        }
                    ],
                    "inboundNatPools": [
                        {
                            "name": "LoadBalancerBEAddressNatPool",
                            "properties": {
                                "backendPort": "3389",
                                "frontendIPConfiguration": {
                                    "id": "[variables('lbIPConfig0')]"
                                },
                                "frontendPortRangeEnd": "4500",
                                "frontendPortRangeStart": "3389",
                                "protocol": "tcp"
                            }
                        }
                    ]
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            },
            {
                "apiVersion": "[variables('storageApiVersion')]",
                "type": "Microsoft.Storage/storageAccounts",
                "name": "[variables('uniqueStringArray0')[copyIndex()]]",
                "location": "[parameters('computeLocation')]",
                "dependsOn": [],
                "properties": {},
                "copy": {
                    "name": "storageLoop",
                    "count": 5
                },
                "kind": "Storage",
                "sku": {
                    "name": "[parameters('storageAccountType')]"
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            },
            {
                "apiVersion": "[variables('vmssApiVersion')]",
                "type": "Microsoft.Compute/virtualMachineScaleSets",
                "name": "[parameters('vmNodeType0Name')]",
                "location": "[parameters('computeLocation')]",
                "dependsOn": [
                    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0])]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1])]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2])]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3])]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4])]",
                    "[concat('Microsoft.Network/loadBalancers/', concat('LB','-', parameters('clusterName'),'-',parameters('vmNodeType0Name')))]",
                    "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]",
                    "[concat('Microsoft.Storage/storageAccounts/', parameters('applicationDiagnosticsStorageAccountName'))]"
                ],
                "properties": {
                    "overprovision": "[parameters('overProvision')]",
                    "upgradePolicy": {
                        "mode": "Automatic"
                    },
                    "virtualMachineProfile": {
                        "extensionProfile": {
                            "extensions": [
                                {
                                    "name": "[concat(parameters('vmNodeType0Name'),'_ServiceFabricNode')]",
                                    "properties": {
                                        "type": "ServiceFabricNode",
                                        "autoUpgradeMinorVersion": false,
                                        "protectedSettings": {
                                            "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
                                            "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('supportLogStorageAccountName')),'2015-05-01-preview').key2]"
                                        },
                                        "publisher": "Microsoft.Azure.ServiceFabric",
                                        "settings": {
                                            "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
                                            "nodeTypeRef": "[parameters('vmNodeType0Name')]",
                                            "dataPath": "D:\\\\SvcFab",
                                            "durabilityLevel": "Bronze"
                                        },
                                        "typeHandlerVersion": "1.0"
                                    }
                                },
                                {
                                    "name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]",
                                    "properties": {
                                        "type": "IaaSDiagnostics",
                                        "autoUpgradeMinorVersion": true,
                                        "protectedSettings": {
                                            "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
                                            "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
                                            "storageAccountEndPoint": "https://core.windows.net/"
                                        },
                                        "publisher": "Microsoft.Azure.Diagnostics",
                                        "settings": {
                                            "WadCfg": {
                                                "DiagnosticMonitorConfiguration": {
                                                    "overallQuotaInMB": "50000",
                                                    "EtwProviders": {
                                                        "EtwEventSourceProviderConfiguration": [
                                                            {
                                                                "provider": "Microsoft-ServiceFabric-Actors",
                                                                "scheduledTransferKeywordFilter": "1",
                                                                "scheduledTransferPeriod": "PT5M",
                                                                "DefaultEvents": {
                                                                    "eventDestination": "ServiceFabricReliableActorEventTable"
                                                                }
                                                            },
                                                            {
                                                                "provider": "Microsoft-ServiceFabric-Services",
                                                                "scheduledTransferPeriod": "PT5M",
                                                                "DefaultEvents": {
                                                                    "eventDestination": "ServiceFabricReliableServiceEventTable"
                                                                }
                                                            }
                                                        ],
                                                        "EtwManifestProviderConfiguration": [
                                                            {
                                                                "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                                                                "scheduledTransferLogLevelFilter": "Information",
                                                                "scheduledTransferKeywordFilter": "4611686018427387904",
                                                                "scheduledTransferPeriod": "PT5M",
                                                                "DefaultEvents": {
                                                                    "eventDestination": "ServiceFabricSystemEventTable"
                                                                }
                                                            }
                                                        ]
                                                    }
                                                }
                                            },
                                            "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
                                        },
                                        "typeHandlerVersion": "1.5"
                                    }
                                }
                            ]
                        },
                        "networkProfile": {
                            "networkInterfaceConfigurations": [
                                {
                                    "name": "[concat(parameters('nicName'), '-0')]",
                                    "properties": {
                                        "ipConfigurations": [
                                            {
                                                "name": "[concat(parameters('nicName'),'-',0)]",
                                                "properties": {
                                                    "loadBalancerBackendAddressPools": [
                                                        {
                                                            "id": "[variables('lbPoolID0')]"
                                                        }
                                                    ],
                                                    "loadBalancerInboundNatPools": [
                                                        {
                                                            "id": "[variables('lbNatPoolID0')]"
                                                        }
                                                    ],
                                                    "subnet": {
                                                        "id": "[variables('subnet0Ref')]"
                                                    }
                                                }
                                            }
                                        ],
                                        "primary": true
                                    }
                                }
                            ]
                        },
                        "osProfile": {
                            "adminPassword": "[parameters('adminPassword')]",
                            "adminUsername": "[parameters('adminUsername')]",
                            "computernamePrefix": "[parameters('vmNodeType0Name')]"
                        },
                        "storageProfile": {
                            "imageReference": {
                                "publisher": "[parameters('vmImagePublisher')]",
                                "offer": "[parameters('vmImageOffer')]",
                                "sku": "[parameters('vmImageSku')]",
                                "version": "[parameters('vmImageVersion')]"
                            },
                            "osDisk": {
                                "vhdContainers": [
                                    "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[0]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
                                    "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[1]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
                                    "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[2]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
                                    "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[3]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]",
                                    "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('uniqueStringArray0')[4]), variables('storageApiVersion')).primaryEndpoints.blob, parameters('vmStorageAccountContainerName'))]"
                                ],
                                "name": "vmssosdisk",
                                "caching": "ReadOnly",
                                "createOption": "FromImage"
                            }
                        }
                    }
                },
                "sku": {
                    "name": "[parameters('vmNodeType0Size')]",
                    "capacity": "[parameters('nt0InstanceCount')]",
                    "tier": "Standard"
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            },
            {
                "apiVersion": "2016-09-01",
                "type": "Microsoft.ServiceFabric/clusters",
                "name": "[parameters('clusterName')]",
                "location": "[parameters('clusterLocation')]",
                "dependsOn": [
                    "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
                ],
                "properties": {
                    "clientCertificateCommonNames": [],
                    "clientCertificateThumbprints": [],
                    "clusterState": "Default",
                    "diagnosticsStorageAccountConfig": {
                        "blobEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.blob]",
                        "protectedAccountKeyName": "StorageAccountKey1",
                        "queueEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.queue]",
                        "storageAccountName": "[parameters('supportLogStorageAccountName')]",
                        "tableEndpoint": "[reference(concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName')), variables('storageApiVersion')).primaryEndpoints.table]"
                    },
                    "fabricSettings": [],
                    "managementEndpoint": "[concat('http://',reference(concat(parameters('lbIPName'),'-','0')).dnsSettings.fqdn,':',parameters('nt0fabricHttpGatewayPort'))]",
                    "nodeTypes": [
                        {
                            "name": "[parameters('vmNodeType0Name')]",
                            "applicationPorts": {
                                "endPort": "[parameters('nt0applicationEndPort')]",
                                "startPort": "[parameters('nt0applicationStartPort')]"
                            },
                            "clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]",
                            "durabilityLevel": "Bronze",
                            "ephemeralPorts": {
                                "endPort": "[parameters('nt0ephemeralEndPort')]",
                                "startPort": "[parameters('nt0ephemeralStartPort')]"
                            },
                            "httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]",
                            "reverseProxyEndpointPort": "19081",
                            "isPrimary": true,
                            "vmInstanceCount": "[parameters('nt0InstanceCount')]"
                        }
                    ],
                    "provisioningState": "Default",
                    "reliabilityLevel": "None",
                    "upgradeMode": "Automatic",
                    "vmImage": "Windows"
                },
                "tags": {
                    "resourceType": "Service Fabric",
                    "clusterName": "[parameters('clusterName')]"
                }
            }
        ],
        "outputs": {
            "clusterProperties": {
                "value": "[reference(parameters('clusterName'))]",
                "type": "object"
            }
        }
    }