Partilhar via


Configurar a rede de pools de DevOps gerenciados

Você pode configurar os agentes dos Pools de DevOps Gerenciados para serem executados em uma rede virtual isolada ou em uma rede virtual existente. Este artigo descreve como configurar seu pool para executar agentes em sua rede virtual.

Escolha o seu tipo de rede

Os Pools DevOps Geridos suportam dois tipos de configurações de rede:

  • Rede virtual isolada: Cada pool tem a sua própria rede virtual isolada, criada e gerida pelo serviço Managed DevOps Pools.
  • Agentes injetados na rede virtual existente: Pode trazer a sua própria rede virtual e sub-rede. Todas as máquinas virtuais criadas para o pool usarão essa sub-rede, e nenhum outro recurso poderá usar a sub-rede. Pode querer adicionar agentes de pools DevOps geridos à sua própria rede virtual para cenários como:
    • Os seus agentes de integração contínua e entrega contínua (CI/CD) precisam de aceder a recursos que só estão disponíveis na rede da sua empresa através de um serviço como o Azure ExpressRoute.
    • Seus agentes de CI/CD precisam aceder a recursos que estão isolados para endpoints privados.
    • Você deseja isolar sua infraestrutura de CI/CD trazendo sua própria rede virtual com regras de firewall específicas da empresa.
    • Quaisquer outros casos de uso exclusivos que não possam ser alcançados por Capacidades de Rede de Pools de DevOps Geridos pré-configuradas.

Rede virtual isolada

Por defeito, todos os pools utilizam uma rede virtual fornecida pela Microsoft, que restringe todo o tráfego de entrada e tem as seguintes opções de configuração de tráfego de saída.

  1. A conectividade de acesso de saída padrão é a atual padrão, permitindo que todo o tráfego de saída utilize um endereço IP fornecido pela Microsoft. O acesso de saída padrão para VMs no Azure está agendado para ser retirado. Quando o acesso de saída por defeito é retirado, os pools serão configurados com um único endereço IP estático por padrão.
  2. Em vez de usar o acesso de saída predefinido, pode configurar o seu pool para usar até 16 endereços IP de saída estáticos. Pools DevOps Geridos criam um gateway NAT na mesma região do seu pool para fornecer os endereços IP. Esta configuração permite-lhe listar endereços IP específicos em serviços externos que os seus pipelines precisam de aceder.
    • O gateway NAT resulta em custos adicionais do Azure. Você pode modelar quanto custará usando a calculadora de custos do Azure. Para mais informações, consulte preços do Azure NAT Gateway.

Importante

Se modificar a contagem de endereços IP estáticos após a criação do pool, os endereços IP podem ser alterados, e terá de obter os novos endereços IP e atualizar a sua lista de autorizações em serviços externos após a operação de atualização concluída.

Para configurar as Definições de Endereço IP ao criar um pool, vá ao separador Rede . Para atualizar um pool existente, vá a Definições>de Rede.

Escolha Nenhum para Encaminhar através de endereços IP públicos e usar o acesso de saída padrão.

Escolha IPs fornecidos pela Microsoft para configurar endereços IP de saída estática e especifique o número de endereços IP estáticos que pretende usar. O Managed DevOps Pools cria um gateway NAT para si e gere os endereços IP.

Captura de ecrã das definições do endereço IP.

Observação

Há um problema conhecido: se o seu pool estiver configurado com uma identidade gerida, as chamadas de API não devolverão a ipAddresses propriedade a menos que o principal do serviço DevOpsInfrastructure receba o papel de Operador de Identidade Gerida na identidade gerida. Para obter etapas detalhadas, consulte Atribuir funções do Azure usando o portal do Azure.

Conceder este papel não é necessário para que os endereços IP estáticos estejam funcionais. Sem esta atribuição de funções, ainda pode encontrar os endereços IP atribuídos visualizando-os na página de Rede no portal Azure.

Agentes injetados na rede virtual existente

Pode configurar os agentes do seu pool para usarem a sua rede virtual seguindo os seguintes passos:

  1. Crie ou traga sua rede virtual e sub-rede.
  2. Delegue a sub-rede a Microsoft.DevOpsInfrastructure/pools.
  3. Associe a sub-rede ao seu pool.

