搜鞥都哦 发表于 2017-6-30 14:38:39

将Azure WebSite(应用)集成到虚拟网络

  用过Azure的同学都知道如何将虚拟机加入虚拟网络,也非常简单,但是对于将应用(WebSite)集成到虚拟网络中却很少听到。今天我要讲的就是如何直接将我们部署在WebSite中的应用加入到虚拟网络。
  1、先决条件:


[*]安装 Azure Powershell(download)
[*]  Azure 订阅账号(Azure Portal)

[*]在标准或高级 SKU 中运行的 Azure App Service 中的应用
  2、创建虚拟网络
  因为将WebSite加入到虚拟网络中是Point to Site,所以我们创建虚拟网络时需要启用点到站点连接,当然也可以创建完成再启用。

  输入虚拟网络名称并选择网络位置


  添加网关子网

  创建网关,这一步骤时间有点长(大概20分钟)

  3、创建WebSite

  因为我们创建的WebSite SKU默认为“免费”,而能和虚拟网络进行集成的WebSite SKU需要是标准或高级,所以我们需要手动缩放下。

  3、将应用连接到虚拟网络
  使用Powershell命令登录Azure账号和订阅



Login-AzureRmAccount -EnvironmentName AzureChinaCloud

  选中WebSite所在订阅



Select-AzureRmSubscription -SubscriptionName
  或者



Select-AzureRmSubscription -SubscriptionId

[*]使用Powershell设置WebSite连接到虚拟网络的配置信息



$Configuration = @{}
$Configuration.WebAppResourceGroup = ""
$Configuration.WebAppName = ""
$Configuration.VnetSubscriptionId = ""
$Configuration.VnetResourceGroup = ""
$Configuration.VnetName = ""
#国内Azure有两个数据中心:chinaeast、chiannorth
$Configuration.WebAppLocation = ""
$Configuration.GeneratedCertificatePath = "C:\Users\Crazy\Desktop\Certificate.cer"
  查看刚才设置的配置



[*]向应用中申明虚拟网络



$vnet = New-AzureRmResource -Name "$($Configuration.WebAppName)/$($Configuration.VnetName)" -ResourceGroupName $Configuration.WebAppResourceGroup -ResourceType "Microsoft.Web/sites/virtualNetworkConnections" -PropertyObject @{"VnetResourceId" = "/subscriptions/$($Configuration.VnetSubscriptionId)/resourceGroups/$($Configuration.VnetResourceGroup)/providers/Microsoft.ClassicNetwork/virtualNetworks/$($Configuration.VnetName)"} -Location $Configuration.WebAppLocation -ApiVersion 2015-07-01
  如果此命令成功,$vnet 中应该包含 Properties 变量。Properties 变量应该包含证书指纹和证书数据。


[*]将证书下载到本地



$certBytes = ::FromBase64String($vnet.Properties.certBlob)
::WriteAllBytes("$($Configuration.GeneratedCertificatePath)", $certBytes)
  将下载的证书上载到虚拟网络



[*]获取点到站点包,并将其提供给WebSite应用
  将以下模板保存到计算机上某个位置中的名为 GetNetworkPackageUri.json 的文件



{
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"certData": {
"type": "string"
},
"certThumbprint": {
"type": "string"
},
"networkName": {
"type": "string"
}
},
"variables": {
"legacyVnetName": ""
},
"resources": [
],
"outputs" : {
"PackageUri" :
{
"value" : "", "type" : "string"
}
}
}
  设置输入参数:



$parameters = @{"certData" = $vnet.Properties.certBlob ;
certThumbprint = $vnet.Properties.certThumbprint ;
"networkName" = $Configuration.VnetName }

[*]调用ARM模板



$output = New-AzureRmResourceGroupDeployment -Name unused -ResourceGroupName $Configuration.VnetResourceGroup -TemplateParameterObject $parameters -TemplateFile C:\PATH\TO\GetNetworkPackageUri.json
  变量 $output.Outputs.packageUri 现在包含要提供给 Web 应用的包 URI。


[*]将点到站点包上载到应用



$vnet = New-AzureRmResource -Name "$($Configuration.WebAppName)/$($Configuration.VnetName)/primary" -ResourceGroupName $Configuration.WebAppResourceGroup -ResourceType "Microsoft.Web/sites/virtualNetworkConnections/gateways" -ApiVersion 2015-07-01 -PropertyObject @{"VnetName" = $Configuration.VnetName ; "VpnPackageUri" = $($output.Outputs.packageUri).Value } -Location $Configuration.WebAppLocation
  此命令成功之后,应用现在应会连接到虚拟网络
  4、确认应用是否连接到虚拟网络
  下载WebSite发布配置文件

  登录到应用Kudu管理平台,打开浏览器输入下图选中的Url并登录。

  进入命令行界面

  输入以下命令



SET WEBSITE_

  我们可以看到WEBSITE_VNETNAME 的环境变量值就是连接的虚拟网络。
页: [1]
查看完整版本: 将Azure WebSite(应用)集成到虚拟网络