为生成-部署-测试方案创建虚拟网络隔离环境

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

借助网络虚拟化,可以在共享物理网络上创建多个虚拟网络。 可以使用 SCVMM 网络虚拟化概念创建隔离的虚拟网络。 VMM 使用逻辑网络和相应的 VM 网络的概念来创建独立的虚拟机网络。

逻辑网络和相应的 VM 网络

  • 可以在主机群集或私有云中创建跨不同主机的虚拟机独立网络。
  • 可以让不同网络中的 VM 驻留在同一台主机中,并且彼此之间仍然相互隔离。
  • 对于 VM 网络,可以定义你选择的任何 IP 池中的 IP 地址。

另请参阅:Hyper-V 网络虚拟化概述

创建虚拟网络隔离环境:

  • 确保满足本节中所述的先决条件。

  • 使用 SCVMM 设置网络虚拟化。 这是一次性设置任务,不需要重复执行。 请执行这些步骤

  • 决定要使用的网络拓扑。 创建虚拟网络时,将指定此项。 本节介绍了选项和步骤。

  • 启用“生成-部署-测试”方案,如这些步骤所示。

先决条件

  • SCVMM Server 2012 R2 或更高版本。
  • Window 2012 R2 主机设置了至少两个物理 NIC 的 Hyper-V。
  • 一个具有企业网络或 Internet 访问权限的 NIC(可能是外部的)。
  • 在中继模式下配置的 NIC,其中包含 VLAN ID(例如 991)和可路由 IP 子网(例如 10.10.30.1/24)。 网络管理员可以对此进行配置。
  • 主机组中的所有 Hyper-V 主机具有相同的 VLAN ID。 此主机组将用于隔离网络。

按照以下步骤验证设置是否正常工作:

  1. 打开与每台主机的 RDP 会话,并打开管理员 PowerShell 会话。

  2. 运行命令 Get-NetVirtualizationProviderAddress。 这会获取使用 VLAN ID 在中继模式下配置的物理 NIC 的提供程序地址。

    运行 Get-NetVirtualizationProviderAddress

  3. 转到另一台主机并打开管理员 PowerShell 会话。 使用 ping -p <Provider address> 命令对其他计算机执行 Ping 操作。 这可以确认所有主机都以中继模式连接到物理 NIC,而且 IP 可跨主机路由。 如果此测试失败,请与网络管理员联系。

    ping 其他计算机

返回到任务列表

在 SCVMM 中创建网络虚拟化层

在 SCVMM 中设置网络可视化层包括创建逻辑网络、端口配置文件、逻辑交换机,以及将交换机添加到 Hyper-V 主机。

创建逻辑网络

  1. 登录到 SCVMM 管理控制台。

  2. 转到构造 ->网络 ->逻辑网络 ->创建新的逻辑网络

    创建新的逻辑网络

  3. 在弹出窗口中,输入适当的名称,然后选择一个连接的网络 ->允许在此逻辑网络上创建的新网络使用网络虚拟化,然后选择下一步

    命名网络并选择“一个连接的网络”

  4. 添加新的网络站点,并选择网络站点将限定到的主机组。 输入用于在 Hyper-V 主机组中配置物理 NIC 的 VLAN ID 和相应的可路由 IP 子网。 为了帮助跟踪,请将网络站点名称更改为容易记住的名称。

    添加新的网络站点

  5. 选择下一步保存

  6. 为新的逻辑网络创建 IP 池,输入名称,然后选择下一步

    创建 IP 池

  7. 选择使用和现有网络站点,然后选择下一步。 输入网络管理员为 VLAN 配置的可路由 IP 地址范围,然后选择下一步。 如果有多个与 VLAN 关联的可路由 IP 子网,请为每个子网创建一个 IP 池。

    提供可路由 IP 地址范围

  8. 提供网关地址。 默认情况下,可以使用子网中的第一个 IP 地址。

    提供网关地址

  9. 选择下一步并保留现有的 DNS 和 WINS 设置。 完成网络站点的创建。

  10. 现在创建另一个逻辑网络用于外部 Internet 访问,但这次选择一个连接的网络 ->创建同名的 VM 网络,以允许虚拟机直接访问此逻辑网络,然后选择下一步

    为外部 Internet 访问创建逻辑网络

  11. 添加网络站点并选择相同的主机组,但这次将 VLAN 添加为 0。 这意味着通信使用默认访问模式 NIC (Internet)。

    添加网络站点并选择同一主机组

  12. 选择下一步保存

  13. 创建逻辑网络后,管理员控制台中的结果应如下所示。

    查看结果

