Crear repositorios desde GitLab Enterprise Edition en una red privada

Cloud Build te permite crear activadores para compilar a partir de repositorios alojados en GitLab Enterprise Edition, lo que te permite ejecutar compilaciones en respuesta a eventos como inserciones de confirmaciones o solicitudes de combinación asociadas a tu repositorio de GitLab Enterprise Edition.

En esta página se explica cómo puedes habilitar la función de activación en una instancia de GitLab Enterprise Edition si tu instancia está alojada en una red privada.

Antes de empezar

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

    Enable the APIs

Crear repositorios desde GitLab Enterprise Edition en una red privada

Si solo se puede acceder a tu instancia de GitLab Enterprise Edition desde una red de VPC, debes configurar un servicio de Directorio de servicios y compilar con grupos privados. El proyecto que contiene tu red de VPC puede estar en un proyecto diferente al que contiene tu servicio Service Directory. Sigue estas instrucciones para asegurarte de que se puede acceder a tu instancia antes de crear los activadores:

  1. Habilita la API Service Directory.

  2. Asegúrate de que tienes asignado el rol Administrador de gestión de identidades y accesos de proyectos en el Google Cloud proyecto en el que quieras crear tu servicio de Service Directory. Para saber cómo conceder roles de gestión de identidades y accesos, consulta el artículo sobre cómo configurar el acceso a los recursos de Cloud Build.

  3. Para configurar un servicio de Directorio de servicios, sigue estos pasos:

    1. Configura un espacio de nombres para tu Google Cloud proyecto.

      La región que especifiques en tu espacio de nombres debe coincidir con la región que especifiques en tu conexión de host de Cloud Build.

    2. Configura un servicio en tu espacio de nombres.

    3. Configura un endpoint para el servicio registrado.

      Cuando configures un endpoint, debes usar una dirección IP interna y especificar un número de puerto HTTPS para que Cloud Build pueda acceder a tu servicio.

    Para obtener más información sobre la configuración del acceso a redes privadas, consulta el artículo Configurar el acceso a redes privadas. Directorio de Servicios también se integra con servicios como balanceadores de carga y Google Kubernetes Engine (GKE). Para obtener más información, consulta la información general sobre Service Directory y el balanceo de carga o la información general sobre Service Directory para GKE.

  4. Concede acceso a Directorio de servicios al agente de servicio de 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"
    

    Haz los cambios siguientes:

    • PROJECT_ID es el ID de tu proyecto de Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY es el ID delGoogle Cloud proyecto que contiene tu Service Directory.
  5. Concede acceso a los recursos de la red VPC al agente de servicio de 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"
    

    Haz los cambios siguientes:

    • PROJECT_ID es el ID de tu proyecto de Cloud Build.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE es el ID del Google Cloud proyecto que contiene tu recurso de red.
  6. Usa grupos privados para ejecutar tus compilaciones. Si no has creado ningún grupo privado, consulta cómo crear uno.

  7. Sigue las instrucciones para crear un activador de GitLab Enterprise Edition y compila repositorios alojados en una instancia de GitLab Enterprise Edition.

    Si incluyes un certificado autofirmado o privado al conectar tu host de GitLab Enterprise Edition a Cloud Build, debes definir el URI del host como nombre alternativo del sujeto (SAN) de tu certificado.

Ahora, el activador de GitLab Enterprise Edition invocará automáticamente compilaciones en tu instancia de GitLab Enterprise Edition en función de tu configuración.

Usar Service Directory para llegar a hosts externos Google Cloud

Service Directory usa el intervalo de direcciones IP 35.199.192.0/19 para conectar tu host fuera de Google Cloud. Debes añadir este intervalo a una lista de permitidos de tu cortafuegos. Además, tu red privada debe configurarse para enrutar este intervalo 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 intervalo a tu red privada.

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

Usar Cloud Load Balancing para acceder a hosts externos Google Cloud

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

Cuando crees el endpoint de Service Directory, asegúrate de usar la dirección IP de la regla de reenvío del balanceador de carga en lugar de la dirección IP de tu host. Puedes usar un balanceador de carga HTTPS interno o un balanceador de carga de protocolo de control de transmisión (TCP) interno al crear tu endpoint.

Cuando cree su balanceador de carga TCP, tenga en cuenta lo siguiente:

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

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

Compartir datos

Los datos que Cloud Build envía a GitLab Enterprise Edition te ayudan a identificar activadores por su nombre y a ver los resultados de las compilaciones en tus repositorios de GitLab Enterprise Edition.

Los siguientes datos se comparten entre Cloud Build y GitLab Enterprise Edition:

  • Google Cloud ID de proyecto
  • Nombre del activador

Siguientes pasos