Conectar-se a repositórios do GitLab Enterprise em uma rede particular

Esta página descreve como se conectar a repositórios do GitLab Enterprise hospedados em uma rede privada usando o Developer Connect e o Diretório de serviços. Você pode concluir essas tarefas usando o Google Cloud console, ou a Google Cloud CLI.

Estas instruções são para desenvolvedores de aplicativos, administradores de plataformas e gerentes de segurança que querem usar repositórios de código-fonte do GitLab Enterprise com o Google. Especificamente, você pode usar repositórios do GitLab Enterprise com o Gemini Code Assist.

Para saber mais sobre o Developer Connect, consulte Visão geral do Developer Connect.

Antes de começar

  1. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se agora.

  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Developer Connect and Service Directory APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Developer Connect and Service Directory APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. A ativação do Developer Connect também ativa a API Secret Manager.

  9. Verifique se você tem acesso a uma conta no GitLab Enterprise.

    Para ajudar a manter o trabalho da sua equipe seguro, recomendamos que você conclua as tarefas neste guia usando uma conta de serviço ou uma conta compartilhada pela equipe, não uma conta pessoal.

  10. Verifique se você é proprietário de um repositório do GitLab Enterprise ou se tem permissões de administrador em um repositório compartilhado.
  11. Verifique se você tem um recurso de serviço do Diretório de serviços para se conectar a redes privadas ou crie um recurso de serviço do Diretório de serviços. Você pode criar o recurso de serviço do Diretório de serviços no mesmo projeto que está usando com o Developer Connect ou usar um projeto diferente.

    Para conexões com redes fora do Google Cloud, talvez seja necessário configurar o Diretório de serviços de maneira diferente. Consulte Usar o Diretório de serviços para alcançar hosts fora do Google Cloud.

  12. Opcional: crie uma chave de criptografia gerenciada pelo cliente (CMEK) para criptografar os secrets de autenticação criados pelo Developer Connect.
  13. Opcional: para usar as instruções de linha de comando neste guia, siga estas etapas:
    1. Instale a Google Cloud CLI. Se você já instalou a CLI gcloud, verifique se tem a versão mais recente disponível executando gcloud components update.
    2. Crie uma conta de serviço do Developer Connect executando o seguinte comando, em que PROJECT_ID é o Google Cloud ID do projeto:
              gcloud beta services identity create \
                  --service=developerconnect.googleapis.com \
                  --project=PROJECT_ID
              

Requisitos do host

Se você não instalou uma instância do servidor do GitLab Enterprise Edition, consulte o guia de instalação do GitLab Enterprise Edition para instruções.

Ao seguir as instruções para instalar uma instância do servidor do GitLab Enterprise Edition, observe o seguinte:

  • Você precisa configurar o host para processar o protocolo HTTPS. Hosts configurados com o protocolo HTTP não são compatíveis.

  • Você precisa configurar o host com o mesmo URL usado para acessá-lo do Google Cloud. Para saber mais, consulte a documentação do GitLab sobre como configurar o URL externo.

Funções exigidas

Para conseguir as permissões necessárias para criar conexões e links, peça ao administrador para conceder a você os papéis do IAM a seguir:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.

Conceder permissões para usar o Diretório de serviços

Siga estas etapas para permitir que o Developer Connect use o Diretório de serviços e que o Diretório de serviços acesse o recurso de rede VPC.

  1. Conceda permissões para a conta de serviço do Developer Connect usar o Diretório de serviços executando os seguintes comandos:

    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    
    SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-devconnect.iam.gserviceaccount.com"
    
    gcloud projects add-iam-policy-binding SERVICE_DIRECTORY_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.viewer"
    

    Substitua:

    • PROJECT_ID: o Google Cloud ID do projeto.
    • SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: o ID do projeto que contém o Google Cloud recurso de serviço do Diretório de serviços.
  2. Conceda permissões para o Diretório de serviços acessar o recurso de rede VPC. O recurso de rede pode estar em um projeto diferente.

    gcloud projects add-iam-policy-binding NETWORK_RESOURCE_PROJECT_ID \
        --member="serviceAccount:${SERVICE_ACCOUNT}" \
        --role="roles/servicedirectory.pscAuthorizedService"
    

    Substitua NETWORK_RESOURCE_PROJECT_ID pelo ID do projeto que contém o recurso de rede VPC.

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 o host fora do Google Cloud. Você precisa adicionar esse intervalo a uma lista de permissões no firewall. Além disso, a 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, você poderá configurá-la para comunicar o intervalo à rede privada.

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

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