创建端口配置文件

  1. 转到构造 ->网络 ->端口配置文件创建 Hyper-V 端口配置文件

    创建 Hyper-V 端口配置文件

  2. 选择上行端口配置文件,并选择 Hyper-V 端口作为负载均衡算法,然后选择下一步

    设置负载平衡算法

  3. 选择之前创建的网络虚拟化站点,然后选择启用 Hyper-V 网络虚拟化复选框,然后保存配置文件。

    启用 Hyper-V 网络虚拟化

  4. 现在,为外部逻辑网络创建另一个 Hyper-V 端口配置文件。 选择上行模式和主机默认值作为负载均衡算法,然后选择下一步

    正在为外部逻辑网络创建另一个 Hyper-V 端口配置文件

  5. 选择要用于外部通信的其他网络站点,但这次不启用网络虚拟化。 然后保存配置文件。

    选择要用于外部通信的网络站点

创建逻辑交换机

  1. 转到构造 ->网络 ->逻辑交换机 and 创建逻辑交换机

    创建逻辑开关

  2. 在入门向导中,选择下一步并输入交换机的名称,然后选择下一步

    输入交换机的名称

  3. 选择下一步打开上行选项卡。选择添加上行端口配置文件,然后添加刚创建的网络虚拟化端口配置文件。

    添加上行端口配置文件

  4. 选择下一步并保存逻辑交换机。

  5. 现在,为用于 Internet 通信的外部网络创建另一个逻辑交换机。 这一次,请添加为外部网络创建的其他上行端口配置文件。

    为外部网络创建另一个逻辑交换机

将逻辑交换机添加到 Hyper-V 主机

  1. 转到 VM 和服务 -> [你的主机组] -> [依次转到每台主机]。

  2. 右键单击并打开属性 ->虚拟交换机选项卡。

    打开“虚拟交换机”选项卡

  3. 选择新建虚拟交换机 ->用于网络虚拟化的新逻辑交换机。 分配在中继模式下配置的物理适配器,并选择网络虚拟化端口配置文件。

    分配物理适配器

  4. 为外部连接创建另一个逻辑交换机,分配用于外部通信的物理适配器,并选择外部端口配置文件。

    为外部连接创建另一个逻辑交换机

  5. 对主机组中的所有 Hyper-V 主机执行相同的操作。

这是计算机特定主机组的一次性配置。 完成此设置后,可在 Azure Pipelines 生成和发布中使用 SCVMM 扩展来动态预配隔离的虚拟机网络。

返回到任务列表

创建所需的虚拟网络拓扑

隔离的虚拟网络大致可分为三种拓扑。

拓扑 1:AD 支持的独立 VM

  • 具有 Internet/TFS 连接的边界 VM。

  • 在边界 VM 上安装的 Azure Pipelines/TFS 部署组代理。

  • 如果想要使用本地 Active Directory 域,则为 AD-DNS VM。

  • 部署和测试应用的隔离应用 VM。

    拓扑 1 AD 支持的隔离虚拟机

拓扑 2:非 AD 支持的隔离 VM

  • 具有 Internet/TFS 连接的边界 VM。

  • 在边界 VM 上安装的 Azure Pipelines/TFS 部署组代理。

  • 部署和测试应用的隔离应用 VM。

    拓扑 2 非 AD 支持的隔离虚拟机

拓扑 3:AD 支持的非隔离 VM

  • 具有 Internet/TFS 连接的边界 VM。

  • 在边界 VM 上安装的 Azure Pipelines/TFS 部署组代理。

  • 如果想要使用本地 Active Directory 域,则为 AD-DNS VM。

  • 也连接到外部网络的应用 VM(在其中部署和测试应用)。

    拓扑 3 AD 支持的非隔离虚拟机

