Compila repositorios desde GitHub Enterprise en una red privada

Cloud Build te permite crear activadores en una instancia de GitHub Enterprise. En esta página, se explica cómo puedes usar los activadores de GitHub Enterprise para invocar compilaciones en respuesta a confirmaciones o solicitudes de extracción desde una instancia de GitHub Enterprise y se explica cómo puedes compilar repositorios desde GitHub Enterprise si tu instancia está alojada en una red privada.

Antes de comenzar

  • Habilita las API de Cloud Build and Service Directory.

    Habilita las API

  • Si no creaste un grupo privado, sigue las instrucciones en Crea y administra grupos privados para crear uno. Necesitarás un grupo privado para compilar en una red privada.

Compila repositorios desde GitHub Enterprise en una red privada

Completa los siguientes pasos para conectar tu instancia de GitHub Enterprise a Cloud Build desde una red privada:

  1. Otorga acceso al agente de servicio de Cloud Build para usar el Directorio de servicios:

    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 Google Cloud.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY es el ID del proyecto de Google Cloud que contiene el Directorio de servicios.
  2. Otorga acceso a tu recurso de red de VPC, en el que PROJECT_ID_CONTAINING_NETWORK_RESOURCE es el ID del proyecto de Google Cloud que contiene tu recurso de red.

    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
      --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
      --role="roles/servicedirectory.pscAuthorizedService"
    
  3. Para configurar un servicio del Directorio de servicios, sigue estos pasos:

    1. Configura un espacio de nombres para tu servicio:

       gcloud service-directory namespaces create NAMESPACE --location=REGION --project=PROJECT_ID_CONTAINING_SERVICE_DIRECTORY
      

      Reemplaza lo siguiente:

      • NAMESPACE es el nombre del espacio de nombres de tu Directorio de servicios.
      • LOCATION es la región en la que creas conexiones y vinculas repositorios.
      • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY es el ID del proyecto de Google Cloud que contiene el Directorio de servicios.
    2. Configura un servicio para tu espacio de nombres:

       gcloud service-directory services create SERVICE --namespace=NAMESPACE --location=LOCATION
      

      Reemplaza lo siguiente:

      • SERVICE es el nombre de tu recurso del Directorio de servicios.
      • NAMESPACE es el nombre del espacio de nombres de tu Directorio de servicios.
      • LOCATION es la región en la que creas conexiones y vinculas repositorios.
    3. Configura un extremo para tu servicio:

       gcloud service-directory endpoints create ENDPOINT_NAME \
         --namespace=NAMESPACE \
         --service=SERVICE \
         --location=LOCATION \
         --address=INSTANCE_IP_ADDRESS \
         --port=PORT \
         --network=projects/PROJECT_ID_CONTAINING_NETWORK/locations/us-central1/ networks/NETWORK
      

      Reemplaza lo siguiente:

      • ENDPOINT_NAME es el nombre de tu extremo.
      • NAMESPACE es el nombre del espacio de nombres de tu Directorio de servicios.
      • SERVICE es el nombre de tu recurso del Directorio de servicios.
      • LOCATION es la región en la que creas conexiones y vinculas repositorios.
      • INSTANCE_IP_ADDRESS es la dirección IP de la instancia de GitHub Enterprise en tu red. Por ejemplo, 123.45.67.89 Si quieres obtener más información, consulta Usa el Directorio de servicios para llegar a hosts fuera de Google Cloud.
      • PORT es el nombre de tu puerto para HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK es el ID del proyecto de Google Cloud que contiene tu red de VPC.
      • NETWORK es el nombre de tu red de VPC.

    Ahora puedes usar el recurso de servicio (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) para crear tu conexión en los siguientes pasos.

  4. Conecta un host de GitHub Enterprise.

  5. Conecta un repositorio de GitHub Enterprise.

  6. Crea un activador de GitHub Enterprise para compilar repositorios alojados en tu instancia de GitHub Enterprise.

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

El Directorio de servicios usa el rango de direcciones IP 35.199.192.0/19 para conectar tu host de GitHub Enterprise. Debes incluir este rango en la lista de entidades permitidas de tu firewall. Además, se debe configurar tu red privada para enrutar este rango a través de Cloud VPN o la conexión de Cloud Interconnect.

Si tu conexión utiliza un Cloud Router, puedes configurarla para que anuncie el rango en tu red privada.

Para obtener más información, consulta Configura el acceso a redes privadas.

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

Si tu configuración de red no te permite enrutar el rango de direcciones IP del Directorio de servicios 35.199.192.0/19 a Cloud VPN o Cloud Interconnect, puedes crear un balanceador de cargas mediante 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 HTTPS interno o un balanceador de cargas de protocolo de control de transmisión interno (TCP) cuando creas el extremo.

Cuando crees tu balanceador de cargas TCP, considera lo siguiente:

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

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

Próximos pasos