Repositories von 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 können. Außerdem wird erläutert, wie Sie Repositories von GitHub Enterprise erstellen, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird.

Hinweise

  • Cloud Build and Service Directory APIs aktivieren.

    Aktivieren Sie die APIs

  • Wenn Sie noch keinen privaten Pool erstellt haben, folgen Sie der Anleitung unter Private Pools erstellen und verwalten. Für den Aufbau eines privaten Netzwerks benötigen Sie einen privaten Pool.

Repositories von GitHub Enterprise in einem privaten Netzwerk erstellen

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

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

    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 Google Cloud-Projekt-ID.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY ist die ID des Google Cloud-Projekts, das Ihr Service Directory enthält.
  2. Gewähren Sie Zugriff auf Ihre VPC-Netzwerkressource, wobei PROJECT_ID_CONTAINING_NETWORK_RESOURCE die ID des Google Cloud-Projekts ist, das Ihre Netzwerkressource enthält.

    gcloud projects add-iam-policy-binding PROJECT_ID_CONTAINING_NETWORK_RESOURCE \
      --member="serviceAccount:$CLOUD_BUILD_SERVICE_AGENT" \
      --role="roles/servicedirectory.pscAuthorizedService"
    
  3. Führen Sie die folgenden Schritte aus, um einen Service Directory-Dienst einzurichten:

    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 des 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/us-central1/ 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 der GitHub Enterprise-Instanz in Ihrem Netzwerk. Beispiel: 123.45.67.89. Weitere Informationen finden Sie unter Hosts außerhalb von Google Cloud mit Service Directory erreichen.
      • PORT ist der Name Ihres Ports für HTTPS.
      • PROJECT_ID_CONTAINING_NETWORK ist die ID Ihres Google Cloud-Projekts, das 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 die Verbindung in den folgenden Schritten zu erstellen.

  4. GitHub Enterprise-Host verbinden

  5. GitHub Enterprise-Repository verbinden

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

Mit Service Directory Hosts außerhalb von Google Cloud erreichen

Service Directory verwendet den IP-Adressbereich 35.199.192.0/19, um eine Verbindung zu Ihrem GitHub Enterprise-Host herzustellen. Sie müssen diesen Bereich in Ihrer Firewall auf die Zulassungsliste setzen. Darüber hinaus 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 die Verbindung so konfigurieren, dass der Bereich bei Ihrem privaten Netzwerk angemeldet wird.

Weitere Informationen finden Sie unter Privaten Netzwerkzugriff konfigurieren.

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

Wenn es in Ihrer Netzwerkkonfiguration nicht möglich ist, den Service Directory-IP-Adressbereich 35.199.192.0/19 an Cloud VPN oder Cloud Interconnect weiterzuleiten, können Sie mithilfe von Cloud Load Balancing einen Load-Balancer erstellen, der den Traffic an Ihren Host weiterleitet.

Achten Sie beim Erstellen des Service Directory-Endpunkts darauf, dass Sie die IP-Adresse der Weiterleitungsregel des Load-Balancers anstelle der IP-Adresse Ihres Hosts verwenden. Sie können beim Erstellen des Endpunkts einen internen HTTPS-Load-Balancer oder einen internen TCP-Load-Balancer (Übertragungssteuerungsprotokoll) verwenden.

Berücksichtigen Sie beim Erstellen des TCP-Load-Balancers Folgendes:

  • Zum Erreichen des Hosts ist nur eine Netzwerk-Endpunktgruppe für Hybridkonnektivität (NEG) erforderlich.
  • Der TCP-Load-Balancer benötigt den unverschlüsselten privaten Schlüssel für Ihr SSL-Zertifikat nicht.
  • Ihre Cloud VPN-Einrichtung muss Cloud Router mit globalem dynamischem Routing verwenden. Wenn Ihr Cloud VPN statisches Routing verwendet, können Sie einen Proxy verwenden, der stattdessen Traffic Director verwendet. Weitere Informationen finden Sie unter Edge-Netzwerkdienste für Hybridbereitstellungen einrichten.

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

Nächste Schritte