Se a configuração de rede não permitir rotear 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, você poderá criar um balanceador de carga usando o Cloud Load Balancing 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 endereço IP do host. Você pode usar um balanceador de carga HTTPS interno ou um balanceador de carga de protocolo de controle de transmissão (TCP) interno ao criar o endpoint.

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

  • Apenas 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 o certificado SSL.
  • A configuração do Cloud VPN precisa usar o Cloud Router com roteamento dinâmico global. Se o Cloud VPN usar roteamento estático, você poderá usar 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 mais sobre como criar um balanceador de carga HTTPS, consulte Configurar um balanceador de carga de aplicativo interno com conectividade híbrida. Para saber mais sobre como criar um balanceador de carga TCP, consulte Configurar um balanceador de carga de rede de proxy interno regional com conectividade híbrida.

Criar tokens de acesso

Para criar tokens de acesso no GitLab, siga estas etapas:

  1. Faça login no GitLab.

  2. Siga as instruções na documentação do GitLab para criar tokens de acesso pessoal, de grupo, ou de projeto com as seguintes permissões:

    • Um token com escopo api para conectar e desconectar repositórios.
    • Um token com escopo read_api para permitir que o Developer Connect leia o código-fonte nos seus repositórios.
    • Para tokens de acesso de grupo e de projeto, os tokens precisam ter um papel de mantenedor ou superior.

Crie uma conexão

Esta seção descreve como criar uma conexão entre o Developer Connect e o GitLab Enterprise. Se você estiver usando o Google Cloud console, também poderá começar a adicionar links a repositórios ao terminar de configurar a conexão.

Para criar uma nova conexão do GitLab Enterprise, selecione uma das seguintes opções:

Console

Inicie uma conexão seguindo estas etapas:

  1. No Google Cloud console do, abra o Developer Connect.

    Acessar o Developer Connect

    O Developer Connect mostra a página Repositórios Git.

    • Se você vir uma lista de provedores de gerenciamento de código-fonte: Comece a configurar sua primeira conexão selecionando um provedor de gerenciamento de código fonte. Clique em Conectar no card do GitLab Enterprise.
    • Se você vir uma tabela listando as conexões atuais: defina o provedor de gerenciamento de código-fonte clicando em Criar conexão > GitLab Enterprise.

      A página Criar conexão é aberta.

  2. Em Região, escolha uma região para os recursos de conexão.

    1. Em Nome, insira um nome para a nova conexão.
  3. Na seção Tokens de acesso , insira os tokens da sua conta:

    • Token de acesso à API: insira o token de acesso com escopo api.
    • Ler token de acesso à API: insira o token de acesso com read_api escopo.

    Você é responsável por garantir que os tokens do GitLab permaneçam válidos. Os tokens do GitLab têm uma vida útil máxima de 365 dias, a menos que especificado de outra forma pelo criador do token ou por um administrador. Para saber como gerenciar as configurações e notificações de expiração de tokens, consulte a documentação do GitLab sobre tokens de acesso pessoal, tokens de acesso de grupo, e tokens de acesso de projeto.

  4. Em URL do host, insira o URL do host a que você quer se conectar.

  5. Clique em Mostrar mais para conferir as configurações de configuração opcionais.

    1. A caixa de seleção Ativar proxy do Developer Connect é selecionada por padrão para que o Developer Connect possa atuar como um proxy para chamadas do Git para o GitLab Enterprise.

    2. Na seção Rede, em Tipo de rede, escolha Rede particular.

    3. Em Certificado de CA, clique em Procurar para fazer upload do certificado autoassinado.

      O certificado não pode exceder 10 KB de tamanho e precisa estar no formato PEM (.pem, .cer ou .crt). Se essa seção for deixada em branco, um conjunto padrão de certificados será usado.

    4. Na seção Serviço do Diretório de serviços, selecione o local do serviço:

      • No projeto your-project
      • Em outro projeto
      • Inserir manualmente

      Se você selecionar Em outro projeto ou Inserir manualmente, especifique o Google Cloud ID do projeto. Selecione o projeto no menu suspenso ou insira o ID do projeto manualmente.

    5. Região: selecione a região do serviço do Diretório de serviços. A região especificada para o serviço precisa corresponder à região associada à conexão.

    6. Namespace: selecione o namespace do serviço do Diretório de serviços.

    7. Serviço: selecione o nome do serviço do Diretório de serviços no namespace.

    8. Opcional: na seção Criptografia, selecione uma chave CMEK para criptografar os secrets do Secret Manager criados pelo Developer Connect.

  6. Clique em Continuar.

Depois que a conexão for criada, a página Vincular repositórios vai aparecer.

Siga estas etapas para vincular repositórios à conexão:

  1. Na lista de repositórios disponíveis, selecione os que você quer usar.

  2. Clique em OK.

  3. Clique em Vincular.

Sua conexão é adicionada à página Conexões e os links do repositório são adicionados à página Repositórios no Google Cloud console. Você pode adicionar mais links a conexões atuais a qualquer momento.

Se você estiver configurando o Gemini Code Assist, continue o processo seguindo as etapas em Configurar e usar a personalização de código do Gemini Code Assist.