As etapas anteriores delegam a sub-rede para acesso exclusivo pelo pool. Outros pools ou recursos não podem usar a sub-rede.

Um pool pode usar várias sub-redes para conectar vários pools à mesma rede virtual. Cada sub-rede é delegada e associada ao seu próprio pool.

Crie ou importe a sua rede virtual e sub-rede

A sub-rede deve ter espaço de endereço suficiente para acomodar o tamanho máximo do pool que você deseja associar (incluindo os cinco endereços IP que o Azure reserva na sub-rede).

Caso esteja a utilizar o ExpressRoute, será necessário permitir gravações eliminando temporariamente ou alterando o bloqueio de gestão no grupo de recursos.

Importante

O pool e a rede virtual devem estar na mesma região. Caso contrário, você receberá um erro semelhante ao seguinte ao tentar criar o pool ou atualizar a configuração de rede: "Rede virtual MDPVN está na região eastus, mas pool mdpnonprodsub está na região australiaeast. Estes devem estar na mesma região."

Conceda ao Leitor e ao Colaborador de Rede acesso à entidade de serviço DevOpsInfrastructure

Certifique-se de que o DevOpsInfrastructure principal tem acesso a Reader e a Network Contributor na rede virtual.

Em vez de usar funções internas, você pode criar uma função personalizada com as seguintes permissões:

  • 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

Crie uma função personalizada para o acesso ao Link de Associação de Serviços. Você pode criar uma função de exemplo no nível de grupo de recursos ou assinatura na guia Controle de Acesso , conforme mostrado no exemplo a seguir.

Captura de tela que mostra permissões de função personalizadas.

Verifique o acesso principal para DevOpsInfrastructure

  1. Selecione Controle de acesso (IAM) para a rede virtual e, em seguida, selecione Verificar acesso.

    Captura de tela que mostra as permissões de rede virtual para delegação de sub-rede.

  2. Procure e selecione DevOpsInfrastructure.

    Captura de tela que mostra como selecionar a entidade AzureDevOpsInfrastructure.

  3. Verifique se tem acesso com nível Leitor. Verifique se Microsoft.Network/virtualNetworks/subnets/join/action, Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/validate/action e Microsoft.Network/virtualNetworks/subnets/serviceAssociationLinks/write têm o acesso atribuído. Sua função personalizada deve aparecer aqui.

    Captura de tela que mostra permissões de rede virtual.

  4. Se o principal DevOpsInfrastructure não tiver essas permissões, adicione-as. Selecione Controle de acesso (IAM) para a rede virtual e, em seguida, selecione Conceder acesso a este recurso.

Delegar a sub-rede a Microsoft.DevOpsInfrastructure/pools

No portal, abra Propriedades da sub-rede e selecione Microsoft.DevOpsInfrastructure/pools em Delegação da sub-rede. Selecione Guardar.

Captura de tela que mostra como configurar a delegação de sub-rede.

Esse processo delega a sub-rede para acesso exclusivo ao pool. Outros pools ou recursos não podem usar a sub-rede. Para conectar vários pools à mesma rede virtual, você deve usar várias sub-redes. Cada sub-rede deve ser delegada e associada ao seu próprio pool. Você pode encontrar mais informações sobre delegação de sub-rede neste resumo sobre delegação de sub-rede.

Depois de delegar a sub-rede ao Microsoft.DevOpsInfrastructure/pools, você pode atualizar o pool para usar a sub-rede.

Associar a sub-rede ao seu pool

  1. Para criar um novo pool, vá para a guia Rede. Para atualizar um pool existente, vá para Configurações>de rede e selecione Agentes injetados na rede> virtualexistente Configurar.

    Captura de tela que mostra a opção configurar.

  2. Selecione os valores de Subscrição, Rede Virtual e Sub-rede que delegou e, em Microsoft.DevOpsInfrastructure/poolsseguida, selecione Ok.

    Captura de tela que mostra como associar a sub-rede ao pool.

    Após a conclusão da atualização de rede, o recurso recém-criado no pool usará a sub-rede delegada.

Importante

