共用方式為


設定受控DevOps集區網路功能

受控DevOps集區代理程式可以設定為在隔離的虛擬網路中執行,或設定為現有的虛擬網路。 本文說明如何設定受控DevOps集區,以在虛擬網路中執行代理程式。

將代理程式新增至您自己的虛擬網路

針對下列案例,您可能想要將代理程式從受控 DevOps 集區新增至您自己的虛擬網路:

  • 您的 CI/CD 代理程式必須透過 Express Route 等服務存取僅可在公司網路中使用的資源
  • 您的 CI/CD 代理程式必須存取隔離至私人端點的資源
  • 您想要藉由攜帶自己的 VNet 與公司特定的防火牆規則來隔離 CI/CD 基礎結構
  • 任何其他無法透過現成受控DevOps集區網路相關功能達成的唯一使用案例

您可以使用下列步驟,將集區的代理程式新增至虛擬網路。

  1. 建立或帶入您的虛擬網路和子網
  2. 將子網委派給 Microsoft.DevOpsInfrastructure/pools
  3. 將子網與您的受控DevOps集區產生關聯

先前的步驟會委派子網供集區獨佔存取,而子網無法供其他集區或資源使用。 若要將多個集區連線到相同的虛擬網路,可以使用多個子網,每個子網都會與其自己的集區相關聯。

建立或帶入您的虛擬網路和子網

子網必須有足夠的地址空間,以容納您想要關聯的集區大小上限(在子網中包含 Azure 保留的 5 個 IP 位址)。 如果您使用 Express Route,您必須暫時卸載或變更資源群組上的管理鎖定,以允許寫入。

重要

受控 DevOps 集區和虛擬網路必須位於相同的區域,或者當您嘗試建立集區或更新網路組態時,會收到類似下列的錯誤。 Virtual network MDPVN is in region eastus, but pool mdpnonprodsub is in region australiaeast. These must be in the same region.

授與讀者和網路參與者對 DevOpsInfrastructure 服務主體的存取權

