Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile configurare gli agenti di pool DevOps gestiti per l'esecuzione in una rete virtuale isolata o in una rete virtuale esistente. Questo articolo descrive come configurare il pool per eseguire gli agenti nella rete virtuale.
Scegliere il tipo di rete
I pool DevOps gestiti supportano due tipi di configurazioni di rete:
- Rete virtuale isolata: ogni pool ottiene la propria rete virtuale isolata creata e gestita dal servizio Pool devOps gestiti.
-
Agenti inseriti nella rete virtuale esistente: è possibile usare la propria rete virtuale e la propria subnet. Tutte le macchine virtuali create per il pool useranno tale subnet e nessun'altra risorsa sarà in grado di usare la subnet. È possibile aggiungere agenti da pool DevOps gestiti alla propria rete virtuale per scenari come:
- Gli agenti di integrazione continua e recapito continuo (CI/CD) devono accedere alle risorse disponibili solo nella rete aziendale tramite un servizio come Azure ExpressRoute.
- Gli agenti di CI/CD devono accedere a risorse che sono isolate tramite endpoint privati.
- Vuoi isolare la tua infrastruttura CI/CD portando la tua rete virtuale con regole del firewall specifiche per la tua azienda.
- Qualsiasi altro caso d'uso univoco che non può essere ottenuto dalle funzionalità di rete dei pool devOps gestiti predefiniti.
Rete virtuale isolata
Per impostazione predefinita, tutti i pool usano una rete virtuale fornita da Microsoft, che limita tutto il traffico in ingresso e include le opzioni di configurazione del traffico in uscita seguenti.
- La connettività di accesso in uscita predefinita è l'impostazione predefinita corrente, che consente tutto il traffico in uscita usando un indirizzo IP fornito da Microsoft. L'accesso in uscita predefinito per le macchine virtuali in Azure è pianificato per essere ritirato. Quando l'accesso in uscita predefinito viene ritirato, i pool verranno configurati con un indirizzo IP statico per impostazione predefinita.
- Anziché usare l'accesso in uscita predefinito, è possibile configurare il pool in modo da usare fino a 16 indirizzi IP statici in uscita. I pool DevOps gestiti creeranno un gateway NAT nella stessa area del pool per fornire gli indirizzi IP. Questa configurazione consente di consentire indirizzi IP specifici nei servizi esterni a cui devono accedere le pipeline.
- Il gateway NAT comporta costi aggiuntivi di Azure. È possibile modellare la quantità di costi usando il calcolatore dei costi di Azure. Per altre informazioni, vedere Prezzi del gateway NAT di Azure.
Importante
Se si modifica il numero di indirizzi IP statici dopo la creazione del pool, gli indirizzi IP sono soggetti a modifica e sarà necessario ottenere i nuovi indirizzi IP e aggiornare l'elenco di indirizzi consentiti nei servizi esterni al termine dell'operazione di aggiornamento.
Per configurare le impostazioni indirizzo IP durante la creazione di un pool, passare alla scheda Rete . Per aggiornare un pool esistente, passare a Impostazioni>rete.
Scegliere Nessuno per Instradamento attraverso indirizzi IP pubblici per utilizzare l'accesso in uscita predefinito.
Scegliere Indirizzi IP forniti da Microsoft per configurare indirizzi IP statici in uscita e specificare il numero di indirizzi IP statici che si desidera usare. I pool DevOps gestiti creano automaticamente un gateway NAT e gestiscono gli indirizzi IP.
Annotazioni
Si verifica un problema noto: se il pool è configurato con un'identità gestita, le chiamate API non restituiranno la ipAddresses proprietà a meno che all'entità servizio DevOpsInfrastructure non venga assegnato il ruolo Operatore identità gestita nell'identità gestita. Per i passaggi dettagliati, vedere Assegnare ruoli di Azure usando il portale di Azure.
La concessione di questo ruolo non è necessaria affinché gli indirizzi IP statici siano funzionali. Senza questa assegnazione di ruolo, è comunque possibile trovare gli indirizzi IP assegnati visualizzandoli nella pagina Rete nel portale di Azure.
Agenti inseriti nella rete virtuale esistente
È possibile configurare gli agenti del pool per l'uso della rete virtuale attenendosi alla procedura seguente:
- Creare o portare la rete virtuale e la subnet.
-
Delegare la subnet a
Microsoft.DevOpsInfrastructure/pools. - Associare la subnet al proprio pool.
I passaggi precedenti delegano la subnet per l'accesso esclusivo da parte del pool. Altri pool o risorse non possono usare la subnet.
Un pool può usare più subnet per connettere più pool alla stessa rete virtuale. Ogni subnet viene delegata e associata al proprio pool.
Creare o portare la rete virtuale e la subnet
La subnet deve avere spazio di indirizzi sufficiente per supportare le dimensioni massime del pool che si vuole associare (inclusi i cinque indirizzi IP riservati da Azure nella subnet).
Se si usa ExpressRoute, è necessario consentire le scritture modificando o eliminando temporaneamente il blocco di gestione nel gruppo di risorse.
Importante
Il pool e la rete virtuale devono trovarsi nella stessa area. In caso contrario, viene visualizzato un errore simile al seguente quando si tenta di creare il pool o aggiornare la configurazione di rete: "La rete virtuale MDPVN si trova nell'area eastus, ma il pool mdpnonprodsub si trova nell'area australiaeast. Devono trovarsi nella stessa area".
Concedere l'accesso lettore e contributore di rete al principale del servizio DevOpsInfrastructure
Assicurarsi che l'entità DevOpsInfrastructure abbia accesso Reader e Network Contributor alla rete virtuale.
Anziché usare ruoli predefiniti, è possibile creare un ruolo personalizzato con le autorizzazioni seguenti:
Microsoft.Network/virtualNetworks/*/readMicrosoft.Network/virtualNetworks/subnets/join/actionMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/actionMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/writeMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/delete
Creare un ruolo personalizzato per l'accesso a Service Association Link. È possibile creare un ruolo di esempio a livello di gruppo di risorse o sottoscrizione nella scheda Controllo di accesso , come illustrato nell'esempio seguente.
Controllare l'accesso principale per DevOpsInfrastructure
Selezionare Controllo di accesso (IAM) per la rete virtuale e quindi selezionare Controlla accesso.
Cercare e selezionare DevOpsInfrastructure.
Verificare di avere l'accesso a livello di Reader. Verificare che l'accesso a
Microsoft.Network/virtualNetworks/subnets/join/action,Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/actioneMicrosoft.Network/virtualNetworks/subnets/serviceAssociationLinks/writesia assegnato. Il ruolo personalizzato dovrebbe essere visualizzato qui.
Se l'entità DevOpsInfrastructure non dispone delle autorizzazioni necessarie, aggiungile. Selezionare Controllo di accesso (IAM) per la rete virtuale e quindi selezionare Concedi accesso a questa risorsa.
Delegare la sottorete a Microsoft.DevOpsInfrastructure/pools
Nel portale aprire Proprietà subnet e selezionare Microsoft.DevOpsInfrastructure/pools in Delega subnet. Seleziona Salva.
Questo processo delega la subnet all'accesso esclusivo del pool. Altri pool o risorse non possono usare la subnet. Per connettere più pool alla stessa rete virtuale, è necessario usare più subnet. Ogni subnet deve essere delegata e associata al proprio pool. Altre informazioni sulla delega della subnet sono disponibili in questa panoramica della delega della subnet.
Dopo aver delegato la subnet a Microsoft.DevOpsInfrastructure/pools, è possibile aggiornare il pool per usare la subnet.
Associare la subnet al pool
Per creare un nuovo pool, passare alla scheda Rete. Per aggiornare un pool esistente, passare a Impostazioni>rete e quindi selezionare Agenti inseriti nella rete> virtuale esistenteConfigura.
Selezionare i valori Sottoscrizione, Rete virtuale e Subnet delegati a
Microsoft.DevOpsInfrastructure/poolse quindi selezionare OK.
Al termine dell'aggiornamento di rete, la risorsa appena creata nel pool userà la subnet delegata.
Importante
Non inserire un blocco Di eliminazione nella rete virtuale quando si aggiornano i pool. Durante un'operazione di aggiornamento del pool, i pool di DevOps gestiti creano un collegamento di associazione del servizio nella subnet. Se un aggiornamento non riesce, i pool di DevOps gestiti tentano di pulire il collegamento di associazione del servizio, ma se è presente un blocco di eliminazione , viene visualizzato un InUseSubnetCannotBeDeleted errore. I pool DevOps gestiti non sono in grado di eliminare il collegamento di associazione del servizio, che lascia la subnet in uno stato bloccato (non è possibile eliminarli). Per risolvere il problema, rimuovere il blocco Elimina e ripetere l'operazione di aggiornamento.
Per altre informazioni, vedere Aspetti da considerare prima di applicare blocchi alle risorse di Azure.
Limitare la connettività in uscita
Se nella rete sono presenti sistemi (ad esempio, gruppi di sicurezza di rete o firewall) che limitano la connettività in uscita, è necessario aggiungere determinati endpoint a un elenco di elementi consentiti per supportare completamente i pool devOps gestiti. Questi endpoint sono suddivisi in endpoint necessari a livello globale (necessari in qualsiasi computer che usa pool DevOps gestiti) ed endpoint necessari per determinati scenari. Tutti gli endpoint sono HTTPS, se non diversamente specificato.
Endpoint necessari per l'avvio di pool DevOps gestiti
Se non si aggiungono questi endpoint a un elenco elementi consentiti, i computer non vengono online come parte del servizio Pool di DevOps gestiti e non è possibile eseguire pipeline nel pool:
-
*.prod.manageddevops.microsoft.com: endpoint dei pool DevOps gestiti usato per comunicare con il servizio Pool DevOps gestiti. -
rmprodbuilds.azureedge.net: usato per scaricare i file binari di lavoro dei pool di DevOps gestiti e gli script di avvio. La sezione agente dei file binari dei lavoratori viene scaricata darm-agent.prod.manageddevops.microsoft.com(in precedenza daagent.prod.manageddevops.microsoft.com), ed è coperta dalla voce*.prod.manageddevops.microsoft.comrichiesta precedentemente. -
*.queue.core.windows.net: Coda di lavoro per la comunicazione con il servizio di pool DevOps gestiti.
Endpoint necessari per la connessione ad Azure DevOps
Se non aggiungi questi endpoint a un elenco di autorizzazioni, i computer potrebbero connettersi online e passare a uno stato allocato, ma non riuscire a comunicare con Azure DevOps, perché l'agente attività di Azure DevOps Services potrebbe non essere in grado di connettersi o avviarsi.
-
download.agent.dev.azure.com: posizione della rete di distribuzione di contenuti (CDN) dell'agente di Azure DevOps, utilizzata per scaricare l'agente di Azure DevOps (in precedenzavstsagentpackage.azureedge.net; per ulteriori informazioni, consultare La CDN di Edgio per Azure DevOps viene ritirata). -
dev.azure.com: obbligatorio per gestire la comunicazione con Azure DevOps.
Endpoint necessari per le macchine Linux
Questi endpoint sono necessari per avviare computer Ubuntu, ma non sono necessari se un pool usa solo Windows. Quando si configura l'agente attività di Azure DevOps, vengono aggiunti i pacchetti necessari e viene eseguito un apt-get comando. Questo processo ha esito negativo se gli endpoint seguenti non vengono aggiunti a un elenco di elementi consentiti.
-
azure.archive.ubuntu.com: Preparazione di macchine Linux. Questo endpoint è HTTP (porta 80), non HTTPS (porta 443). -
www.microsoft.com: Preparazione di macchine Linux. -
security.ubuntu.com: Preparazione di macchine Linux. -
packages.microsoft.com: Preparazione di macchine Linux. -
ppa.launchpad.net: provisioning di alcune distribuzioni Linux specifiche. -
dl.fedoraproject.org: configurazione di alcune distribuzioni Linux.
Endpoint necessari per alcune funzionalità di Azure DevOps
Questi endpoint facoltativi sono necessari per le funzionalità di Azure DevOps specifiche da usare nelle pipeline. Nel set seguente, il carattere jolly può essere sostituito con l'organizzazione specifica di Azure DevOps che ospita la pipeline. Ad esempio, se l'organizzazione è denominata contoso, è possibile usare contoso.services.visualstudio.com anziché *.services.visualstudio.com.
*.services.visualstudio.com-
*.vsblob.visualstudio.com: usato sia per il caricamento che per l'utilizzo di artefatti. -
*.vssps.visualstudio.com: usato per l'autenticazione con Azure DevOps per determinate funzionalità. *.visualstudio.com
Annotazioni
Le voci precedenti sono i domini minimi necessari. In caso di problemi, vedere l'elenco completo dei domini necessari in Azure DevOps indirizzi IP consentiti e URL di dominio.
Endpoint correlati ad Azure
Le macchine virtuali di Azure potrebbero instradare il traffico a determinati servizi di Azure tramite la subnet. Per queste richieste, è possibile instradare le richieste direttamente tramite Azure o abilitare l'accesso tramite la rete.
Configurare il traffico di Azure per l'esecuzione tramite gli endpoint di servizio:
È possibile instradare il traffico direttamente tramite Azure per evitare di aggiungere larghezza di banda ai gruppi di sicurezza di rete o ai firewall. Non è necessario aggiungere i domini elencati nell'opzione seguente a un elenco di elementi consentiti.
Ad esempio, è possibile usare la funzionalità disco dati per effettuare chiamate di rete a Azure Storage. Quando si abilita l'endpoint del servizio Microsoft.Storage nella rete, il traffico viene instradato direttamente attraverso Azure, evitando così le regole di rete e riducendo il carico.
Per evitare di instradare il traffico attraverso gli endpoint di servizio, aggiungi il dominio alla lista delle autorizzazioni
md-*.blob.storage.azure.net. Questo dominio è necessario per configurare un disco dati.
Indirizzi IP per la distribuzione della rete CDN Akamai
Il 1° maggio 2025, gli asset della rete CDN di Azure DevOps sono passati a una soluzione servita da Akamai e Frontdoor di Azure. Assicurarsi che la rete abbia accesso in uscita agli intervalli IP Akamai. Per altre informazioni, vedere:
- Modifica dell'URL del dominio della rete CDN per gli agenti nelle pipeline
- Domande frequenti sul ritiro della rete CDN di Azure da Edgio
- Akamai TechDocs: elenco di controllo di accesso IP di origine
Se si configura la pipeline di Azure DevOps per l'esecuzione all'interno di un contenitore, è necessario aggiungere anche l'origine dell'immagine del contenitore (Docker o Registro Azure Container) a un elenco di elementi consentiti.
Convalidare la connettività degli endpoint
Verificare che sia possibile usare una subnet con pool DevOps gestiti eseguendo lo script seguente in una risorsa in tale subnet. Questo passaggio consentirà di verificare che il flusso di rete sia configurato per raggiungere tutti questi endpoint disponibili e il piano di controllo DevOps gestito.
Importante
È necessario eseguire questo script in una risorsa nella subnet ,ad esempio una macchina virtuale o un contenitore, per verificare che il percorso di rete sia aperto da tale subnet agli endpoint necessari.
Per eseguire lo script con PowerShell Core o PowerShell 5 o versione successiva, salvare lo script seguente come ValidateMDPEndpoints.ps1. Eseguire il comando di PowerShell seguente: .\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://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.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 $_ }
}
Configurare l'agente di Azure DevOps per eseguire dietro un proxy
Se è stato configurato un servizio proxy nell'immagine e si vuole che i carichi di lavoro eseguiti nel pool vengano eseguiti dietro questo proxy, è necessario aggiungere le variabili di ambiente seguenti nell'immagine:
-
VSTS_AGENT_INPUT_PROXYURL: URL del proxy configurato da eseguire dietro. -
VSTS_AGENT_INPUT_PROXYUSERNAME: nome utente necessario per usare il proxy. -
VSTS_AGENT_INPUT_PROXYPASSWORD: password per l'uso del proxy.
Per Windows, queste variabili di ambiente devono essere variabili di ambiente di sistema. Per Linux, queste variabili devono trovarsi nel /etc/environment file . Se si impostano queste variabili di sistema in modo non corretto o senza un servizio proxy configurato nell'immagine, il provisioning di nuovi agenti non riesce con problemi di connettività di rete.
Se si esegue la migrazione dagli agenti dei set di scalabilità di macchine virtuali di Azure e si usano già le variabili di ambiente proxy nell'immagine, non è necessario apportare modifiche. Questo processo è descritto in Agenti del set di scalabilità di macchine virtuali di Azure: Personalizzare la configurazione dell'agente della pipeline.