Crie repositórios a partir do GitHub Enterprise numa rede privada

O Cloud Build permite-lhe criar acionadores numa instância do GitHub Enterprise. Esta página explica como pode usar acionadores do GitHub Enterprise para invocar compilações em resposta a commits ou pedidos de envio de uma instância do GitHub Enterprise e explica como pode criar repositórios a partir do GitHub Enterprise se a sua instância estiver alojada numa rede privada.

Antes de começar

  • Enable the Cloud Build and Service Directory APIs.

    Enable the APIs

Crie repositórios a partir do GitHub Enterprise numa rede privada

Conclua os passos seguintes para ligar a sua instância do GitHub Enterprise ao Cloud Build a partir de uma rede privada:

  1. Conceda acesso do Service Directory ao agente de serviço do Cloud Build:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding  PROJECT_ID_CONTAINING_SERVICE_DIRECTORY \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.viewer"
    

    Substitua o seguinte:

    • PROJECT_ID é o ID do projeto do Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY é o ID do seu projeto que contém o Service Directory.Google Cloud
  2. Conceda acesso aos recursos de rede VPC ao agente de serviço do Cloud Build:

    export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    export CLOUD_BUILD_SERVICE_AGENT="service-$PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
       --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
       --role="roles/servicedirectory.pscAuthorizedService"
    

    Substitua o seguinte:

    • PROJECT_ID é o ID do projeto do Cloud Build.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE é o ID do seu projeto do Google Cloud Platform que contém o recurso de rede.Google Cloud
  3. Configure um serviço do Service Directory concluindo os seguintes passos:

    1. Configure um espaço de nomes para o seu serviço:

       gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
      

      Substitua o seguinte:

      • NAMESPACE é o nome do espaço de nomes do diretório de serviços.
      • LOCATION é a região onde cria associações e associa repositórios.
      • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY é o ID do seu projeto que contém o Service Directory.Google Cloud
    2. Configure um serviço para o seu espaço de nomes:

       gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
      

      Substitua o seguinte:

      • SERVICE é o nome do recurso do diretório de serviços.
      • NAMESPACE é o nome do espaço de nomes do diretório de serviços.
      • LOCATION é a região onde cria associações e associa repositórios.
    3. Configure um ponto final para o seu serviço:

       gcloud service-directory endpoints create ENDPOINT_NAME \
         --namespace=NAMESPACE \
         --service=SERVICE \
         --location=LOCATION \
         --address=INSTANCE_IP_ADDRESS \
         --port=PORT \
         --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/global/networks/NETWORK
      

      Substitua o seguinte:

      • ENDPOINT_NAME é o nome do seu ponto final.
      • NAMESPACE é o nome do espaço de nomes do diretório de serviços.
      • SERVICE é o nome do recurso do diretório de serviços.
      • LOCATION é a região onde cria associações e associa repositórios.
      • INSTANCE_IP_ADDRESS é o endereço IP da sua instância do GitHub Enterprise na sua rede. Por exemplo, 123.45.67.89. Para saber mais, consulte o artigo Use o diretório de serviços para alcançar anfitriões fora Google Cloud.
      • PORT é o nome da sua porta para HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK é o ID do projeto Google Cloud que contém a sua rede VPC.
      • NETWORK é o nome da sua rede VPC.

    Já pode usar o recurso de serviço (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) para criar a sua associação nos passos seguintes.

  4. Associe um anfitrião do GitHub Enterprise.

  5. Associe um repositório do GitHub Enterprise.

  6. Crie um acionador do GitHub Enterprise para criar repositórios alojados na sua instância do GitHub Enterprise.

Use o diretório de serviços para alcançar anfitriões fora do Google Cloud

O diretório de serviços usa o intervalo de endereços IP 35.199.192.0/19 para estabelecer ligação ao seu anfitrião fora de Google Cloud. Tem de adicionar este intervalo a uma lista de autorizações na sua firewall. Além disso, a sua rede privada tem de ser configurada para encaminhar este intervalo através da ligação do Cloud VPN ou Cloud Interconnect.

Se a sua ligação usar um router na nuvem, pode configurar a ligação para comunicar o intervalo à sua rede privada.

Para saber mais, consulte o artigo Configure o acesso à rede privada.

Use o Cloud Load Balancing para alcançar anfitriões fora Google Cloud

Se a configuração de rede não lhe permitir encaminhar o intervalo de endereços IP do Service Directory 35.199.192.0/19 para a Cloud VPN ou o Cloud Interconnect, pode criar um equilibrador de carga através do Cloud Load Balancing que direcione o tráfego para o seu anfitrião.

Quando criar o ponto final do diretório de serviços, certifique-se de que usa o endereço IP da regra de encaminhamento do equilibrador de carga em vez do endereço IP do seu anfitrião. Pode usar um balanceador de carga HTTPS interno ou um balanceador de carga do protocolo de controlo de transmissão (TCP) interno quando criar o seu ponto final.

Ao criar o seu balanceador de carga TCP, considere o seguinte:

  • Apenas é necessário um grupo de pontos finais de rede (NEG) de conetividade híbrida para alcançar o seu anfitrião.
  • O balanceador de carga TCP não requer a chave privada não encriptada para o seu certificado SSL.
  • A configuração da Cloud VPN tem de usar o Cloud Router com encaminhamento dinâmico global. Se a sua Cloud VPN usar o encaminhamento estático, pode usar um proxy que use o Cloud Service Mesh. Para saber mais, consulte o artigo Configure serviços de limite de rede para implementações híbridas.

Para saber como criar um balanceador de carga HTTPS, consulte o artigo Configure um balanceador de carga de aplicações interno com conetividade híbrida. Para saber como criar um balanceador de carga de TCP, consulte o artigo Configure um balanceador de carga de rede de proxy interno regional com conetividade híbrida.

Passos seguintes