確定 DevOpsInfrastructure 主體在虛擬網路上具有下列存取權:

  • ReaderNetwork Contributor
  • 或將下列許可權新增至自訂角色:
    • Microsoft.Network/virtualNetworks/*/read
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action
    • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write
    • Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/delete

為服務關聯連結存取建立自定義角色。 您可以在 [存取控制] 索引卷標的資源群組或訂用帳戶層級建立範例角色,如下列範例所示。

自訂角色許可權的螢幕快照。

檢查 DevOpsInfrastructure 主體存取

  1. 選擇 虛擬網路的訪問控制 (IAM), 然後選擇 [ 檢查存取權]。

    子網路委派的 VNet 許可權螢幕快照。

  2. 搜尋 DevOpsInfrastructure 並加以選取。

    選取 AzureDevOpsInfrastructure 主體的螢幕快照。

  3. 確認 讀取者 存取權。 確認 已 Microsoft.Network/virtualNetworks/subnets/join/action指派、 Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/actionMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write 存取權。 您的自定義角色應該會出現在這裡。

    VNet 許可權的螢幕快照。

  4. 如果 DevOpsInfrastructure 沒有這些許可權,請為虛擬網路選擇 訪問控制 (IAM) 來新增這些許可權,然後選擇 [ 授與此資源的 存取權],並加以新增。

將子網委派給 Microsoft.DevOpsInfrastructure/pools

子網必須委派給 Microsoft.DevOpsInfrastructure/pools 要使用的 。 在入口網站中開啟子網屬性,然後選取 Microsoft.DevOpsInfrastructure/pools [子網委派] 區段底下的 ,然後選擇 [ 儲存]。

設定子網委派的螢幕快照。

這會委派集區獨佔存取的子網,而子網無法供其他集區或資源使用。 若要將多個集區連線到相同的虛擬網路,必須使用多個子網,每個子網都已委派並與自己的集區相關聯。 如需子網委派的詳細資訊,請參閱 這裡

將子網委派給 Microsoft.DevOpsInfrastructure/pools之後,即可更新集區以使用子網。

將子網與您的受控DevOps集區產生關聯

  1. 如果您要建立新的集區,請移至 [網络] 索引標籤。若要更新現有的集區,請移至 [>網络] ,然後選擇 [插入至現有虛擬網络的代理程式]、[設定]。

    [設定] 選項的螢幕快照。

  2. 選擇您委派給 的 [用帳戶]、[虛擬網絡] 和 [子網],然後選擇 [Microsoft.DevOpsInfrastructure/pools]。

    將子網關聯至集區的螢幕快照。

網路更新完成後,集區中新建立的資源將會使用委派的子網。

限制輸出連線能力

如果您的網路 (NSG、防火牆等) 上已設定系統來限制輸出連線,您必須確定可以存取下列網域,否則您的受控 DevOps 集區將無法運作。 除非另有說明,否則全部都是 HTTPS。

  • 我們服務所依賴的高度安全端點:
    • *.prod.manageddevops.microsoft.com - 受控DevOps集區端點
    • rmprodbuilds.azureedge.net - 背景工作二進位檔
    • vstsagentpackage.azureedge.net - Azure DevOps 代理程式 CDN 位置
    • *.queue.core.windows.net - 與受控 DevOps 集區服務通訊的背景工作佇列
    • server.pipe.aria.microsoft.com - 常見的用戶端遙測解決方案(以及代理程式集區驗證延伸模組等使用)
    • azure.archive.ubuntu.com - 布建 Linux 機器 - 這是 HTTP,而不是 HTTPS
    • www.microsoft.com - 布建 Linux 機器
    • security.ubuntu.com - 布建 Linux 機器
  • 較不安全、更開放且服務所依賴的端點:
    • 我們的服務需要:
      • packages.microsoft.com - 布建 Linux 機器
      • ppa.launchpad.net - 布建Ubuntu機器
      • dl.fedoraproject.org - 布建特定Linux散發版本
    • Azure DevOps 代理程式需要:
      • dev.azure.com
      • *.services.visualstudio.com
      • *.vsblob.visualstudio.com
      • *.vssps.visualstudio.com
      • *.visualstudio.com 這些專案是所需的最小網域。 如果您有任何問題,請參閱 Azure DevOps allowlist 以取得所需的網域完整清單。
  • Azure 相關端點:Azure 虛擬機可能會透過子網將流量路由傳送至特定 Azure 功能。 針對這些要求,您可以選擇直接透過 Azure 路由要求,或透過網路啟用存取。
    1. 設定 Azure 流量以透過服務端點運行

      直接透過 Azure 路由傳送流量,可避免將輸送量新增至 NSG 或防火牆,且不需要將下列選項所列的網域列入允許清單。

      例如,使用 數據磁碟 功能,將牽涉到對 Azure 記憶體的網路呼叫。 在您的網路上啟用 Microsoft.Storage 服務端點,會直接透過 Azure 路由傳送流量,避免網路規則並降低負載。

    2. 如果您想要避免透過服務端點路由傳送流量,這些是為特定功能列入允許清單的網域。

如果您將 Azure DevOps Pipeline 設定為在容器內執行,您也必須允許列出容器映像的來源(Docker 或 ACR)。

設定 Azure DevOps 代理程式以在 Proxy 後方執行

如果您在映像上設定 Proxy 服務,並想要在受控 DevOps 集區上執行的工作負載在此 Proxy 後方執行,您必須在映像上新增下列環境變數。

  • VSTS_AGENT_INPUT_PROXYURL - 設定的 Proxy URL,以在後方執行
  • VSTS_AGENT_INPUT_PROXYUSERNAME - 使用 Proxy 所需的用戶名稱
  • VSTS_AGENT_INPUT_PROXYPASSWORD - 使用 Proxy 的密碼。

針對 Windows,這些環境變數應該是系統環境變數,而針對 Linux,這些變數應該位於 /etc/environment 檔案中。 在映像上設定這些系統變數不正確或未設定 Proxy 服務,會導致布建新的代理程序失敗,併發生網路連線問題。

如果您要從 Azure 虛擬機擴展集代理程式移轉,而且已經在映射上使用 Proxy 環境變數,如 Azure 虛擬機擴展集代理程式- 自定義管線代理程式組態中所述,就不需要變更。

另請參閱