你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Azure CLI 通过 Azure Virtual Network Manager 创建网格网络拓扑
在 Azure CLI 中开始使用 Azure Virtual Network Manager 管理所有虚拟网络的连接。
在本快速入门中,你将部署三个虚拟网络,并使用 Azure Virtual Network Manager 创建网格网络拓扑。 然后验证是否应用了连接配置。
先决条件
- 具有活动订阅的 Azure 帐户。 免费创建帐户。
- 最新的 Azure CLI,或者可以在门户中使用 Azure Cloud Shell。
- Azure Virtual Network Manager 扩展。 如果要添加它,请运行
az extension add -n virtual-network-manager
。 - 若要修改动态网络组,必须仅通过 Azure RBAC 角色分配授予访问权限。 不支持经典管理员/旧授权。
登录到 Azure 帐户,然后选择订阅
要开始配置,请登录到 Azure 帐户。 如果使用 Cloud Shell“试用”功能,你将自动登录。
az login
选择部署了 Virtual Network Manager 的订阅:
az account set \
--subscription "<subscriptionID>"
更新适用于 Azure CLI 的 Virtual Network Manager 扩展:
az extension update --name virtual-network-manager
创建资源组
在此任务中,你将使用 az group create 创建资源组来托管网络管理器实例。 此示例在(美国)西部 2 位置创建了一个名为 resource-group 的资源组:
az group create \
--name "resource-group" \
--location "westus2"
创建 Virtual Network Manager 实例
在此任务中,定义此 Virtual Network Manager 实例的范围和访问类型。 使用 az network manager create 创建作用域。 将值 <subscriptionID>
替换为希望 Virtual Network Manager 为其管理虚拟网络的订阅。 将 <mgName\>
替换为要管理的管理组。
az network manager create \
--location "westus2" \
--name "network-manager" \
--resource-group "resource-group" \
--scope-accesses "Connectivity" "SecurityAdmin" \
--network-manager-scopes subscriptions="/subscriptions/<subscriptionID>"
创建网络组
在此任务中,使用 az network manager group create 创建网络组:
az network manager group create \
--name "network-group" \
--network-manager-name "network-manager" \
--resource-group "resource-group" \
--description "Network Group for Production virtual networks"
创建虚拟网络
在此任务中,使用 az network vnet create 创建三个虚拟网络。 本示例在(美国)西部 2 位置创建名为 three virtual 的虚拟网络。 每个虚拟网络都带有一个用于动态成员身份的 networkType
标记。 如果已有可用于创建网格网络的虚拟网络,则可以跳转到下一部分。
az network vnet create \
--name "vnet-00" \
--resource-group "resource-group" \
--address-prefix "10.0.0.0/16" \
--tags "NetworkType=Prod"
az network vnet create \
--name "vnet-01" \
--resource-group "resource-group" \
--address-prefix "10.1.0.0/16" \
--tags "NetworkType=Prod"
az network vnet create \
--name "vnet-02" \
--resource-group "resource-group" \
--address-prefix "10.2.0.0/16" \
--tags "NetworkType=Prod"
将一个子网添加到每个虚拟网络
在此任务中,向每个虚拟网络添加一个 /24 子网以完成虚拟网络的配置。 使用 az network vnet subnet create 创建名为 default 的子网配置:
az network vnet subnet create \
--name "default" \
--resource-group "resource-group" \
--vnet-name "vnet-00" \
--address-prefix "10.0.0.0/24"
az network vnet subnet create \
--name "default" \
--resource-group "resource-group" \
--vnet-name "vnet-01" \
--address-prefix "10.1.0.0/24"
az network vnet subnet create \
--name "default" \
--resource-group "resource-group" \
--vnet-name "vnet-02" \
--address-prefix "10.2.0.0/24"
为网格配置定义成员身份
通过 Azure Virtual Network Manager,可以使用两种方法将成员身份添加到网络组。 静态成员身份涉及手动添加虚拟网络,动态成员身份涉及使用 Azure Policy 根据条件动态添加虚拟网络。 选择要为网格配置成员身份完成的选项。
凭借静态成员身份,可通过 az network manager group static-member create 为网格配置将三个虚拟网络手动添加到网络组。 将 <subscriptionID>
替换为创建了这些虚拟网络的订阅。
az network manager group static-member create \
--name "vnet-00" \
--network-group "network-group" \
--network-manager "network-manager" \
--resource-group "resource-group" \
--resource-id "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/virtualnetworks/vnet-00"
az network manager group static-member create \
--name "vnet-01" \
--network-group "network-group" \
--network-manager "network-manager" \
--resource-group "resource-group" \
--resource-id "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/virtualnetworks/vnet-01"
az network manager group static-member create \
--name "vnet-02" \
--network-group "network-group" \
--network-manager "network-manager" \
--resource-group "resource-group" \
--resource-id "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/virtualnetworks/vnet-02"
创建配置
在此任务中,使用 az network manager connect-config create 创建网格网络拓扑配置。 将 <subscriptionID>
替换为订阅 ID。
az network manager connect-config create \
--configuration-name "connectivityconfig" \
--description "Production Mesh Connectivity Config Example" \
--applies-to-groups '[{"networkGroupId": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/networkGroups/network-group", "groupConnectivity": "None"}]' \
--connectivity-topology "Mesh" \
--network-manager-name "network-manager" \
--resource-group "resource-group"
提交部署
要使配置生效,可使用 az network manager post-commit 将配置提交到目标区域:
az network manager post-commit \
--network-manager-name "network-manager" \
--commit-type "Connectivity" \
--configuration-ids "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/connectivityConfigurations/connectivityconfig" \
--target-locations "westus2" \
--resource-group "resource-group"
验证配置
在使用 az network manager list-effective-connectivity-config时,虚拟网络将会显示应用于它们的配置:
az network manager list-effective-connectivity-config \
--resource-group "resource-group" \
--virtual-network-name "vnet-00"
az network manager list-effective-connectivity-config \
--resource-group "resource-group" \
--virtual-network-name "vnet-01"
az network manager list-effective-connectivity-config \
--resource-group "resource-group" \
--virtual-network-name "vnet-02"
对于属于连接配置的虚拟网络,你将收到类似于以下示例的输出:
{
"skipToken": "",
"value": [
{
"appliesToGroups": [
{
"groupConnectivity": "None",
"isGlobal": "False",
"networkGroupId": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/networkGroups/network-group",
"useHubGateway": "False"
}
],
"configurationGroups": [
{
"description": "Network Group for Production virtual networks",
"id": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/networkGroups/network-group",
"provisioningState": "Succeeded",
"resourceGroup": "resource-group"
}
],
"connectivityTopology": "Mesh",
"deleteExistingPeering": "False",
"description": "Production Mesh Connectivity Config Example",
"hubs": [],
"id": "/subscriptions/<subscriptionID>/resourceGroups/resource-group/providers/Microsoft.Network/networkManagers/network-manager/connectivityConfigurations/connectivityconfig",
"isGlobal": "False",
"provisioningState": "Succeeded",
"resourceGroup": "resource-group"
}
]
}
清理资源
如果不再需要 Azure Virtual Network Manager 实例和其他资源,请使用 az group delete 删除资源组:
az group delete \
--name "resource-group"
后续步骤
在此步骤中,了解如何使用安全管理员配置阻止网络流量: