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

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

注意

在 Microsoft Team Foundation Server (TFS) 2018 和更低版本中,生成和发布管道被称为“定义”,运行被称为“生成”,服务连接被称为“服务终结点”,阶段被称为“环境”,而作业被称为“阶段” 。

网络虚拟化提供在共享物理网络上创建多个虚拟网络的功能。 可以使用 SCVMM 网络虚拟化概念创建独立虚拟网络。 VMM 使用逻辑网络和相应的 VM 网络的概念来创建虚拟机的独立网络。

Logical Networks and corresponding VM Networks

  • 可以创建跨主机群集或私有云中不同主机的虚拟机隔离网络。
  • 可以从驻留在同一台主机中的不同网络的 VM,并且仍彼此隔离。
  • 可以从所选 VM 网络的任何 IP 池定义 IP 地址。

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

若要创建虚拟网络隔离环境,请执行以下操作:

  • 确保满足 本部分所述的先决条件条件。

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

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

  • 启用生成-部署-测试方案,如 以下步骤所示。

  • 可以使用 SCVMM 执行一系列操作来管理 VM。 有关示例,请参阅 SCVMM 部署

先决条件

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

按照以下步骤验证安装程序是否正常工作:

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

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

    Run Get-NetVirtualizationProviderAddress

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

    Ping other machines

返回到任务列表

在 SCVMM 中创建网络虚拟化层

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

创建逻辑网络

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

  2. 转到 Fabric -Networking ->>Logical Networks ->Create new Logical Network

    Create a new Logical Network

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

    Name the network and select One connected Network

  4. 添加新 的网络站点 ,然后选择网络站点将限定到的主机组。 输入用于在 Hyper-V 主机组中配置物理 NIC 的 VLAN ID,以及相应的可路由 IP 子网 () 。 为了帮助跟踪,请将网络站点名称更改为令人难忘的名称。

    Add a new Network Site

  5. 选择 “下一步 ”并 保存

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

    Create an IP pool

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

    Provide the routable IP address range

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

    Provide the gateway address

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

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

    Create a Logical network for external internet access

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

    Add a network site and select the same host group

  12. 选择 “下一步 ”并 保存

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

    Viewing the result

创建端口配置文件

  1. 转到 Fabric ->Networking ->Port 配置文件创建 Hyper-V 端口配置文件

    Creating a Hyper-V port profile

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

    Setting the load balancing algorithm

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

    Enabling Hyper-V Network Virtualization

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

    Creating another Hyper-V port profile for external logical network

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

    Selecting the network site to be used for external communication

创建逻辑交换机

  1. 转到 Fabric -Networking ->>Logical 交换机创建逻辑交换机

    Creating a Logical Switch

  2. 在入门向导中,选择 “下一步 ”并输入开关的名称,然后选择“ 下一步”。

    Entering a name for the switch

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

    Adding an uplink port profile

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

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

    Creating another logical switch for the external network

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

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

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

    Opening the Virtual Switches tab

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

    Assigning the physical adapter

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

    Creating another logical switch for external connectivity

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

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

返回到任务列表

创建所需的虚拟网络拓扑

隔离的虚拟网络可以广泛分类为三种拓扑。

拓扑 1:AD 支持的独立 VM

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

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

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

  • 部署和测试应用的独立应用 VM。

    Topology 1 AD-backed Isolated VMs

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

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

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

  • 部署和测试应用的独立应用 VM。

    Topology 2 Non-AD backed isolated VMs

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

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

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

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

  • 还连接到部署和测试应用的外部网络的应用 VM。

    Topology 3 AD-backed non-isolated VMs

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

  1. 打开 TFS 或Azure Pipelines实例,并安装 SCVMM 扩展(如果尚未安装)。 有关详细信息,请参阅 SCVMM 部署

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

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

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

    Selecting a service connection for the SCVMM server

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

    Choosing the option to create VMs from templates, stored VMs, and VHD or VHDx

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

    Specifying the topology settings

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

    Entering the Cloud Name

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

    Creating the virtualization layer

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

    Deciding if the network requires an Active Directory VM

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

    Entering the settings for the VM Network and subnet

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

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

    Entering the boundary VM name and the source template

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

    Configuring the boundary VM agent to communicate with TFS or Azure Pipelines

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

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

启用 build-deploy-test 方案

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

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

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

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

    Entering an agent demand or tag name

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

    Adding the tasks required for deployment and testing

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

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

返回到任务列表

另请参阅

常见问题解答

我在本地使用 TFS,但没有看到其中某些功能。 为什么看不到?

其中某些功能仅在 Azure Pipelines 上可用,在本地尚不可用。 如果你已升级到最新版本的 TFS,则可在本地使用这些功能。

帮助和支持