Solucionando problemas de configuração de redes privadas para executores hospedados pela GitHub em sua empresa
Habilitar a criação de configurações de rede para organizações em uma empresa
Por padrão, as organizações em uma empresa não podem criar novas configurações de rede e apenas herdar configurações de rede de nível empresarial. Os proprietários da empresa podem definir uma política que permita que as organizações na empresa criem configurações de rede independentes da empresa. Para saber mais, confira Configurando a rede privada para executores hospedados por GitHub em sua empresa.
Configurar recursos do Azure antes de criar uma configuração da rede na GitHub
Verifique se seus recursos do Azure foram configurados antes de adicionar uma configuração da rede em GitHub.
Regiões com suporte
O serviço GitHub Actions oferece suporte a um subconjunto de todas as regiões oferecidas pelo Azure. Para facilitar a comunicação entre o serviço do GitHub Actions e a sua sub-rede, a sub-rede precisa estar em uma das regiões com suporte a seguir.
Observação
Se você usar o residência de dados no GHE.com, as regiões com suporte serão diferentes. Confira Detalhes de rede do GHE.com.
Há suporte para as regiões a seguir no GitHub.com.
AustraliaEastBrazilSouthCanadaCentralCanadaEastCentralUsEastAsiaEastUsEastUs2FranceCentralGermanyWestCentralJapanWestKoreaCentralNorthCentralUsNorthEuropeNorwayEastSouthCentralUsSoutheastAsiaSouthIndiaSwedenCentralSwitzerlandNorthUkSouthUkWestWestUsWestUs2WestUs3
A rede privada do Azure oferece suporte a executores de GPU nas seguintes regiões.
EastUsNorthCentralUsSouthCentralUsWestUs
A rede privada do Azure oferece suporte a executores de arm64 nas regiões a seguir.
CentralUsEastUsEastUs2NorthCentralUsSouthCentralUsWestUsWestUs2WestUs3
Se não houver suporte à região desejada, envie uma solicitação de disponibilidade de nova região neste formulário do GitHub. Você também pode usar emparelhamento de rede virtual global para conectar redes virtuais em diferentes regiões do Azure. Para obter mais informações, consulte Emparelhamento de Rede Virtual na documentação do Azure.
O executor não conseguiu se conectar à internet
Os executores hospedados em GitHub precisam ser capazes de fazer conexões de saída com GitHub, bem como outras URLs necessárias para GitHub Actions.
Se GitHub Actions não puder se comunicar com os executores, o pool nunca poderá colocar os executores online e, portanto, nenhum trabalho será captado. Nesse caso, o pool terá o seguinte código de erro.
VNetInjectionFailedToConnectToInternet
Para corrigir isso, verifique se você configurou seus recursos do Azure de acordo com os procedimentos "Configurar seus recursos do Azure".
O escopo de implantação está bloqueado
Você pode colocar bloqueios na assinatura do Azure ou no grupo de recursos, o que pode impedir a criação ou exclusão de NIC.
Os bloqueios que impedem a criação de NIC não conseguem captar trabalhos, enquanto os bloqueios que impedem a exclusão de NIC esgotam o espaço de endereço da sub-rede (continuando a criar NICs) ou têm longos tempos de fila para atribuição (QTA) à medida que o serviço repete exceções de implantação.
Nesse caso, o pool terá o seguinte código de erro.
RunnerDeploymentScopeLocked
Para consertar isso, remova o bloqueio ou altere a sub-rede que você está usando para uma sem bloqueio.
Implantação bloqueada pela política
Você pode criar políticas em seu grupo de gerenciamento, assinatura, grupo de recursos ou recursos individuais. A política mais comum é exigir que um recurso tenha determinadas marcas ou um nome específico.
A política impedirá a criação de NICs, o que significa que o pool não pegará trabalhos, já que nenhuma VM pode ficar online.
Nesse caso, o pool terá o seguinte código de erro.
RunnerDeploymentBlockedByPolicy
Para corrigir isso, remova a política ou altere a sub-rede que você está usando para uma sem uma política.
A subrede está cheia
As sub-redes têm uma quantidade limitada de endereços IP para distribuir. Cada executor consome um endereço IP. Se o serviço tentar escalar verticalmente além da configuração de contagem máxima de executores, ele encontrará erros de implantação.
Isso afeta a capacidade do pool de adicionar executores adicionais. Se a profundidade da fila for alta o suficiente, você pode enfrentar tempos de fila para atribuição (QTA) aumentados. Os trabalhos ainda serão processados, mas não em um nível de simultaneidade que você possa esperar.
Nesse caso, o pool terá o seguinte código de erro.
VNetInjectionSubnetIsFull
Para corrigir isso, aumente o tamanho da sub-rede que você está usando ou reduza a contagem máxima de executores do pool para corresponder ao tamanho da sub-rede.
Não é possível excluir a sub-rede
Em alguns casos, uma sub-rede não pode ser excluída porque tem um SAL (Service Association Link) aplicado a ela. Para saber mais, confira Configurando rede privada para executores hospedados no GitHub na sua organização.
Se você precisar identificar o recurso de configurações de rede associado à sub-rede, poderá executar o comando curl a seguir.
Para obter um token do Azure Entra, consulte a documentação do Azure. Use o mesmo api-version usado para criar o recurso.
curl --request GET \
--url "https://management.azure.com/subscriptions/{subscriptionId}/providers/GitHub.Network/NetworkSettings?api-version={api-version}&subnetId={subnetId}" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer {entra_token}"
Regras de firewall ou NSG incorretas
Os procedimentos "Configurando seus recursos do Azure" listam as aberturas necessárias. No entanto, você pode ter redes de produção complexas com vários proxies ou firewalls downstream.
Se os executores não estiverem online, nenhum trabalho será pego. Seu processo de configuração pode envolver a configuração do aplicativo executor e a comunicação com o serviço GitHub Actions para indicar que ele está pronto, bem como buscar e instalar ferramentas antiabuso. Se qualquer um desses processos falhar, o executor não poderá pegar nenhum trabalho.
Se você estiver enfrentando esses problemas, tente configurar uma máquina virtual na mesma sub-rede que você está usando para rede privada com executores hospedados em GitHub. No entanto, se você tiver um link de associação de serviço (SAL) em vigor, isso não será possível.
Se você tiver um SAL em vigor, tente configurar uma sub-rede semelhante na rede virtual e coloque uma máquina virtual nessa rede. Em seguida, tente registrar um executor auto-hospedado nela.
Falha no payload de solicitação HTTP ao configurar recursos do Azure
Ao executar o comando para configurar os recursos do Azure, verifique se você está usando a versão correta da API e a propriedade businessId. Se você estiver usando uma propriedade diferente, seu comando pode retornar o seguinte erro.
(HttpRequestPayloadAPISpecValidationFailed) HTTP request payload failed validation against API specification with one or more errors. Please see details for more information.
Se ocorrer esse erro, você poderá ver mais informações executando o comando usando o sinalizador ---debug.
Configurações de rede definidas no nível errado
Se as configurações de rede foram definidas com a databaseId de uma organização em vez de a databaseId de uma empresa, ocorrerá um erro. A mensagem de erro indicará que uma rede privada não pode ser estabelecida com a ID do recurso fornecida porque ela já está associada a uma empresa ou organização diferente. Para resolver isso, exclua as configurações de rede existentes e recrie-as usando a databaseId da empresa.