Crie repositórios a partir do GitLab Enterprise Edition numa rede privada

O Cloud Build permite-lhe criar acionadores para compilar a partir de repositórios alojados no GitLab Enterprise Edition, o que lhe permite executar compilações em resposta a eventos como envios de commits ou pedidos de união associados ao seu repositório do GitLab Enterprise Edition.

Esta página explica como pode ativar a funcionalidade de acionadores numa instância do GitLab Enterprise Edition se a sua instância estiver alojada numa rede privada.

Antes de começar

  • Enable the Cloud Build, Secret Manager, Compute Engine, and Service Networking APIs.

    Enable the APIs

Crie repositórios a partir do GitLab Enterprise Edition numa rede privada

Se a sua instância do GitLab Enterprise Edition só for acessível numa rede VPC, tem de configurar um serviço do Service Directory e criar usando pools privadas. O projeto que contém a sua rede VPC pode existir num projeto diferente do que contém o seu serviço Service Directory. Use as instruções seguintes para garantir que a sua instância está acessível antes de criar acionadores:

  1. Ative a API Service Directory.

  2. Certifique-se de que tem a função Project IAM Admin concedida ao Google Cloud projeto no qual pretende criar o seu serviço Service Directory. Para saber como conceder funções do IAM, consulte o artigo Configurar o acesso aos recursos do Cloud Build.

  3. Configure um serviço do Service Directory concluindo os seguintes passos:

    1. Configure um espaço de nomes para o seu Google Cloud projeto.

      A região que especificar no seu espaço de nomes tem de corresponder à região que especificar na ligação do anfitrião do Cloud Build.

    2. Configure um serviço no seu espaço de nomes.

    3. Configure um ponto final para o seu serviço registado.

      Quando configurar um ponto final, tem de usar um endereço IP interno e especificar um número de porta HTTPS para que o Cloud Build possa aceder ao seu serviço.

    Para saber mais sobre a configuração do acesso à rede privada, consulte o artigo Configure o acesso à rede privada. O Service Directory também oferece integração com serviços como balanceadores de carga e o Google Kubernetes Engine (GKE). Para saber mais, consulte o artigo Vista geral do Service Directory e do equilíbrio de carga ou Vista geral do Service Directory para o GKE.

  4. 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
  5. 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
  6. Use pools privados para executar as suas compilações. Se não tiver criado um conjunto privado, consulte o artigo crie um novo conjunto privado.

  7. Siga as instruções para criar um acionador do GitLab Enterprise Edition para criar repositórios alojados numa instância do GitLab Enterprise Edition.

    Se incluir um certificado privado ou autoassinado quando associar o anfitrião do GitLab Enterprise Edition ao Cloud Build, tem de definir o URI do anfitrião como o nome alternativo do assunto (SAN) do seu certificado.

O acionador do GitLab Enterprise Edition vai agora invocar automaticamente compilações na sua instância do GitLab Enterprise Edition com base na sua configuração.

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.

Partilha de dados

Os dados enviados para o GitLab Enterprise Edition a partir do Cloud Build ajudam a identificar acionadores por nome e ver os resultados da compilação nos seus repositórios do GitLab Enterprise Edition.

Os seguintes dados são partilhados entre o Cloud Build e o GitLab Enterprise Edition:

  • Google Cloud ID do projeto
  • Nome do acionador

O que se segue?