gcloud

  1. Crie um secret de webhook no Secret Manager executando o seguinte comando, em que WEBHOOK_SECRET_NAME é um nome para o secret de webhook:

         cat /proc/sys/kernel/random/uuid | tr -d '\n' | gcloud secrets create WEBHOOK_SECRET_NAME
    
  2. Armazene seus tokens de acesso no Secret Manager executando os seguintes comandos:

    gcloud secrets create API_SECRET_NAME
    
    echo -n API_SECRET_DATA | gcloud secrets versions add API_SECRET_NAME --data-file=-
    
    gcloud secrets create READ_SECRET_NAME
    
    echo -n READ_SECRET_DATA | gcloud secrets versions add READ_SECRET_NAME --data-file=-
    

    Substitua:

    • API_SECRET_NAME: um nome para o secret que armazena o token com api escopo.
    • API_SECRET_DATA: o token com api escopo, semelhante a glpat-XXXXXXXXXXXXXXXX.
    • READ_SECRET_NAME: um nome para o secret que armazena o token com read_api escopo.
    • READ_SECRET_DATA: o token com read_api escopo, semelhante a glpat-XXXXXXXXXXXXXXXX.
  3. Execute o comando gcloud developer-connect connections create para criar uma conexão com o GitLab Enterprise:

    gcloud beta developer-connect connections create CONNECTION_NAME \
        --location=REGION \
        --gitlab-config-read-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/READ_SECRET_NAME/versions/VERSION \
        --gitlab-config-authorizer-credential-user-token-secret-version=projects/PROJECT_ID/secrets/API_SECRET_NAME/versions/VERSION \
        --gitlab-enterprise-config-host-uri=HOST_URI
        --gitlab-enterprise-config-webhook-secret-version=projects/PROJECT_ID/secrets/WEBHOOK_SECRET_NAME/versions/VERSION
        --git-proxy-config-enabled
    

    Substitua:

    • CONNECTION_NAME: o nome da conexão.
    • REGION: a região da conexão.
    • PROJECT_ID: o Google Cloud ID do projeto.
    • READ_SECRET_NAME: o nome do secret do Secret Manager que contém o token com read_api escopo.
    • API_SECRET_NAME: o nome do secret do Secret Manager que contém o token com api escopo.
    • VERSION: o número da versão de cada secret. Pode ser latest para usar o número da versão mais recente.
    • HOST_URI: o URI do host a que você quer se conectar.
    • WEBHOOK_SECRET_NAME: o nome do secret do Secret Manager que contém o secret de webhook.
    • --git-proxy-config-enabled é uma flag opcional que permite que o Developer Connect funcione como um proxy para chamadas do Git para o GitLab Enterprise. Você precisa ativar esse recurso ao executar a personalização de código do Gemini Code Assist em repositórios de código-fonte do GitLab Enterprise hospedados em redes privadas.
    • --gitlab-enterprise-config-ssl-ca-certificate é uma flag opcional para adicionar um certificado SSL no formato $HOME/my-ssl-ca.txt.

    O Developer Connect conclui a conexão com o GitLab. Em seguida, vincule aos repositórios.

Depois de estabelecer uma conexão com o GitLab Enterprise, você pode vincular a repositórios. Você pode repetir essas etapas mais tarde para vincular outros repositórios conforme necessário.

Para criar links de repositório em uma conexão do GitLab Enterprise, selecione uma das seguintes opções:

Console

Crie links para repositórios seguindo estas etapas:

  1. Abra a página Repositórios no Google Cloud console.

    Abrir a página Repositórios

  2. Clique em Vincular repositório.

    O painel Vincular repositórios Git é aberto.

  3. Na lista de conexões, escolha uma conexão.

  4. Clique em Continuar.

  5. Na lista de repositórios, selecione os que você quer vincular.

    O Developer Connect mostra nomes sugeridos para os recursos do repositório.

  6. Selecione uma opção de nomenclatura de recurso de repositório:

    • Gerado: use os nomes de recursos de repositório gerados.
    • Manual: insira seus próprios nomes.
  7. Clique em Criar.

O Developer Connect cria os links do repositório e os mostra em o Google Cloud console.

gcloud

Vincule a um repositório do GitLab executando o seguinte comando:

gcloud beta developer-connect connections git-repository-links create REPO_NAME \
    --clone-uri=REPO_URI \
    --connection=CONNECTION_NAME \
    --location=REGION

Substitua:

  • REPO_NAME: o nome do link do repositório.
  • REPO_URI: o link para o repositório, semelhante a https://gitlab.com/my-project/test-repo.git.
  • CONNECTION_NAME: o nome da conexão.
  • REGION: a região da conexão.

O Developer Connect cria os links do repositório.

Para listar os repositórios vinculados, execute o developer-connect connections git-repository-links list comando.

Se você estiver configurando o Gemini Code Assist, continue o processo seguindo as etapas em Configurar e usar a personalização de código do Gemini Code Assist.

A seguir