Crear 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 de una instancia de GitHub Enterprise, así como crear repositorios desde GitHub Enterprise si tu instancia está alojada en una red privada.

Antes de empezar

  • Enable the Cloud Build and Service Directory APIs.

    Enable the APIs

  • Si no has creado ningún grupo privado, sigue las instrucciones que se indican en el artículo Crear y gestionar grupos privados para crear uno. Necesitarás un grupo privado para compilar en una red privada.

Crear repositorios desde GitHub Enterprise en una red privada

Sigue estos pasos para conectar tu instancia de GitHub Enterprise a Cloud Build desde una red privada:

  1. 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.
  2. 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.
  3. Para configurar un servicio de 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
      

      Haz los cambios siguientes:

      • NAMESPACE es el nombre de tu espacio de nombres de 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 proyectoGoogle Cloud que contiene tu Service Directory.
    2. Configura un servicio para tu espacio de nombres:

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

      Haz los cambios siguientes:

      • SERVICE es el nombre de tu recurso de Service Directory.
      • NAMESPACE es el nombre de tu espacio de nombres de Directorio de servicios.
      • LOCATION es la región en la que creas conexiones y vinculas repositorios.
    3. Configura un endpoint 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/global/networks/NETWORK
      

      Haz los cambios siguientes:

      • ENDPOINT_NAME es el nombre de tu endpoint.
      • NAMESPACE es el nombre de tu espacio de nombres de Directorio de servicios.
      • SERVICE es el nombre de tu recurso de Service Directory.
      • LOCATION es la región en la que creas conexiones y vinculas repositorios.
      • INSTANCE_IP_ADDRESS es la dirección IP de tu instancia de GitHub Enterprise en tu red. Por ejemplo, 123.45.67.89. Para obtener más información, consulta Usar Service Directory para contactar con hosts externos Google Cloud.
      • PORT es el nombre del puerto de HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK es el ID del proyecto 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 siguiendo los pasos que se indican a continuación.

  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.

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.

Pasos siguientes