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

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

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

Para saber mais sobre o Developer Connect, consulte a 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. Ao ativar o Developer Connect, você também ativa a API Secret Manager.

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

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

  10. Verifique se você tem um repositório do GitHub Enterprise ou permissões de administrador em um repositório compartilhado.
  11. Ao usar um repositório em uma organização do GitHub Enterprise, verifique se você tem permissões de Gerenciador de apps do GitHub.

  12. Verifique se você tem um recurso de serviço do Diretório de serviços para se conectar a redes particulares ou crie um recurso de serviço do Diretório de serviços. É possível criar o recurso de serviço do Diretório de serviços no mesmo projeto que você está usando com o Developer Connect ou em um projeto diferente.

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

  13. Opcional: crie uma chave de criptografia gerenciada pelo cliente (CMEK) para criptografar os secrets de autenticação criados pelo Developer Connect.
  14. Opcional: para usar as instruções de linha de comando deste guia, siga estas etapas:
    1. Instale a CLI do Google Cloud. Se você já instalou a CLI gcloud anteriormente, 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
              

Conceder as permissões necessárias do IAM

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

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 papéis personalizados ou outros papéis predefinidos.

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

Conclua as etapas a seguir 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 ID do projeto Google Cloud .
    • SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: o ID do projeto do Google Cloud projeto que contém o recurso de serviço do Diretório de serviços.
  2. Conceda permissões para que o Diretório de serviços acesse 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 seu host fora de 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, configure-a para comunicar o intervalo à rede particular.

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

Usar o Cloud Load Balancing para alcançar hosts fora de 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, crie um balanceador de carga usando o Cloud Load Balancing, que direciona o tráfego para seu 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 interno do protocolo de controle de transmissão (TCP) ao criar o endpoint.

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

  • Apenas um grupo de endpoints de rede (NEG) de conectividade híbrida é necessário para acessar 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 roteamento dinâmico global. 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 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.

Crie uma conexão

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

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

Console

Para iniciar uma conexão, siga estas etapas:

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

    Acessar o Developer Connect

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

    • Se uma lista de provedores de gerenciamento de código-fonte aparecer:comece a configurar sua primeira conexão selecionando um provedor de gerenciamento de código-fonte. Clique em Conectar no card do GitHub Enterprise.
    • Se uma tabela com as conexões atuais aparecer: clique em Criar conexão > GitHub Enterprise para definir o provedor de gerenciamento de código-fonte.

      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. Marque a caixa de seleção Ativar uma conexão compatível com a residência de dados para que ela atenda aos requisitos de residência de dados.

    As conexões do GitHub criadas usando o console Google Cloud obedecem à residência de dados se você marcar essa caixa de seleção ao criar a conexão. Ao fazer isso, o Developer Connect cria um app GitHub

    Quando você cria conexões do GitHub usando a Google Cloud CLI, elas não obedecem à residência de dados. Todos os outros tipos de conexão estão em conformidade com a residência de dados.

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

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

    1. A caixa de seleção Ativar proxy do Developer Connect fica marcada por padrão para que o Developer Connect possa funcionar como um proxy para chamadas do Git no GitHub 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 e precisa estar no formato PEM (.pem, .cer ou .crt). Se esta seção for deixada em branco, um conjunto padrão de certificados será usado.

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

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

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

    5. Região: selecione a região do seu 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 seu namespace.

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

  6. Clique em Continuar.

    Uma caixa de diálogo do GitHub vai aparecer, convidando você a criar um app do GitHub.

  7. Seguindo os comandos no GitHub, conclua estas tarefas:

    1. Insira um nome para o app.

    2. Escolha a organização em que você quer instalar o app.

    3. Selecione os repositórios a que você quer conceder acesso.

    A caixa de diálogo é fechada.

    O Developer Connect busca sua chave privada do GitHub e a armazena no projeto do Google Cloud como um secret do Secret Manager secret. Para ver seus secrets, liste os secrets no Secret Manager.

Depois que a conexão é criada, a página Vincular repositórios aparece.

