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 mithilfe von GitHub Enterprise-Triggern Builds als Reaktion auf Commits oder Pull-Anfragen von einer GitHub Enterprise-Instanz aufrufen. Außerdem wird erklärt, wie Sie Repositories über GitHub Enterprise erstellen, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird.

Hinweise

  • Enable the Cloud Build and Service Directory APIs.

    Enable the APIs

  • Wenn Sie noch keinen privaten Pool erstellt haben, folgen Sie der Anleitung unter Private Pools erstellen und verwalten, um einen 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 die GitHub Enterprise-Instanz zu verbinden von einem privaten Netzwerk zu Cloud Build:

  1. Gewähren Sie dem Cloud Build-Dienst-Agent Service Directory-Zugriff:

    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 die ID Ihres Cloud Build-Projekts.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY ist die ID Ihres Google Cloud-Projekt, das Ihr Service Directory enthält.
  2. Gewähren Sie dem Cloud Build-Dienst-Agent 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 mit den folgenden Schritten einen Service Directory-Dienst ein:

    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 des 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 Serviceverzeichnis 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 der Service Directory-Ressource.
      • NAMESPACE ist der Name des 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/us-central1/ networks/NETWORK
      

      Ersetzen Sie Folgendes:

      • ENDPOINT_NAME ist der Name Ihres Endpunkts.
      • NAMESPACE ist der Name des 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 Ihres GitHub Enterprise-Kontos. in Ihrem Netzwerk. Beispiel: 123.45.67.89. Weitere Informationen finden Sie unter Mit Service Directory Hosts außerhalb von Google Cloud erreichen.
      • PORT ist der Name des Ports für HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK ist die Google Cloud-Projekt-ID, die Ihr VPC-Netzwerk enthält.
      • NETWORK ist der Name Ihres VPC-Netzwerks.

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

  4. Verbinden Sie einen GitHub Enterprise-Host.

  5. Verbinden Sie ein GitHub Enterprise-Repository.

  6. Erstellen Sie einen GitHub Enterprise-Trigger, um Repositories zu erstellen, die in Ihrem GitHub Enterprise-Instanz

Mit Service Directory Hosts außerhalb von Google Cloud erreichen

Das Service Directory verwendet den IP-Adressbereich 35.199.192.0/19, um eine Verbindung zu Ihrem Host außerhalb von Google Cloud herzustellen. 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 für Ihre Verbindung ein Cloud Router verwendet wird, können Sie die Verbindung so konfigurieren, dass der Bereich mit Ihrem privaten Netzwerk kommuniziert.

Weitere Informationen finden Sie unter Privaten Netzwerkzugriff konfigurieren.

Cloud Load Balancing für die Erreichbarkeit von Hosts außerhalb von Google Cloud verwenden

Wenn Sie mit Ihrer Netzwerkkonfiguration den IP-Adressbereich 35.199.192.0/19 des Serviceverzeichnisses nicht an Cloud VPN oder Cloud Interconnect weiterleiten können, können Sie mithilfe von Cloud Load Balancing einen Load Balancer erstellen, der den Traffic an Ihren Host weiterleitet.

Verwenden Sie beim Erstellen des Service Directory-Endpunkts 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 eines TCP-Load Balancers Folgendes:

  • Um Ihren Host zu erreichen, ist nur eine Netzwerk-Endpunktgruppe (NEG) mit Hybridkonnektivität erforderlich.
  • Der TCP-Load Balancer benötigt keinen unverschlüsselten privaten Schlüssel für Ihr SSL-Zertifikat.
  • 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 nutzt. Weitere Informationen finden Sie unter Netzwerk einrichten Edge-Dienste für Hybrid Bereitstellungen.

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