可以使用 SCVMM 扩展创建上述任何拓扑,如以下步骤所示。

  1. 打开 Azure Pipelines 实例并安装 SCVMM 扩展(如果尚未安装)。

    SCVMM 任务提供了一种更高效的方式来使用生成和发布管道执行实验室管理操作。 可以管理 SCVMM 环境、预配隔离的虚拟网络,以及实现“生成-部署-测试”方案。

  2. 在生成或发布管道中,添加新的 SCVMM 任务。

  3. SCVMM 任务中,选择要在其中预配虚拟网络的 SCVMM 服务器的服务连接,然后选择使用模板/存储的 VM 和 VHD 新建虚拟机来预配 VM。

    为 SCVMM 服务器选择服务连接

  4. 可以从模板、存储的 VM 和 VHD/VHDx 创建 VM。 选择适当的选项,并输入 VM 名称和相应的源信息。

    选择从模板、存储的虚拟机和 VHD 或 VHDx 创建虚拟机的选项

  5. 如果拓扑 12,请将 VM 网络名称为空,这将清除已创建 VM 中存在的所有旧 VM 网络(如果有)。 对于拓扑 3,必须在此处提供有关外部 VM 网络的信息。

    指定拓扑设置

  6. 输入要在其中预配隔离网络的主机的云名称。 对于私有云,请确保添加到云中的主机连接到上述同一逻辑交换机和外部交换机。

    输入云名称

  7. 选择网络虚拟化选项以创建虚拟化层。

    创建虚拟化层

  8. 根据要创建的拓扑,确定网络是否需要 Active Directory VM。 例如,要创建拓扑 2(AD 支持的隔离网络),则需要 Active Directory VM。 选中添加 Active Directory VM 复选框,输入 AD VM 名称和存储的 VM 源。 另请输入 AD VM 源中配置的静态 IP 地址和 DNS 后缀。

    确定网络是否需要 Active Directory VM

  9. 输入要创建的 VM 网络和子网的设置,以及在上一节(逻辑网络)中创建的备用逻辑网络。 确保 VM 网络名称是唯一的。 如果可能,请追加发布名称,以便稍后进行跟踪。

    输入 VM 网络和子网的设置

  10. 边界虚拟机选项部分中,设置创建边界 VM 以与 Azure Pipelines/TFS 通信。 这将作为外部通信的入口点。

  11. 输入边界 VM 名称和源模板(边界 VM 源应始终为 VM 模板),并输入为外部通信创建的现有外部 VM 网络的名称。

    输入边界 VM 名称和源模板

  12. 提供有关配置边界 VM 代理以与 Azure Pipelines/TFS 通信的详细信息。 可以配置部署代理或自动化代理。 此代理将用于应用部署。

    配置边界 VM 代理以与 TFS 或 Azure Pipelines 通信

  13. 确保提供的代理名称是唯一的。 这将用作后续作业属性中的需求,以便选择正确的代理。 如果选择了部署组代理选项,此参数将替换为标记的值,该值也必须是唯一的。

  14. 在创建模板之前,请确保边界 VM 模板已下载并保存在 VHD 中的代理配置文件。 将此路径用作上述代理安装路径。

启用生成-部署-测试方案

  1. 在管道中,在网络虚拟化作业之后创建新作业。

  2. 根据作为边界 VM 预配的一部分而创建的边界 VM 代理(部署组代理或自动化代理),选择部署组作业代理作业

  3. 在作业属性中,选择适当的部署组或自动化代理池。

  4. 对于自动化池,则为 Agent.Name 值添加一个新的需求。 输入网络虚拟化作业中使用的唯一名称。 对于部署组作业,必须在组计算机的属性中设置标记。

    输入代理需求或标记名称

  5. 在作业中,添加部署和测试所需的任务。

    添加部署和测试所需的任务

  6. 测试完成后,可以使用删除 VM 任务选项销毁 VM。

现在可以从此发布管道创建发布。 每个版本都会动态预配隔离的虚拟网络,并在环境中运行部署和测试任务。 可以在发布摘要中找到测试结果。 测试完成后,可以自动解除环境授权。 只需从 Azure Pipelines 中进行选择,即可根据需要创建任意数量的环境。

返回到任务列表

另请参阅

常见问题解答

帮助和支持