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. Elle explique également comment créer des dépôts à partir de GitHub Enterprise si votre instance est hébergée dans un réseau privé.

Avant de commencer

  • Activez les API Cloud Build et Service Directory.

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.

    Activer les API

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

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

Procédez comme suit pour connecter votre instance GitHub Enterprise à Cloud Build à partir d'un réseau privé :

  1. Accordez l'accès à Service Directory à l'agent de service 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID correspond à l'ID de votre projet Cloud Build.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY correspond à l'ID de votre Google Cloud projet qui contient votre Annuaire des services.
  2. Accordez l'accès aux ressources du réseau VPC à l'agent de service 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"
    

    Remplacez les éléments suivants :

    • PROJECT_ID correspond à l'ID de votre projet Cloud Build.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE correspond à l'ID de votre Google Cloud projet qui contient votre ressource réseau.
  3. Configurez un service Annuaire des services en procédant 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 correspond au nom de votre espace de noms Annuaire des services.
      • LOCATION correspond à la région dans laquelle vous créez des connexions et associez des dépôts.
      • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY correspond à l'ID de votre Google Cloud projet qui contient votre Annuaire des 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 correspond au nom de votre ressource Annuaire des services.
      • NAMESPACE correspond au nom de votre espace de noms Annuaire des services.
      • LOCATION correspond à 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/global/networks/NETWORK
      

      Remplacez les éléments suivants :

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

    Vous pouvez maintenant utiliser la ressource de service (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) pour créer votre connexion en procédant comme suit.

  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 Service Directory pour joindre des hôtes en dehors de Google Cloud

Annuaire des 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 dans 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 Cloud Router, vous pouvez la configurer pour communiquer la plage à votre réseau privé.

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

Utiliser Cloud Load Balancing pour joindre des hôtes en dehors de Google Cloud

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

Lorsque vous créez le point de terminaison Annuaire des services, 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 un équilibreur de charge TCP (Transmission Control Protocol) interne 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 joindre votre hôte.
  • L'équilibreur de charge TCP ne nécessite pas la clé privée non chiffrée pour votre certificat SSL.
  • Votre configuration Cloud VPN doit utiliser Cloud Router avec le routage dynamique mondial. Si votre Cloud VPN utilise un routage statique, vous pouvez utiliser un proxy qui utilise Cloud Service Mesh à la place. Pour en savoir plus, consultez la section Configurer des services de périphérie réseau pour les déploiements hybrides.

Pour en savoir plus sur la création d'un équilibreur de charge HTTPS, consultez la section 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 la section Configurer un équilibreur de charge réseau proxy interne régional avec une connectivité hybride.

Étapes suivantes