Repositories aus GitHub Enterprise in einem privaten Netzwerk erstellen

Mit Cloud Build können Sie Trigger auf einer GitHub Enterprise-Instanz erstellen. Auf dieser Seite wird erläutert, wie Sie mit GitHub Enterprise-Triggern Builds als Reaktion auf Commits oder Pull-Anfragen von einer GitHub Enterprise-Instanz aufrufen und wie Sie Repositories aus GitHub Enterprise erstellen können, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird.

Hinweis

  • Aktivieren Sie die Cloud Build API und die Service Directory API.

    Erforderliche Rollen zum Aktivieren von APIs

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen.

    APIs aktivieren

  • Wenn Sie keinen privaten Pool erstellt haben, folgen Sie der Anleitung unter Private Pools erstellen und verwalten , um einen privaten Pool zu erstellen. Sie benötigen einen privaten Pool, um in einem privaten Netzwerk zu erstellen.

Repositories aus GitHub Enterprise in einem privaten Netzwerk erstellen

Führen Sie die folgenden Schritte aus, um Ihre GitHub Enterprise-Instanz aus einem privaten Netzwerk mit Cloud Build zu verbinden:

  1. Gewähren Sie dem Cloud Build-Dienstagenten Zugriff auf Service Directory:

    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"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist Ihre Cloud Build-Projekt-ID.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY ist die ID Ihres Google Cloud Projekts, das Ihr Service Directory enthält.
  2. Gewähren Sie dem Cloud Build-Dienstagenten Zugriff auf VPC-Netzwerkressourcen:

    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"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist Ihre Cloud Build-Projekt-ID.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE ist die ID Ihres Google Cloud Projekts, das Ihre Netzwerkressource enthält.
  3. Richten Sie einen Service Directory-Dienst ein. Gehen Sie dazu so vor:

    1. Konfigurieren Sie einen Namespace für Ihren Dienst:

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

      Ersetzen Sie Folgendes:

      • NAMESPACE ist der Name Ihres Service Directory-Namespace.
      • LOCATION ist die Region, in der Sie Verbindungen erstellen und Repositories verknüpfen.
      • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY ist die ID Ihres Google Cloud Projekts, das Ihr Service Directory enthält.
    2. Konfigurieren Sie einen Dienst für Ihren Namespace:

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

      Ersetzen Sie Folgendes:

      • SERVICE ist der Name Ihrer Service Directory-Ressource.
      • NAMESPACE ist der Name Ihres Service Directory-Namespace.
      • LOCATION ist die Region, in der Sie Verbindungen erstellen und Repositories verknüpfen.
    3. Konfigurieren Sie einen Endpunkt für Ihren Dienst:

       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
      

      Ersetzen Sie Folgendes:

      • ENDPOINT_NAME ist der Name Ihres Endpunkts.
      • NAMESPACE ist der Name Ihres Service Directory-Namespace.
      • SERVICE ist der Name Ihrer Service Directory-Ressource.
      • LOCATION ist die Region, in der Sie Verbindungen erstellen und Repositories verknüpfen.
      • INSTANCE_IP_ADDRESS ist die IP-Adresse Ihrer GitHub Enterprise Instanz in Ihrem Netzwerk. Beispiel: 123.45.67.89. Weitere Informationen finden Sie unter Service Directory verwenden, um Hosts außerhalb zu erreichen Google Cloud.
      • PORT ist der Name Ihres Ports für HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK ist Ihre Google Cloud Projekt-ID, die Ihr VPC-Netzwerk enthält.
      • NETWORK ist der Name Ihres VPC-Netzwerk.

    Sie können jetzt die Dienstressource (projects/{PROJECT_ID}/locations/{LOCATION}/namespaces/{NAMESPACE}/services/{SERVICE}) verwenden, um in den folgenden Schritten eine Verbindung herzustellen.

  4. GitHub Enterprise-Host verbinden.

  5. GitHub Enterprise-Repository verbinden.

  6. Erstellen Sie einen GitHub Enterprise-Trigger, um auf Ihrer GitHub Enterprise-Instanz gehostete Repositories zu erstellen.

Service Directory verwenden, um Hosts außerhalb zu erreichen Google Cloud

Service Directory verwendet den IP-Adressbereich 35.199.192.0/19, um eine Verbindung zu Ihrem Host außerhalb von herzustellen Google Cloud. Sie müssen diesen Bereich einer Zulassungsliste in Ihrer Firewall hinzufügen. Außerdem muss Ihr privates Netzwerk so konfiguriert sein, dass dieser Bereich über die Cloud VPN- oder Cloud Interconnect-Verbindung weitergeleitet wird.

Wenn Ihre Verbindung einen Cloud Router verwendet, können Sie sie so konfigurieren, dass der Bereich an Ihr privates Netzwerk weitergegeben wird.

Weitere Informationen finden Sie unter Privaten Netzwerkzugriff konfigurieren.

Cloud Load Balancing verwenden, um Hosts außerhalb zu erreichen Google Cloud

Wenn Ihre Netzwerkkonfiguration es nicht zulässt, den Service Directory-IP-Adressbereich 35.199.192.0/19 an die Cloud VPN oder Cloud Interconnect weiterzuleiten, können Sie einen Load-Balancer erstellen mit Cloud Load Balancing, der Traffic an Ihren Host weiterleitet.

Wenn Sie den Service Directory-Endpunkt erstellen, verwenden Sie die IP-Adresse der Weiterleitungsregel des Load-Balancers anstelle der IP-Adresse Ihres Hosts. Sie können beim Erstellen des Endpunkts einen internen HTTPS-Load-Balancer oder einen internen TCP-Load-Balancer (Transmission Control Protocol) verwenden.

Beachten Sie beim Erstellen des TCP-Load-Balancers Folgendes:

  • Zum Erreichen Ihres Hosts ist nur eine Netzwerk-Endpunktgruppe (NEG) mit Hybridkonnektivität erforderlich.
  • Für den TCP-Load-Balancer ist der unverschlüsselte private Schlüssel für Ihr SSL-Zertifikat nicht erforderlich.
  • Für Ihre Cloud VPN-Einrichtung muss Cloud Router mit globalem dynamischem Routing verwendet werden. Wenn Ihr Cloud VPN statisches Routing verwendet, können Sie stattdessen einen Proxy verwenden, der Cloud Service Mesh verwendet. Weitere Informationen finden Sie unter Netzwerk- Edge-Dienste für Hybrid- Bereitstellungen einrichten.

Weitere Informationen zum Erstellen eines HTTPS-Load-Balancers finden Sie unter Internen Application Load Balancer mit Hybridkonnektivität einrichten. Weitere Informationen zum Erstellen eines TCP-Load-Balancers finden Sie unter Regionalen internen Proxy-Network Load Balancer mit Hybridkonnektivität einrichten.

Nächste Schritte