Conéctate a repositorios de GitHub Enterprise alojados en una red privada

En esta página, se describe cómo conectarse a repositorios de GitHub Enterprise alojados en una red privada con Developer Connect y Directorio de servicios. Puedes completar estas tareas con la consola de Google Cloud o Google Cloud CLI.

Estas instrucciones están dirigidas a desarrolladores de aplicaciones, administradores de plataformas y administradores de seguridad que deseen usar repositorios de código fuente de GitHub Enterprise con Google. Específicamente, puedes usar repositorios de GitHub Enterprise con Gemini Code Assist.

Para obtener más información sobre Developer Connect, consulta la Descripción general de Developer Connect.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  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. Habilitar Developer Connect también habilita la API de Secret Manager.

  9. Asegúrate de tener acceso a una cuenta en GitHub Enterprise.

    Para proteger el trabajo de tu equipo, te recomendamos que completes las tareas de esta guía con una cuenta de bot o una cuenta compartida por tu equipo, no con una cuenta personal.

  10. Asegúrate de ser propietario de un repositorio de GitHub Enterprise o de tener permisos de nivel de administrador en un repositorio compartido.
  11. Cuando uses un repositorio en una organización de GitHub Enterprise, asegúrate de tener permisos de administrador de la app de GitHub.

  12. Asegúrate de tener un recurso de servicio del Directorio de servicios para conectarte a redes privadas o crea un recurso de servicio del Directorio de servicios. Puedes crear el recurso de servicio de Directorio de servicios en el mismo proyecto que usas con Developer Connect o en un proyecto diferente.

    Para las conexiones a redes fuera de Google Cloud, es posible que debas configurar el Directorio de servicios de manera diferente. Consulta Cómo usar el Directorio de servicios para acceder a hosts fuera de Google Cloud.

  13. Opcional: Crea una clave de encriptación administrada por el cliente (CMEK) para encriptar los secretos de autenticación que crea Developer Connect.
  14. Opcional: Para usar las instrucciones de línea de comandos de esta guía, completa los siguientes pasos:
    1. Instala la Google Cloud CLI. Si ya instalaste gcloud CLI, asegúrate de tener la versión más reciente disponible ejecutando gcloud components update.
    2. Crea una cuenta de servicio de Developer Connect ejecutando el siguiente comando, en el que PROJECT_ID es tu Google Cloud ID del proyecto:
              gcloud beta services identity create \
                  --service=developerconnect.googleapis.com \
                  --project=PROJECT_ID
              

Otorga los permisos de IAM necesarios

Para obtener los permisos que necesitas para crear conexiones y vínculos, pídele a tu administrador que te otorgue los siguientes roles de IAM:

  • Si no eres el propietario del proyecto, debes tener el rol de administrador de Developer Connect (roles/developerconnect.admin) en tu cuenta de usuario.
  • Si planeas usar una CMEK para encriptar los secretos que crea Developer Connect, haz lo siguiente: Encriptador/desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la cuenta de servicio de Secret Manager
  • Si planeas usar gcloud CLI para completar los pasos de esta guía, asegúrate de tener el siguiente rol: Rol de administrador de Secret Manager (roles/secretmanager.admin) en la cuenta de servicio de Developer Connect
  • Si planeas usar la consola de Google Cloud para completar los pasos de esta guía, asegúrate de tener el rol de administrador de IAM del proyecto (roles/resourcemanager.projectIamAdmin) en tu cuenta de usuario.

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Otorga permisos para usar Directorio de servicios

Completa los siguientes pasos para permitir que Developer Connect use Directorio de servicios y que Directorio de servicios acceda a tu recurso de red de VPC.

  1. Ejecuta los siguientes comandos para otorgar permisos a la cuenta de servicio de Developer Connect para usar Directorio de servicios:

    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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de Google Cloud .
    • SERVICE_DIRECTORY_RESOURCE_PROJECT_ID: Es el ID del proyecto de Google Cloud el proyecto que contiene tu recurso de servicio de Directorio de servicios.
  2. Otorga permisos al Directorio de servicios para acceder al recurso de tu red de VPC. El recurso de red puede estar en un proyecto diferente.

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

    Reemplaza NETWORK_RESOURCE_PROJECT_ID por el ID del proyecto que contiene el recurso de tu red de VPC.

Usa el Directorio de servicios para acceder a hosts fuera de Google Cloud

Directorio de servicios usa el rango de direcciones IP 35.199.192.0/19 para conectar tu host fuera de Google Cloud. Debes agregar este rango a una lista de entidades permitidas en tu firewall. Además, tu red privada debe configurarse para enrutar este rango a través de la conexión de Cloud VPN o Cloud Interconnect.

Si tu conexión usa un Cloud Router, puedes configurarla para comunicar el rango a tu red privada.

Para obtener más información, consulta Configura el acceso privado a la red.

Usa Cloud Load Balancing para acceder a hosts fuera de Google Cloud

Si la configuración de tu red no te permite enrutar el rango de direcciones IP de Service Directory 35.199.192.0/19 a Cloud VPN o Cloud Interconnect, puedes crear un balanceador de cargas con Cloud Load Balancing que dirija el tráfico a tu host.

