Compila repositorios de GitLab Enterprise Edition en una red privada

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

En esta página, se explica cómo habilitar la funcionalidad de activador en una instancia de GitLab Enterprise Edition si tu instancia está alojada en una red privada.

Antes de comenzar

  • Habilita las APIs de Cloud Build, Secret Manager, Compute Engine y Service Networking.

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    Habilitar las API

Compila repositorios de 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 del Directorio de servicios y compilar con grupos privados. El proyecto que contiene tu red de VPC puede existir en un proyecto diferente del que contiene tu servicio del Directorio de servicios. Usa las siguientes instrucciones para asegurarte de que se pueda acceder a tu instancia antes de crear activadores:

  1. Habilita la API de Service Directory.

  2. Asegúrate de tener el rol de administrador de IAM otorgado al Google Cloud proyecto en el que deseas crear tu servicio del Directorio de servicios. Para obtener información sobre cómo otorgar roles de IAM, consulta Configura el acceso a los recursos de Cloud Build.

  3. Para configurar un servicio del Directorio de servicios, completa los siguientes 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 la conexión de host de Cloud Build.

    2. Configura un servicio en tu espacio de nombres.

    3. Configura un extremo para tu servicio registrado.

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

    Para obtener más información sobre la configuración del acceso a la red privada, consulta Configura el acceso privado a la red. El Directorio de servicios también proporciona integración con servicios como balanceadores de cargas y Google Kubernetes Engine (GKE). Para obtener más información, consulta Descripción general del Directorio de servicios y el balanceo de cargas o Descripción general del Directorio de servicios para GKE.

  4. Otorga acceso al 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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID es tu ID del proyecto de Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY es el ID de tu Google Cloud proyecto que contiene tu Directorio de servicios.
  5. Otorga acceso a los recursos de la red de 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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID es tu ID del proyecto de Cloud Build.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE es el ID de tu Google Cloud proyecto que contiene tu recurso de red.
  6. Usa grupos privados para ejecutar tus compilaciones. Si no creaste un grupo privado, consulta crea un nuevo grupo privado.

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

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

Tu activador de GitLab Enterprise Edition ahora invocará automáticamente compilaciones en tu instancia de GitLab Enterprise Edition según tu configuración.

Usa el Directorio de servicios para comunicarte con hosts externos Google Cloud

El 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 comunicarte con hosts externos Google Cloud

Si la configuración de tu red no te permite enrutar el rango de direcciones IP del Directorio de servicios 35.199.192.0/19 a la 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 del 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 de 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 comunicarse con tu host.
  • El balanceador de cargas de TCP no requiere la clave privada sin encriptar para 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. Para obtener más información, consulta Configura servicios de borde de red para implementaciones híbridas.

Para obtener más información sobre cómo crear un balanceador de cargas de 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 de TCP, consulta Configura un balanceador de cargas de red del proxy interno regional con conectividad híbrida.

Uso compartido de datos

Los datos enviados a GitLab Enterprise Edition desde Cloud Build te ayudan a identificar los activadores por nombre y ver los resultados de la compilación en tus repositorios de GitLab Enterprise Edition.

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

  • Google Cloud ID del proyecto
  • Nombre del activador

¿Qué sigue?