Dela via


Konfigurera nätverk för hanterade DevOps-pooler

Hanterade DevOps-poolagenter kan konfigureras att köras i ett isolerat virtuellt nätverk eller i ett befintligt virtuellt nätverk. Den här artikeln beskriver hur du konfigurerar din hanterade DevOps-pool för att köra agenter i ditt virtuella nätverk.

Lägga till agenter i ditt eget virtuella nätverk

Du kanske vill lägga till agenter från hanterade DevOps-pooler i ditt eget virtuella nätverk för scenarier som:

  • Dina CI/CD-agenter måste komma åt resurser som endast är tillgängliga i företagets nätverk via en tjänst som Express Route
  • Dina CI/CD-agenter måste komma åt resurser som är isolerade till privata slutpunkter
  • Du vill nätverksisolera CI/CD-infrastrukturen genom att ta med ditt eget virtuella nätverk med företagets specifika brandväggsregler
  • Andra unika användningsfall som inte kan uppnås med färdiga nätverksrelaterade funktioner för Hanterade DevOps-pooler

Du kan lägga till poolens agenter i det virtuella nätverket med hjälp av följande steg.

  1. Skapa eller ta med ditt virtuella nätverk och undernät
  2. Delegera undernätet till Microsoft.DevOpsInfrastructure/pools
  3. Associera undernätet med din hanterade DevOps-pool

Föregående steg delegerar undernätet för exklusiv åtkomst av poolen och undernätet kan inte användas av andra pooler eller resurser. För att ansluta flera pooler till samma virtuella nätverk kan flera undernät användas, var och en delegerad och associerad med sin egen pool.

Skapa eller ta med ditt virtuella nätverk och undernät

Undernätet måste ha tillräckligt med adressutrymme för att rymma den maximala poolstorleken för den pool som du vill associera (inkludera de 5 IP-adresserna som Azure-reserver i undernätet). Om du använder Express Route måste du tillfälligt släppa eller ändra hanteringslåset på resursgruppen för att tillåta skrivningar.

Viktigt!

Den hanterade DevOps-poolen och det virtuella nätverket måste finnas i samma region, annars får du ett fel som liknar följande när du försöker skapa poolen eller uppdatera nätverkskonfigurationen. Virtual network MDPVN is in region eastus, but pool mdpnonprodsub is in region australiaeast. These must be in the same region.

Bevilja läsare och nätverksbidragsgivare åtkomst till tjänstehuvudnamnet för DevOpsInfrastructure.

Kontrollera att DevOpsInfrastructure-huvudnamnet har följande åtkomst i det virtuella nätverket:

  • Reader och Network Contributor
  • Eller lägg till följande behörighet till en anpassad roll:
    • 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

Skapa en anpassad roll för åtkomsten till Service Association Link . En exempelroll kan skapas på resursgrupps- eller prenumerationsnivå på fliken Åtkomstkontroll, som du ser i följande exempel.

Skärmbild av behörigheter för anpassade roller.

Så här kontrollerar du huvudåtkomsten för DevOpsInfrastructure

  1. Välj Åtkomstkontroll (IAM) för det virtuella nätverket och välj Kontrollera åtkomst.

    Skärmbild av VNet-behörigheter för delegering av undernät.

  2. Sök efter DevOpsInfrastructure och välj den.

    Skärmbild av att välja princip för AzureDevOpsInfrastructure.

  3. Kontrollera åtkomsten till läsare . Kontrollera att Microsoft.Network/virtualNetworks/subnets/join/action, Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action och Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write åtkomst har tilldelats. Din anpassade roll bör visas här.

    Skärmbild av VNet-behörigheter.

  4. Om DevOpsInfrastructure inte har dessa behörigheter lägger du till dem genom att välja Åtkomstkontroll (IAM) för det virtuella nätverket och välja Bevilja åtkomst till den här resursen och lägga till dem.

Delegera undernätet till Microsoft.DevOpsInfrastructure/pools

Undernätet måste delegeras till det Microsoft.DevOpsInfrastructure/pools för att kunna användas. Öppna undernätsegenskaperna i portalen och välj Microsoft.DevOpsInfrastructure/pools under avsnittet Delegering av undernät och välj Spara.

Skärmbild av konfiguration av delegering av undernät.

Detta delegerar undernätet för exklusiv åtkomst för poolen och undernätet kan inte användas av andra pooler eller resurser. För att ansluta flera pooler till samma virtuella nätverk måste flera undernät användas, var och en delegerad och associerad med sin egen pool. Mer information om delegering av undernät finns här.