Cuando crees el extremo de Directorio de servicios, asegúrate de usar la dirección IP de la regla de reenvío del balanceador de cargas en lugar de la dirección IP de tu host. Puedes usar un balanceador de cargas HTTPS interno o un balanceador de cargas interno del Protocolo de control de transmisión (TCP) cuando crees tu extremo.

Cuando crees tu balanceador de cargas de TCP, ten en cuenta lo siguiente:

  • Solo se requiere un grupo de extremos de red (NEG) de conectividad híbrida para acceder a tu host.
  • El balanceador de cargas TCP no requiere la clave privada sin encriptar de tu certificado SSL.
  • Tu configuración de Cloud VPN debe usar Cloud Router con enrutamiento dinámico global. Si tu Cloud VPN usa enrutamiento estático, puedes usar un proxy que use Cloud Service Mesh en su lugar. Para obtener más información, consulta Configura servicios perimetrales de red para implementaciones híbridas.

Para obtener más información sobre cómo crear un balanceador de cargas HTTPS, consulta Configura un balanceador de cargas de aplicaciones interno con conectividad híbrida. Para obtener más información sobre cómo crear un balanceador de cargas TCP, consulta Configura un balanceador de cargas de red de proxy interno regional con conectividad híbrida.

Crear una conexión

En esta sección, se describe cómo crear una conexión entre Developer Connect y GitHub Enterprise. Si usas la consola de Google Cloud , también puedes comenzar a agregar vínculos a repositorios cuando termines de configurar tu conexión.

Para crear una conexión nueva de GitHub Enterprise, selecciona una de las siguientes opciones:

Console

Para iniciar una conexión, completa los siguientes pasos:

  1. En la consola de Google Cloud , abre Developer Connect.

    Ir a Developer Connect

    Developer Connect muestra la página Git repositories.

    • Si ves una lista de proveedores de administración de código fuente: Selecciona un proveedor de administración de código fuente para comenzar a configurar tu primera conexión. Haz clic en Conectar en la tarjeta de GitHub Enterprise.
    • Si ves una tabla con las conexiones existentes, haz clic en Crear conexión > GitHub Enterprise para configurar el proveedor de administración de código fuente.

      Se abrirá la página Create Connection.

  2. En Región, elige una región para tus recursos de conexión.

    1. En Nombre, ingresa un nombre para la conexión nueva.
  3. Activa la casilla de verificación Habilitar una conexión que cumpla con la residencia de datos para que esta conexión cumpla con los requisitos de residencia de datos.

    Las conexiones de GitHub creadas con la consola de Google Cloud cumplen con la residencia de datos si activas esta casilla de verificación cuando creas la conexión. Cuando lo hagas, Developer Connect creará una app de GitHub.

    Cuando creas conexiones de GitHub con Google Cloud CLI, esas conexiones no cumplen con la residencia de datos. Todos los demás tipos de conexión cumplen con la residencia de datos.

  4. En URL del host, ingresa la URL del host al que deseas conectarte.

  5. Haz clic en Mostrar más para ver los parámetros de configuración opcionales.

    1. La casilla de verificación Habilitar proxy de Developer Connect está seleccionada de forma predeterminada para que Developer Connect pueda actuar como proxy para las llamadas de Git a GitHub Enterprise.

    2. En la sección Redes, en Tipo de red, elige Red privada.

    3. En Certificado de CA, haz clic en Explorar para subir tu certificado autofirmado.

      El tamaño del certificado no debe superar los 10 KB y debe estar en formato PEM (.pem, .cer o .crt). Si esta sección se deja en blanco, se usará un conjunto predeterminado de certificados.

    4. En la sección Servicio de Service Directory, selecciona la ubicación de tu servicio:

      • En el proyecto your-project
      • En otro proyecto
      • Ingresar manualmente

      Si seleccionas En otro proyecto o Ingresar manualmente, especifica tu Google Cloud ID del proyecto. Selecciona el proyecto en el menú desplegable o ingresa el ID del proyecto de forma manual.

    5. Región: Selecciona la región de tu servicio de Directorio de servicios. La región especificada para tu servicio debe coincidir con la región asociada a tu conexión.

    6. Espacio de nombres: Selecciona el espacio de nombres de tu servicio de Directorio de servicios.

    7. Servicio: Selecciona el nombre del servicio de Directorio de servicios en tu espacio de nombres.

    8. Opcional: En la sección Encriptación, selecciona una clave de CMEK para encriptar los secretos de Secret Manager que crea Developer Connect.

  6. Haz clic en Continuar.

    Aparecerá un diálogo de GitHub que te invitará a crear una app de GitHub.

  7. Sigue las instrucciones en GitHub para completar estas tareas:

    1. Ingresa un nombre para tu app.

    2. Elige la organización en la que deseas instalar la app.

    3. Selecciona los repositorios a los que quieres otorgar acceso.

    El diálogo se cierra.

    Developer Connect recupera tu clave privada de GitHub y la almacena en tu proyecto de Google Cloud como un secreto de Secret Manager. Para ver tus secretos, enumera los secretos en Secret Manager.

