Crie repositórios do GitLab Enterprise Edition em uma rede privada

O Cloud Build permite criar gatilhos para criar em repositórios hospedados no GitLab Enterprise Edition, permitindo que você execute builds em resposta a eventos, como envios de confirmação ou solicitações de mesclagem associadas ao repositório do GitLab Enterprise Edition.

Nesta página, explicamos como ativar a funcionalidade do gatilho em um GitLab Instância do Enterprise Edition se a instância estiver hospedada em uma rede privada.

Antes de começar

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

    Enable the APIs

Crie repositórios do GitLab Enterprise Edition em uma rede privada

Se a instância do GitLab Enterprise Edition só puder ser acessada em um rede VPC, é preciso configurar uma Serviço do Diretório de serviços e criação usando pools particulares. O projeto que contém sua rede VPC pode existir em um projeto diferente daquele que contém o serviço do diretório de serviços. Use as instruções a seguir para garantir que sua instância possa ser acessada antes criação de gatilhos:

  1. Ative a API Service Directory.

  2. Verifique se você tem o papel Administrador de IAM do projeto concedido à projeto do Google Cloud em que você pretende criar Serviço do Diretório de serviços em. Para saber como conceder papéis do IAM, consulte Como configurar o acesso aos recursos do Cloud Build.

  3. Para configurar um serviço do Diretório de serviços, siga estas etapas:

    1. Configurar um namespace para seu projeto do Google Cloud.

      A região especificada no namespace precisa corresponder à região especificada na conexão de host do Cloud Build.

    2. Configurar um serviço no seu namespace.

    3. Configure um endpoint para o serviço registrado.

      Ao configurar um endpoint, é necessário usar um endereço IP interno e especificar um número de porta HTTPS para que o Cloud Build acesse seu serviço.

    Para saber mais sobre a configuração do acesso à rede privada, consulte Configurar o acesso à rede privada. O Diretório de serviços também oferece integração com serviços como balanceadores de carga e o Google Kubernetes Engine (GKE). Para saber mais, consulte Visão geral do diretório de serviços e do balanceamento de carga ou Visão geral do Diretório de serviços para GKE.

  4. Conceda acesso ao Diretório de serviços 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:

    • PROJECT_ID é o ID do seu projeto do Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY é o ID do projeto do Google Cloud que contém o diretório de serviços.
  5. Conceda acesso ao recurso 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:

    • PROJECT_ID é o ID do projeto do Cloud Build.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE é o ID do Projeto do Google Cloud que contém o recurso de rede.
  6. Use pools particulares para executar seus builds. Se você não tiver criado um pool privado, consulte Criar um novo pool pool privado.

  7. Siga as instruções para criar um gatilho do GitLab Enterprise Edition para criar repositórios hospedados em uma instância do GitLab Enterprise Edition.

    Se você incluir um certificado autoassinado ou particular ao conectar sua host do GitLab Enterprise Edition no Cloud Build, você precisa definir o URI do host como o nome alternativo do assunto (SAN, na sigla em inglês) do certificado.

Agora, o gatilho do GitLab Enterprise Edition vai invocar automaticamente os builds na instância do GitLab Enterprise Edition com base na sua configuração.

Usar o Diretório de serviços para alcançar hosts fora do Google Cloud

O Diretório de serviços usa o intervalo de endereços IP 35.199.192.0/19 para conectar seu host fora do Google Cloud. É necessário adicionar esse intervalo a uma lista de permissões no firewall. Além disso, sua rede particular precisa ser configurada para rotear esse intervalo pela conexão do Cloud VPN ou do Cloud Interconnect.

Se sua conexão usa um Cloud Router, é possível configurá-la para comunicar o intervalo para sua rede privada.

Para saber mais, consulte Configurar o acesso à rede particular.

Usar o Cloud Load Balancing para acessar hosts fora do Google Cloud

Se a configuração da rede não permitir encaminhar o intervalo de endereços IP do diretório de serviços 35.199.192.0/19 para o Cloud VPN ou o Cloud Interconnect, será possível criar um balanceador de carga usando o balanceamento de carga do Cloud que direciona o tráfego para o host.

Ao criar o endpoint do Diretório de serviços, use o endereço IP da regra de encaminhamento do balanceador de carga em vez do IP e o endereço IP do seu host. Você pode usar um Balanceador de carga HTTPS interno ou um Balanceador de carga do protocolo de controle de transmissão interno (TCP) ao criar o endpoint.

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

  • Somente um grupo de endpoints de rede (NEG) de conectividade híbrida é necessário para alcançar seu host.
  • O balanceador de carga TCP não exige a chave privada não criptografada para seu certificado SSL.
  • A configuração do Cloud VPN precisa usar o Cloud Router com conexões roteamento dinâmico. Se o Cloud VPN usar roteamento estático, use um proxy que use o Cloud Service Mesh. Para saber mais, consulte Configurar serviços de borda de rede para implantações híbridas.

Para aprender a criar um balanceador de carga HTTPS, consulte Configure um balanceador de carga de aplicativo interno com conectividade híbrida. Para saber mais sobre a criação de um balanceador de carga TCP, consulte Configurar um balanceador de carga de rede de proxy interno regional com conectividade híbrida.

Compartilhamento de dados

Os dados enviados do Cloud Build para o GitLab Enterprise Edition ajudam a identificar gatilhos por nome e conferir os resultados da versão nos repositórios do GitLab Enterprise Edition.

Os dados a seguir são compartilhados entre o Cloud Build e o GitLab Edição empresarial:

  • ID do projeto do Google Cloud
  • Nome do gatilho

A seguir