Conclua as etapas a seguir para vincular repositórios à sua 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 console do Google Cloud . Você pode adicionar mais links às conexões atuais a qualquer momento.

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

gcloud

As seguintes tarefas exigem algumas ações no seu navegador da Web.

  1. Execute o comando gcloud developer-connect connections create para criar uma conexão com o GitHub Enterprise:

    gcloud developer-connect connections create CONNECTION_NAME \
        --location=REGION \
        --project=PROJECT_ID \
        --github-enterprise-config-host-uri=HOST_URI
        --github-enterprise-config-service-directory=SERVICE_DIRECTORY_RESOURCE
        --git-proxy-config-enabled
    

    Substitua:

    • CONNECTION_NAME: o nome da conexão.
    • REGION: a região da conexão.
    • HOST_URI: o URI do host a que você quer se conectar.
    • SERVICE_DIRECTORY_RESOURCE: o caminho do recurso do Diretório de serviços, no formato projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE.
    • --git-proxy-config-enabled é uma flag opcional que permite que o Developer Connect funcione como um proxy para chamadas do Git no GitHub Enterprise. É necessário ativar esse recurso ao executar a personalização de código do Gemini Code Assist em repositórios de código-fonte do GitHub Enterprise hospedados em redes particulares.
    • --github-enterprise-config-ssl-ca-certificate é uma flag opcional para adicionar um certificado SSL no formato $HOME/my-ssl-ca.txt.
  2. Você precisa criar um app do GitHub para gerenciar conexões com o GitHub. Execute o comando a seguir para receber o URI da configuração do app:

    gcloud developer-connect connections describe CONNECTION_NAME \
        --location=REGION
    

    Substitua:

    • CONNECTION_NAME: o nome da conexão.
    • REGION: a região da conexão.

    O Developer Connect retorna um link para concluir as próximas etapas em uma janela do navegador. Copie esse link.

  3. Abra o link em um navegador da Web.

  4. Faça login na sua conta do GitHub se for solicitado.

  5. Seguindo os comandos no GitHub, conclua estas tarefas:

    1. Insira um nome para o app.

    2. Escolha a organização em que você quer instalar o app.

    3. Selecione os repositórios a que você quer conceder acesso.

    A caixa de diálogo é fechada.

    O Developer Connect busca sua chave privada do GitHub e a armazena no projeto do Google Cloud como um secret do Secret Manager secret. Para ver seus secrets, liste os secrets no Secret Manager.

Verificar a conexão

Verifique a criação da conexão do GitHub executando o seguinte comando:

gcloud developer-connect connections describe CONNECTION_NAME \
    --location=REGION

Em que:

  • CONNECTION_NAME: o nome da conexão.
  • REGION: a região da sua conexão.

O Developer Connect retorna um status no campo installationState. Se o valor desse campo for COMPLETE, a instalação do app estará concluída. Caso contrário, o Developer Connect vai retornar um URI para você voltar à configuração no navegador.

Depois que a conexão for concluída, escolha quais repositórios vincular seguindo as instruções em Vincular a repositórios.

Depois de estabelecer uma conexão com o GitHub Enterprise, é possível vincular repositórios. Você pode repetir essas etapas mais tarde para vincular outros repositórios, se necessário.

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

Console

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

    Abra 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.

  4. Clique em Continuar.

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

  6. Clique em Criar.

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

gcloud

Execute este comando:

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

Substitua:

  • REPO_NAME: um nome para o link do repositório.
  • REPO_URI: o link para seu repositório. Por exemplo, https://github.com/cloud-build/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 comando developer-connect connections git-repository-links list.

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

Compartilhamento de dados

O conteúdo dos recursos do Google Cloud vinculados a essa conexão pode ser transferido para o GitHub. Essa declaração se aplica a todos os recursos atuais e futuros que usam essa conexão. Para parar de compartilhar informações com o GitHub, exclua as conexões do Developer Connect no console Google Cloud ou na CLI gcloud e revogue o acesso no GitHub.

A seguir