När undernätet har delegerats till Microsoft.DevOpsInfrastructure/poolskan poolen uppdateras för att använda undernätet.

Associera undernätet med din hanterade DevOps-pool

  1. Om du skapar en ny pool går du till fliken Nätverk. Om du vill uppdatera en befintlig pool går du till > och väljer Agenter som matas in i det befintliga virtuella nätverket Konfigurera.

    Skärmbild av alternativet Konfigurera.

  2. Välj prenumerationen, det virtuella nätverket och undernätet som du delegerade till Microsoft.DevOpsInfrastructure/poolsoch välj Ok.

    Skärmbild av hur du kopplar undernätet till poolen.

När nätverksuppdateringen är klar använder den nyligen skapade resursen i poolen det delegerade undernätet.

Viktigt!

Placera inte ett borttagningslås i det virtuella nätverket när du uppdaterar dina pooler. Under en pooluppdateringsoperation skapar Hanterade DevOps-pooler en Service Association Link (SAL) på undernätet. Om en uppdatering misslyckas försöker Hanterade DevOps-pooler rensa SAL, men om det finns ett borttagningslås får du ett InUseSubnetCannotBeDeleted fel och Hanterade DevOps-pooler kan inte ta bort SAL:en, vilket lämnar undernätet i ett låst tillstånd (kan inte tas bort). Lös problemet genom att ta bort borttagningslåset och försöka uppdatera igen.

Mer information finns i Lås dina Azure-resurser för att skydda din infrastruktur – Överväganden innan du tillämpar låsen.

Begränsa utgående anslutning

Om du har system på plats i nätverket (NSG, brandvägg osv.) som begränsar utgående anslutning, måste vissa slutpunkter tillåtas för att fullständigt stödja Managed DevOps-pooler. Dessa slutpunkter är indelade i globalt nödvändiga slutpunkter (krävs på alla hanterade DevOps-pooler) och slutpunkter som krävs för vissa scenarier. Alla slutpunkter är HTTPS, om inget annat anges.

  • Nödvändiga slutpunkter för start av hanterad DevOps-pool – Utan att tillåtalistning av dessa slutpunkter kommer datorer inte att kunna anslutas som en del av vår tjänst, och du kommer inte att kunna köra pipelines på den hanterade DevOps-poolen
    • *.prod.manageddevops.microsoft.com – Slutpunkt för hanterade DevOps-pooler som används för att kommunicera med tjänsten Hanterade DevOps-pooler.
    • rmprodbuilds.azureedge.net – Används för att ladda ned arbetsbinärfiler och startskript för hanterade DevOps-pooler. (Agentdelen av arbetsbinärfilerna laddas ned från rm-agent.prod.manageddevops.microsoft.com (tidigare nedladdad från agent.prod.manageddevops.microsoft.com) som omfattas av den tidigare obligatoriska *.prod.manageddevops.microsoft.com posten.)
    • *.queue.core.windows.net – Arbetskö för kommunikation med tjänsten Hanterade DevOps-pooler.
  • Nödvändiga slutpunkter för att ansluta till Azure DevOps – utan att tillåta att dessa slutpunkter listas kan datorer komma online och till och med gå till ett "allokerat" tillstånd, men de kan inte kommunicera med ADO eftersom VSTS-aktivitetsagenten inte kan ansluta eller inte kan starta.
    • download.agent.dev.azure.com – Azure DevOps-agentens CDN-plats som används för att ladda ned Azure DevOps-agenten (tidigare vstsagentpackage.azureedge.net – mer information finns i Edgio CDN för Azure DevOps dras tillbaka).
    • dev.azure.com – Krävs för att hantera kommunikation med Azure DevOps
    • Förbereda Linux-datorer – dessa slutpunkter krävs för att starta Ubuntu-datorer, men de behövs inte om en pool bara använder Windows. Som en del av konfigurationen av Azure DevOps-uppgiftsagenten läggs några nödvändiga paket till och en apt-get körs, vilket misslyckas utan att dessa tillåts.
      • azure.archive.ubuntu.com – Etablera Linux-datorer – det här är HTTP (port 80), inte HTTPS (port 443)
      • www.microsoft.com – Konfigurera Linux-datorer
      • security.ubuntu.com – Konfigurera Linux-datorer
      • packages.microsoft.com – Konfigurera Linux-datorer
      • ppa.launchpad.net – Etablera vissa specifika Linux-distributioner
      • dl.fedoraproject.org – Etablera vissa Linux-distributioner
  • Valfritt, men krävs för att specifika Azure DevOps-funktioner ska fungera på dina pipelines. I följande uppsättning kan jokertecknet ersättas med den specifika Azure DevOps-organisation som är värd för din pipeline. Om din organisation till exempel heter contosokan du använda contoso.services.visualstudio.com i stället för *.services.visualstudio.com.
    • *.services.visualstudio.com
    • *.vsblob.visualstudio.com – Används för artefakter, både uppladdning och användning
    • *.vssps.visualstudio.com – Används för autentisering med Azure DevOps för vissa funktioner
    • *.visualstudio.com

      Anmärkning

      De tidigare registreringarna är de minsta nödvändiga domänerna som krävs. Om du har problem läser du Tillåtna IP-adresser och domän-URL:er för Azure DevOps för den fullständiga listan över nödvändiga domäner.

  • Azure-relaterade slutpunkter: Virtuella Azure-datorer kan dirigera trafik till vissa Azure-funktioner via ditt undernät. För dessa begäranden har du möjlighet att dirigera begäranden direkt via Azure eller aktivera åtkomst via nätverket.
    1. Konfigurera Azure-trafik så att den körs via tjänstslutpunkter

      Routning av trafik via Azure undviker att lägga till dataflöde direkt till dina NSG:er eller brandväggar och kräver inte att du vitlistar de domäner som listas i det följande alternativet.

      Om du till exempel använder funktionen datadisk kommer nätverksanrop till Azure Storage att ingå. Om du aktiverar Microsoft.Storage tjänstslutpunkt i nätverket dirigeras trafiken direkt via Azure, vilket undviker dina nätverksregler och minskar belastningen.

    2. Om du vill undvika att dirigera trafik via tjänstslutpunkter är dessa domäner för att tillåta lista över specifika funktioner.

  • Akamai CDN-leverans-IP-adresser: Från och med 1 maj 2025 övergår Azure DevOps CDN-tillgångar till en lösning som hanteras av Akamai och Azure Front Door. Kontrollera att nätverket har utgående åtkomst till Akamai IP-intervall. Mer information finns i:

Om du konfigurerar din Azure DevOps-pipeline så att den körs i en container måste du även tillåta att containeravbildningens källa (Docker eller ACR) anges.

Validera slutpunktsanslutning

För att bekräfta att du kan använda ett visst undernät med Hanterade DevOps-pooler kan du köra följande skript på en resurs i det undernätet för att verifiera att nätverksflödet har konfigurerats för att nå alla dessa tillgängliga slutpunkter och dessutom kontrollplanet Managed DevOps.

Viktigt!

Du måste köra det här skriptet på en resurs som finns i undernätet, till exempel en virtuell dator eller container, för att verifiera att nätverkssökvägen är öppen från det undernätet till de slutpunkter som krävs.

Om du vill köra skriptet med PowerShell Core eller PowerShell 5 eller senare sparar du följande skript som ValidateMDPEndpoints.ps1 och kör följande PowerShell-kommando: .\ValidateMDPEndpoints.ps1 -organization "<your-organization>"

# ValidateMDPEndpoints.ps1
param (
    [string]$organization
)
$azureDevOpsUris = @(
    "https://dev.azure.com",
    "https://vssps.dev.azure.com",
    "https://vsrm.dev.azure.com",
    "https://management.azure.com",
    "https://login.microsoftonline.com",
    "https://graph.microsoft.com",
    "https://aadcdn.msftauth.net",
    "https://${organization}.visualstudio.com",
    "https://${organization}.vsrm.visualstudio.com",
    "https://${organization}.vstmr.visualstudio.com",
    "https://${organization}.pkgs.visualstudio.com",
    "https://${organization}.vssps.visualstudio.com",
    "https://download.agent.dev.azure.com",
    "download.agent.dev.azure.com"
)
$managedDevOpsPoolsControlPlaneUris = @(
    # List of agent queue endpoints - maps to *.queue.core.windows.net
    "https://rmprodaedefaultcq.queue.core.windows.net",
    "https://rmprodbrsdefaultcq.queue.core.windows.net",
    "https://rmprodcncdefaultcq.queue.core.windows.net",
    "https://rmprodcusdefaultcq.queue.core.windows.net",
    "https://rmprodeus2defaultcq.queue.core.windows.net",
    "https://rmprodgwcdefaultcq.queue.core.windows.net",
    "https://rmprodincdefaultcq.queue.core.windows.net",
    "https://rmprodneudefaultcq.queue.core.windows.net",
    "https://rmprodseadefaultcq.queue.core.windows.net",
    "https://rmprodszndefaultcq.queue.core.windows.net",
    "https://rmproduksdefaultcq.queue.core.windows.net",
    "https://rmprodwcusdefaultcq.queue.core.windows.net",
    "https://rmprodwus3defaultcq.queue.core.windows.net",
    # CDN for downloading the Managed DevOps Pools agent - maps to *.prod.managedevops.microsoft.com
    "rm-agent.prod.manageddevops.microsoft.com"
    # List of control plane endpoints - maps to *.manageddevops.microsoft.com
    "default.ae.prod.manageddevops.microsoft.com",
    "default.brs.prod.manageddevops.microsoft.com",
    "default.cnc.prod.manageddevops.microsoft.com",
    "default.cus.prod.manageddevops.microsoft.com",
    "default.eus2.prod.manageddevops.microsoft.com",
    "default.gwc.prod.manageddevops.microsoft.com",
    "default.inc.prod.manageddevops.microsoft.com",
    "default.neu.prod.manageddevops.microsoft.com",
    "default.sea.prod.manageddevops.microsoft.com",
    "default.szn.prod.manageddevops.microsoft.com",
    "default.uks.prod.manageddevops.microsoft.com",
    "default.wcus.prod.manageddevops.microsoft.com",
    "default.wus3.prod.manageddevops.microsoft.com"
)
$unreachableUris = @()
foreach ($uri in $azureDevOpsUris) {
    try {
        $hostName = ($uri -replace "^https?://", "") -replace "/.*", ""
        $connection = Test-NetConnection -ComputerName $hostName -Port 443 -WarningAction SilentlyContinue
        if (-not $connection.TcpTestSucceeded) {
            $unreachableUris += $uri
        }
    } catch {
        $unreachableUris += $uri
    }
}
if ($unreachableUris.Count -eq 0) {
    Write-Output "All Azure DevOps endpoints are reachable."
} else {
    Write-Output "The following Azure DevOps endpoints could not be reached:"
    $unreachableUris | ForEach-Object { Write-Output $_ }
}
foreach ($uri in $managedDevOpsPoolsControlPlaneUris) {
    try {
        $hostName = ($uri -replace "^https?://", "") -replace "/.*", ""
        $connection = Test-NetConnection -ComputerName $hostName -Port 443 -WarningAction SilentlyContinue

        if (-not $connection.TcpTestSucceeded) {
            $unreachableUris += $uri
        }
    } catch {
        $unreachableUris += $uri
    }
}
if ($unreachableUris.Count -eq 0) {
    Write-Output "All Azure Managed DevOps Pools endpoints are reachable."
} else {
    Write-Output "The following Managed DevOps Pools endpoints could not be reached:"
    $unreachableUris | ForEach-Object { Write-Output $_ }
}

Konfigurera Azure DevOps-agenten så att den körs bakom en proxy

Om du har konfigurerat en proxytjänst på din avbildning och vill att dina tjänster i din hanterade DevOps-pool ska köras bakom den här proxyn, måste du lägga till följande miljövariabler i din avbildning.

  • VSTS_AGENT_INPUT_PROXYURL – URL:en för den konfigurerade proxyn som ska köras bakom
  • VSTS_AGENT_INPUT_PROXYUSERNAME – Användarnamnet som krävs för att använda proxyn
  • VSTS_AGENT_INPUT_PROXYPASSWORD – Lösenordet för att använda proxyn.

För Windows ska dessa miljövariabler vara systemmiljövariabler, och för Linux ska dessa variabler finnas i filen /etc/environment . Om du anger dessa systemvariabler felaktigt eller utan en konfigurerad proxytjänst på avbildningen misslyckas provisioneringen av nya agenter på grund av problem med nätverksanslutning.

Om du migrerar från Azure Virtual Machine Scale Set-agenter och redan använder proxymiljövariablerna på avbildningen, som beskrivs i Azure Virtual Machine Scale Set-agenter – Anpassa pipelineagentkonfiguration, bör inga ändringar behöva göras.

Se även