Não coloque um bloqueio Delete na rede virtual quando atualizar seus pools. Durante uma operação de atualização de pool, os Pools de DevOps Gerenciados criam um link de associação de serviço na sub-rede. Se uma atualização falhar, os Managed DevOps Pools tentarão limpar o link de associação de serviço, mas se houver um bloqueio Excluir, receberá um erro InUseSubnetCannotBeDeleted. Os Pools de DevOps Geridos não conseguem eliminar o link de associação ao serviço, o que deixa a sub-rede num estado bloqueado (não pode ser eliminada). Para resolver o problema, remova o bloqueio Excluir e tente novamente a operação de atualização.

Para obter mais informações, consulte Coisas a considerar antes de aplicar bloqueios aos seus recursos do Azure.

Restringir a conectividade de saída

Se tiver sistemas na sua rede (por exemplo, grupos de segurança de rede ou firewalls) que restrinjam a conectividade de saída, precisa de adicionar certos endpoints a uma lista de permissões para suportar totalmente os Managed DevOps Pools. Esses pontos de extremidade são divididos em pontos de extremidade globalmente necessários (necessários em qualquer máquina que use pools de DevOps gerenciados) e pontos de extremidade necessários para determinados cenários. Todos os endpoints são HTTPS, salvo indicação em contrário.

Pontos finais necessários para dar início a pools de DevOps geridos

Se não adicionares estes endpoints a uma lista de permissões, as máquinas deixam de entrar online como parte do serviço Managed DevOps Pools, e não podes executar pipelines no pool:

  • *.prod.manageddevops.microsoft.com: Ponto de extremidade dos Pools de DevOps Geridos usado para comunicar-se com o serviço de Pools de DevOps Geridos.
  • rmprodbuilds.azureedge.net: Usado para baixar os binários de trabalho e scripts de inicialização dos Pools de DevOps Gerenciados. A parte do agente dos binários de trabalho é baixada de rm-agent.prod.manageddevops.microsoft.com (anteriormente baixada de agent.prod.manageddevops.microsoft.com), que é coberta pela entrada necessária *.prod.manageddevops.microsoft.com anterior.
  • *.queue.core.windows.net: Fila de trabalhadores para comunicação com o serviço Managed DevOps Pools.

Pontos finais necessários para conectar ao Azure DevOps

