Criar repositórios do GitLab Enterprise Edition em uma rede particular

Com o Cloud Build, é possível criar gatilhos para criar com base em repositórios hospedados no GitLab Enterprise Edition, permitindo que você execute builds em resposta a eventos como pushes de commit ou solicitações de mesclagem associadas ao repositório do GitLab Enterprise Edition.

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

Antes de começar

  • Ative as APIs Cloud Build, Secret Manager, Compute Engine e API Service Networking, se ainda não estiverem ativadas.

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão pelo papel de proprietário (roles/owner). Caso contrário, é possível conseguir essa permissão pelo papel de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    Ativar as APIs

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

Se a instância do GitLab Enterprise Edition só puder ser acessada em uma rede VPC, será necessário configurar um serviço do Diretório de Serviços e criar 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 esteja acessível antes de criar gatilhos:

  1. Ative a API Service Directory.

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

  3. Configure um serviço do Diretório de Serviços seguindo estas etapas:

    1. Configure um namespace para o projeto do Google Cloud .

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

    2. Configure um serviço no namespace.

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

      Ao configurar um endpoint, você precisa usar um endereço IP interno e especificar um número de porta HTTPS para que o Cloud Build alcance seu serviço.

    Para saber mais sobre a configuração do acesso à rede particular, consulte Configurar o acesso à rede particular. 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 o GKE.

  4. Conceda ao agente de serviço do Cloud Build acesso ao Diretório de Serviços:

    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 projeto do Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY é o ID do projeto doGoogle 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 doGoogle Cloud que contém o recurso de rede.
  6. Use pools particulares para executar seus builds. Se você não tiver criado um pool particular, consulte criar um novo pool particular.

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

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

O gatilho do GitLab Enterprise Edition agora vai invocar automaticamente 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. Adicione esse intervalo a uma lista de permissões no firewall. Além disso, sua rede privada precisa ser configurada para rotear esse intervalo pela conexão do Cloud VPN ou do Cloud Interconnect.

Se a conexão usar um Cloud Router, será possível configurá-la para comunicar o intervalo à rede privada.

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

Usar o Cloud Load Balancing para alcançar hosts fora do Google Cloud

Se a configuração da rede não permitir que você encaminhe 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, crie um balanceador de carga usando o Cloud Load Balancing que direcione 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 endereço IP do host. É possível usar um balanceador de carga HTTPS interno ou um balanceador de carga de protocolo TCP interno 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 o 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 roteamento dinâmico global. Se o Cloud VPN usa 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 saber como criar um balanceador de carga HTTPS, consulte Configurar um balanceador de carga de aplicativo interno com conectividade híbrida. Para saber como criar um balanceador de carga TCP, consulte Configurar um balanceador de carga de rede de proxy interno regional com conectividade híbrida.

Compartilhamento de dados pessoais

Os dados enviados ao GitLab Enterprise Edition pelo Cloud Build ajudam a identificar gatilhos por nome e ver os resultados do build nos repositórios do GitLab Enterprise Edition.

Os dados a seguir são compartilhados entre o Cloud Build e o GitLab Enterprise Edition:

  • ID do projeto doGoogle Cloud
  • Nome do gatilho

A seguir