Una vez que se crea la conexión, aparece la página Vincular repositorios.

Sigue estos pasos para vincular repositorios a tu conexión:

  1. En la lista de repositorios disponibles, selecciona los que deseas usar.

  2. Haz clic en Aceptar.

  3. Haz clic en Vincular.

Tu conexión se agrega a la página Connections y los vínculos a tu repositorio se agregan a la página Repositories en la consola de Google Cloud . Puedes agregar más vínculos a las conexiones existentes en cualquier momento.

Si estás configurando Gemini Code Assist, continúa el proceso siguiendo los pasos que se indican en Cómo configurar y usar la personalización de código de Gemini Code Assist.

gcloud

Las siguientes tareas requieren que realices algunas acciones en tu navegador web.

  1. Ejecuta el comando gcloud developer-connect connections create para crear una conexión con 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
    

    Reemplaza lo siguiente:

    • CONNECTION_NAME: Es el nombre de tu conexión.
    • REGION: Es la región de tu conexión.
    • HOST_URI: Es el URI del host al que deseas conectarte.
    • SERVICE_DIRECTORY_RESOURCE: Es la ruta de acceso al recurso del Directorio de servicios, en el formato projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE.
    • --git-proxy-config-enabled es una marca opcional que permite que Developer Connect actúe como proxy para las llamadas de Git a GitHub Enterprise. Debes habilitar esta función cuando ejecutes la personalización de código de Gemini Code Assist en repositorios de código fuente de GitHub Enterprise alojados en redes privadas.
    • --github-enterprise-config-ssl-ca-certificate es una marca opcional para agregar un certificado SSL, en el formato $HOME/my-ssl-ca.txt.
  2. Debes crear una app de GitHub para administrar las conexiones con GitHub. Ejecuta el siguiente comando para obtener el URI de configuración de la app:

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

    Reemplaza lo siguiente:

    • CONNECTION_NAME: Es el nombre de tu conexión.
    • REGION: Es la región de tu conexión.

    Developer Connect devuelve un vínculo para completar los próximos pasos en una ventana del navegador. Cópielo.

  3. Abre el vínculo en un navegador web.

  4. Accede a tu cuenta de GitHub si se te solicita.

  5. Sigue las instrucciones en GitHub para completar estas tareas:

    1. Ingresa un nombre para tu app.

    2. Elige la organización en la que deseas instalar la app.

    3. Selecciona los repositorios a los que quieres otorgar acceso.

    El diálogo se cierra.

    Developer Connect recupera tu clave privada de GitHub y la almacena en tu proyecto de Google Cloud como un secreto de Secret Manager. Para ver tus secretos, enumera los secretos en Secret Manager.

Verifica la conexión

Ejecuta el siguiente comando para verificar la creación de tu conexión de GitHub:

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

Aquí:

  • CONNECTION_NAME: Es el nombre de tu conexión.
  • REGION: Es la región de tu conexión.

Developer Connect devuelve un estado en el campo installationState. Si el valor de este campo es COMPLETE, se completó la instalación de la app. De lo contrario, Developer Connect devuelve un URI para que vuelvas a la configuración en el navegador.

Una vez que se complete la conexión, elige qué repositorios vincular siguiendo las instrucciones en Vincular a repositorios.

Una vez que establezcas una conexión con GitHub Enterprise, podrás vincularte a repositorios. Puedes repetir estos pasos más adelante para vincular repositorios adicionales según sea necesario.

Para crear vínculos de repositorios en una conexión existente de GitHub Enterprise, selecciona una de las siguientes opciones:

Console

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios

  2. Haz clic en Vincular repositorio.

    Se abrirá el panel Vincular repositorios de Git.

  3. En la lista de conexiones, elige una.

  4. Haz clic en Continuar.

  5. En la lista de repositorios, selecciona los que deseas vincular.

  6. Haz clic en Crear.

Developer Connect crea los vínculos del repositorio y los muestra en la consola Google Cloud .

gcloud

Ejecuta el siguiente comando:

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

Reemplaza lo siguiente:

  • REPO_NAME: Es el nombre del vínculo a tu repositorio.
  • REPO_URI: Es el vínculo a tu repositorio. Por ejemplo, https://github.com/cloud-build/test-repo.git
  • CONNECTION_NAME: Es el nombre de tu conexión.
  • REGION: Es la región de tu conexión.

Developer Connect crea los vínculos del repositorio.

Para enumerar los repositorios vinculados, ejecuta el comando developer-connect connections git-repository-links list.

Si estás configurando Gemini Code Assist, continúa el proceso siguiendo los pasos que se indican en Cómo configurar y usar la personalización de código de Gemini Code Assist.

Uso compartido de datos

Es posible que el contenido de los recursos de Google Cloud vinculados a esta conexión se transfiera a GitHub. Esta declaración se aplica a todos los recursos existentes y futuros que utilicen esta conexión. Para dejar de compartir información con GitHub, borra las conexiones de Developer Connect en la Google Cloud consola o gcloud CLI, y revoca el acceso en GitHub.

¿Qué sigue?