Créer des dépôts à partir de GitHub Enterprise dans un réseau privé

Cloud Build vous permet de créer des déclencheurs sur une instance GitHub Enterprise. Cette page explique comment utiliser des déclencheurs GitHub Enterprise pour appeler des compilations en réponse à des commits ou des demandes d'extraction à partir d'une instance GitHub Enterprise, et comment créer des dépôts à partir de GitHub Enterprise si votre instance est hébergée sur un réseau privé.

Avant de commencer

  • Enable the Cloud Build and Service Directory APIs.

    Enable the APIs

  • Si vous n'avez pas encore créé de pool privé, suivez les instructions de la section Créer et gérer des pools privés. Vous aurez besoin d'un pool privé pour dans un réseau privé.

Créer des dépôts à partir de GitHub Enterprise dans un réseau privé

Suivez les étapes ci-dessous pour connecter votre instance GitHub Enterprise à Cloud Build depuis un réseau privé:

  1. Accordez à l'agent de service Cloud Build l'accès à l'Annuaire des services:

    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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID est l'ID de votre projet Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY est l'identifiant de votre Projet Google Cloud contenant votre annuaire des services.
  2. Accordez à l'agent de service Cloud Build l'accès aux ressources du réseau VPC:

    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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID est l'ID de votre projet Cloud Build.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE est l'identifiant de votre Projet Google Cloud contenant votre ressource réseau.
  3. Pour configurer un service de l'Annuaire des services, procédez comme suit :

    1. Configurez un espace de noms pour votre service :

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

      Remplacez les éléments suivants :

      • NAMESPACE est le nom de votre espace de noms de l'Annuaire des services.
      • LOCATION est la région dans laquelle vous créez des connexions et associez des dépôts.
      • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY est l'ID de votre projet Google Cloud contenant votre répertoire de services.
    2. Configurez un service pour votre espace de noms :

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

      Remplacez les éléments suivants :

      • SERVICE est le nom de votre ressource Service Directory.
      • NAMESPACE est le nom de votre espace de noms de l'Annuaire des services.
      • LOCATION est la région dans laquelle vous créez des connexions et associez des dépôts.
    3. Configurez un point de terminaison pour votre service :

       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
      

      Remplacez les éléments suivants :

      • ENDPOINT_NAME est le nom de votre point de terminaison.
      • NAMESPACE est le nom de l'espace de noms de votre répertoire de services.
      • SERVICE est le nom de votre ressource Service Directory.
      • LOCATION est la région dans laquelle vous créez des connexions et associez des dépôts.
      • INSTANCE_IP_ADDRESS est l'adresse IP de votre instance GitHub Enterprise sur votre réseau. Exemple :123.45.67.89 Pour en savoir plus, consultez Utiliser l'annuaire des services pour accéder à des hôtes en dehors de Google Cloud.
      • PORT est le nom de votre port pour le protocole HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK est l'ID du projet Google Cloud qui contient votre réseau VPC.
      • NETWORK est le nom du réseau VPC.

    Vous pouvez désormais utiliser la ressource de service (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) pour créer votre connexion lors des étapes suivantes.

  4. Connectez un hôte GitHub Enterprise.

  5. Connectez un dépôt GitHub Enterprise.

  6. Créez un déclencheur GitHub Enterprise pour créer des dépôts hébergés sur votre Instance GitHub Enterprise.

Utiliser l'annuaire des services pour contacter des hôtes en dehors de Google Cloud

Le répertoire de services utilise la plage d'adresses IP 35.199.192.0/19 pour connecter votre hôte en dehors de Google Cloud. Vous devez ajouter cette plage à une liste d'autorisation de votre pare-feu. De plus, votre réseau privé doit être configuré pour acheminer cette plage via la connexion Cloud VPN ou Cloud Interconnect.

Si votre connexion utilise un routeur Cloud Router, vous pouvez configurer votre connexion pour communiquer la plage à votre réseau privé.

Pour en savoir plus, consultez Configurer l'accès à un réseau privé.

Utiliser Cloud Load Balancing pour atteindre des hôtes extérieurs à Google Cloud

Si votre configuration réseau ne vous permet pas d'acheminer la plage d'adresses IP du répertoire de services 35.199.192.0/19 vers Cloud VPN ou Cloud Interconnect, vous pouvez créer un équilibreur de charge à l'aide de l'équilibrage de charge Cloud qui dirige le trafic vers votre hôte.

Lorsque vous créez le point de terminaison du service Directory, veillez à utiliser l'adresse IP de la règle de transfert de l'équilibreur de charge au lieu de l'adresse IP de votre hôte. Vous pouvez utiliser un Équilibreur de charge HTTPS interne ou Équilibreur de charge TCP (Internal Transmission Control Protocol) lorsque vous créez votre point de terminaison.

Lorsque vous créez votre équilibreur de charge TCP, tenez compte des points suivants:

  • Seul un groupe de points de terminaison du réseau (NEG) de connectivité hybride est nécessaire pour atteindre votre hôte.
  • L'équilibreur de charge TCP n'a pas besoin de la clé privée non chiffrée pour votre Certificat SSL.
  • Votre configuration Cloud VPN doit utiliser Cloud Router avec des le routage dynamique. Si votre Cloud VPN utilise le routage statique, vous pouvez utiliser un proxy qui utilise Cloud Service Mesh à la place. Pour en savoir plus, consultez la section Configurer un réseau services en périphérie pour les environnements déploiement.

Pour en savoir plus sur la création d'un équilibreur de charge HTTPS, consultez la page Configurer un équilibreur de charge d'application interne avec une connectivité hybride. Pour en savoir plus sur la création d'un équilibreur de charge TCP, consultez Configurer un équilibreur de charge réseau proxy interne régional avec une connectivité hybride.

Étapes suivantes