Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais atualizadas, acesse a documentação em inglês.

Esta versão do GitHub Enterprise foi descontinuada em 2023-03-15. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, segurança aprimorada e novos recursos, atualize para a última versão do GitHub Enterprise. Para obter ajuda com a atualização, entre em contato com o suporte do GitHub Enterprise.

Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.

Por padrão, os executores hospedados no GitHub têm acesso à Internet pública.

No entanto, talvez você também queira que esses executores acessem recursos em sua rede privada, como um registro de pacote, um gerenciador de segredos ou outros serviços locais.

Os executores hospedados no GitHub são compartilhados em todos os clientes do GitHub. Por isso, você precisará de uma forma para conectar a rede privada apenas aos executores enquanto eles estiverem executando seus fluxos de trabalho.

Há algumas abordagens diferentes que você pode adotar para configurar esse acesso, cada uma com vantagens e desvantagens diferentes.

  • Usar o WireGuard para criar uma sobreposição de rede

Se você não quiser manter uma infraestrutura separada para um Gateway de API, poderá criar uma rede de sobreposição entre o executor e um serviço em sua rede privada, executando o WireGuard em ambos os locais. Há várias desvantagens nessa abordagem:

Para acessar o WireGuard em execução em seu serviço privado, você precisará de um endereço IP conhecido e uma porta que seu fluxo de trabalho possa referenciar: isso pode ser um endereço IP público e uma porta, um mapeamento de porta em um gateway de rede ou um serviço que atualiza dinamicamente o DNS.

O WireGuard não lida com a passagem NAT pronta para uso. Portanto, você precisará identificar uma maneira de fornecer esse serviço.

Essa conexão é um para um. Por isso, se você precisar de alta disponibilidade ou alta taxa de transferência, precisará compilar isso em cima do WireGuard.

  • Você precisará gerar e armazenar chaves com segurança para o executor e seu serviço privado.
  • O WireGuard usa UDP. Portanto, sua rede deve dar suporte ao tráfego UDP.
  • Também há algumas vantagens, pois você pode executar o WireGuard em um servidor existente para que não precise manter uma infraestrutura separada e ela tem suporte em executores hospedados no GitHub.
  • Exemplo: configurar o WireGuard Este exemplo do fluxo de trabalho configura o WireGuard para se conectar a um serviço privado.

Para este exemplo, a instância do WireGuard em execução na rede privada tem essa configuração:

Sobreposição de endereço IP de rede do 192.168.1.1

Endereço IP público e porta do 1.2.3.4:56789

Chave pública examplepubkey1234...

  • A instância do WireGuard no executor do GitHub Actions tem esta configuração:
  • Sobreposição de endereço IP de rede do 192.168.1.2
  • Os armazenamentos de chave privada como um segredo do GitHub Actions em WIREGUARD_PRIVATE_KEY

Para obter mais informações, confira Início Rápido do WireGuard, bem como "Segredos criptografados" para saber como armazenar chaves com segurança.

  • Usar o Tailscale para criar uma sobreposição de rede
  • Tailscale é um produto comercial criado sobre o WireGuard.
name: WireGuard example

on:
  workflow_dispatch:

jobs:
  wireguard_example:
    runs-on: ubuntu-latest
    steps:
      - run: sudo apt install wireguard

      - run: echo "$" > privatekey

      - run: sudo ip link add dev wg0 type wireguard

      - run: sudo ip address add dev wg0 192.168.1.2 peer 192.168.1.1

      - run: sudo wg set wg0 listen-port 48123 private-key privatekey peer examplepubkey1234... allowed-ips 0.0.0.0/0 endpoint 1.2.3.4:56789

      - run: sudo ip link set up dev wg0

      - run: curl -vvv http://192.168.1.1

Esta opção é muito semelhante ao WireGuard, exceto que o Tailscale é mais uma experiência completa do produto em vez de um componente de código aberto.

As desvantagens dele são semelhantes às do WireGuard: a conexão é de um para um. Portanto, talvez seja necessário fazer um trabalho adicional para obter alta disponibilidade ou alta taxa de transferência.

Você ainda precisa gerar e armazenar chaves com segurança. O protocolo ainda é UDP. Portanto, sua rede deve dar suporte ao tráfego UDP.

No entanto, há algumas vantagens sobre o WireGuard: a passagem NAT é interna. Por isso, você não precisa expor uma porta à Internet pública. É de longe a mais rápida dessas opções para começar a funcionar, já que o Tailscale fornece um fluxo de trabalho do GitHub Actions com uma única etapa para se conectar à rede de sobreposição. Para obter mais informações, confira GitHub Actions no Tailscale, bem como "Segredos criptografados" para saber como armazenar chaves com segurança.

However, there are some advantages over WireGuard: NAT traversal is built-in, so you don't need to expose a port to the public internet. It is by far the quickest of these options to get up and running, since Tailscale provides an GitHub Actions workflow with a single step to connect to the overlay network.

For more information, see the Tailscale GitHub Action, as well as "Segredos criptografados" for how to securely store keys.