Se não adicionares estes endpoints a uma lista de permissões, as máquinas podem entrar online e até ir para um estado alocado , mas falhar em comunicar com o Azure DevOps, porque o agente de tarefas do Azure DevOps Services ou não consegue ligar-se ou não consegue arrancar.

  • download.agent.dev.azure.com: a localização da CDN (rede de entrega de conteúdo) do agente do Azure DevOps, usada para baixar o agente do Azure DevOps (anteriormente vstsagentpackage.azureedge.net; para mais informações, consulte Edgio CDN para Azure DevOps está a ser descontinuada.
  • dev.azure.com: Necessário para lidar com a comunicação com o Azure DevOps.

Endpoints necessários para máquinas Linux

Esses pontos de extremidade são necessários para iniciar máquinas Ubuntu, mas não são necessários se uma pool estiver a usar apenas o Windows. Quando você configura o agente de tarefa do Azure DevOps, os pacotes necessários são adicionados e um apt-get comando é executado. Este processo falha se os seguintes endpoints não forem adicionados a uma lista de permissões.

  • azure.archive.ubuntu.com: Provisionamento de máquinas Linux. Este ponto de extremidade é HTTP (porta 80), não HTTPS (porta 443).
  • www.microsoft.com: Provisionamento de máquinas Linux.
  • security.ubuntu.com: Provisionamento de máquinas Linux.
  • packages.microsoft.com: Provisionamento de máquinas Linux.
  • ppa.launchpad.net: Provisionamento de algumas distribuições Linux específicas.
  • dl.fedoraproject.org: Provisionamento de determinadas distribuições Linux.

Endpoints necessários para alguns recursos do Azure DevOps

Esses pontos de extremidade opcionais são necessários para que funcionalidades específicas do Azure DevOps funcionem nos seus pipelines. No conjunto a seguir, o curinga pode ser substituído pela organização específica do Azure DevOps que hospeda seu pipeline. Por exemplo, se a sua organização tiver o nome contoso, você poderá usar contoso.services.visualstudio.com em vez de *.services.visualstudio.com.

  • *.services.visualstudio.com
  • *.vsblob.visualstudio.com: Usado para carregar e consumir artefatos.
  • *.vssps.visualstudio.com: Usado para autenticação com o Azure DevOps para determinados recursos.
  • *.visualstudio.com

Observação

As entradas anteriores são os domínios mínimos necessários. Se você tiver algum problema, consulte a lista completa de domínios necessários em Endereços IP permitidos e URLs de domínio do Azure DevOps.

As máquinas virtuais (VMs) do Azure podem rotear o tráfego para determinados recursos do Azure por meio de sua sub-rede. Para essas solicitações, você pode rotear solicitações diretamente pelo Azure ou habilitar o acesso por meio de sua rede.

  1. Configure o tráfego do Azure para passar através dos endpoints de serviço:

    Você pode rotear o tráfego diretamente pelo Azure para evitar adicionar taxa de transferência aos seus grupos de segurança de rede ou firewalls. Não precisa de adicionar os domínios listados na opção seguinte a uma lista de permissões.

    Por exemplo, você pode usar o recurso de disco de dados para envolver chamadas de rede para o Armazenamento do Azure. Quando você habilita o ponto de extremidade do serviço Microsoft.Storage em sua rede, o tráfego é encaminhado diretamente pelo Azure, o que evita suas regras de rede e reduz a carga.

  2. Para evitar encaminhar o tráfego pelos endpoints de serviço, adicione o md-*.blob.storage.azure.net domínio à sua lista de permissões. Este domínio é necessário para configurar um disco de dados.

IPs de entrega CDN da Akamai

Em 1º de maio de 2025, os ativos CDN do Azure DevOps fizeram a transição para uma solução atendida pela Akamai e pelo Azure Front Door. Certifique-se de que sua rede tenha acesso de saída aos intervalos IP da Akamai. Para obter mais informações, consulte:

Se configurares o teu pipeline Azure DevOps para correr dentro de um contentor, também precisas de adicionar a fonte da imagem do contentor (Docker ou Azure Container Registry) a uma lista de aprovações.

Validar a conectividade do endpoint

Confirme se você pode usar uma sub-rede com Pools de DevOps Gerenciados executando o script a seguir em um recurso nessa sub-rede. Esta etapa ajudará a validar se o tráfego de rede está configurado para alcançar todos os pontos de extremidade disponíveis e o plano de controlo do Managed DevOps.

Importante

Você deve executar esse script em um recurso em sua sub-rede (como uma VM ou contêiner) para validar se o caminho de rede está aberto dessa sub-rede para os pontos de extremidade necessários.

Para executar o script com o PowerShell Core ou o PowerShell 5 ou posterior, salve o script a seguir como ValidateMDPEndpoints.ps1. Execute o seguinte comando do PowerShell: .\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 $_ }
}

Configurar o agente do Azure DevOps para ser executado atrás de um proxy

Se você configurou um serviço de proxy em sua imagem e deseja que as cargas de trabalho executadas em seu pool sejam executadas atrás desse proxy, você deve adicionar as seguintes variáveis de ambiente em sua imagem:

  • VSTS_AGENT_INPUT_PROXYURL: O URL do proxy configurado para execução em segundo plano.
  • VSTS_AGENT_INPUT_PROXYUSERNAME: O nome de usuário necessário para usar o proxy.
  • VSTS_AGENT_INPUT_PROXYPASSWORD: A senha para usar o proxy.

Para Windows, essas variáveis de ambiente devem ser variáveis de ambiente do sistema. Para Linux, essas variáveis devem estar no /etc/environment arquivo. Se você definir essas variáveis de sistema incorretamente ou sem um serviço de proxy configurado na imagem, o provisionamento de novos agentes falhará com problemas de conectividade de rede.

Se você estiver migrando de agentes do Azure Virtual Machine Scale Sets e já estiver usando as variáveis de ambiente proxy em sua imagem, não precisará fazer alterações. Esse processo é descrito em Agentes do Conjunto de Dimensionamento de Máquina Virtual do Azure: Personalizar a configuração do agente de pipeline.