Repositories aus der GitLab Enterprise Edition in einem privaten Netzwerk erstellen

Mit Cloud Build können Sie Trigger zum Erstellen von Repositories erstellen, die in der GitLab Enterprise Edition gehostet werden. So können Sie Builds als Reaktion auf Ereignisse wie Commit-Pushes oder Merge-Anfragen ausführen, die mit Ihrem GitLab Enterprise Edition-Repository verknüpft sind.

Auf dieser Seite wird erläutert, wie Sie die Triggerfunktion auf einer GitLab Enterprise Edition-Instanz aktivieren, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird.

Hinweise

  • Enable the Cloud Build, Secret Manager, Compute Engine, and Service Networking APIs.

    Enable the APIs

Repositories aus der GitLab Enterprise Edition in einem privaten Netzwerk erstellen

Wenn auf Ihre GitLab Enterprise Edition-Instanz nur innerhalb eines VPC-Netzwerks zugegriffen werden kann, müssen Sie einen Service Directory-Dienst einrichten und Builds mit privaten Pools erstellen. Das Projekt mit Ihrem VPC-Netzwerk kann sich in einem anderen Projekt befinden als das Projekt mit Ihrem Service Directory-Dienst. Prüfen Sie anhand der folgenden Anleitung, ob Ihre Instanz erreichbar ist, bevor Sie Trigger erstellen:

  1. Aktivieren Sie die Service Directory API.

  2. Sie benötigen die Rolle Project IAM Admin für dasGoogle Cloud -Projekt, in dem Sie den Dienstverzeichnisdienst erstellen möchten. Eine Anleitung zum Zuweisen von IAM-Rollen finden Sie unter Zugriff auf Cloud Build-Ressourcen konfigurieren.

  3. So richten Sie einen Service Directory-Dienst ein:

    1. Konfigurieren Sie einen Namespace für Ihr Google Cloud Projekt.

      Die Region, die Sie in Ihrem Namespace angeben, muss mit der Region übereinstimmen, die Sie in Ihrer Cloud Build-Hostverbindung angeben.

    2. Konfigurieren Sie einen Dienst in Ihrem Namespace.

    3. Konfigurieren Sie einen Endpunkt für Ihren registrierten Dienst.

      Wenn Sie einen Endpunkt konfigurieren, müssen Sie eine interne IP-Adresse verwenden und eine HTTPS-Portnummer angeben, damit Cloud Build Ihren Dienst erreichen kann.

    Weitere Informationen zum Konfigurieren des privaten Netzwerkzugriffs finden Sie unter Privaten Netzwerkzugriff konfigurieren. Service Directory bietet auch eine Einbindung in Dienste wie Load Balancer und Google Kubernetes Engine (GKE). Weitere Informationen finden Sie unter Service Directory und Load Balancing oder Service Directory für GKE.

  4. Gewähren Sie dem Cloud Build-Dienst-Agent 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 die ID Ihres Cloud Build-Projekts.
    • PROJECT_ID_CONTAINING_SERVICE_DIRECTORY ist die ID IhresGoogle Cloud -Projekts, das Ihr Serviceverzeichnis enthält.
  5. 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 die ID Ihres Cloud Build-Projekts.
    • PROJECT_ID_CONTAINING_NETWORK_RESOURCE ist die ID IhresGoogle Cloud Projekts, das Ihre Netzwerkressource enthält.
  6. Verwenden Sie private Pools, um Ihre Builds auszuführen. Wenn Sie noch keinen privaten Pool erstellt haben, lesen Sie den Hilfeartikel Neuen privaten Pool erstellen.

  7. Folgen Sie der Anleitung, um einen GitLab Enterprise Edition-Trigger zu erstellen, um Repositories zu erstellen, die auf einer GitLab Enterprise Edition-Instanz gehostet werden.

    Wenn Sie beim Verbinden Ihres GitLab Enterprise Edition-Hosts mit Cloud Build ein selbstsigniertes oder privates Zertifikat verwenden, müssen Sie den Host-URI als Subject Alternative Name (SAN) Ihres Zertifikats festlegen.

Der GitLab Enterprise Edition-Trigger ruft jetzt gemäß Ihrer Konfiguration automatisch Builds auf Ihrer GitLab Enterprise Edition-Instanz auf.

Service Directory verwenden, um Hosts außerhalb von Google Cloud

Service Directory verwendet den IP-Adressbereich 35.199.192.0/19, um eine Verbindung zwischen Ihrem Host und einem externen Gerät herzustellen. Google CloudSie 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 Google Cloud

Wenn Sie mit Ihrer Netzwerkkonfiguration den IP-Adressbereich 35.199.192.0/19 des Dienstverzeichnisses 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 den unverschlüsselten privaten Schlüssel für Ihr SSL-Zertifikat nicht.
  • 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 Edge-Netzwerkdienste für hybride 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.

Datenfreigabe

Anhand der Daten, die von Cloud Build an GitLab Enterprise Edition gesendet werden, können Sie Trigger nach Namen erkennen und Build-Ergebnisse in Ihren GitLab Enterprise Edition-Repositories aufrufen.

Die folgenden Daten werden zwischen Cloud Build und der Enterprise-Version von GitLab geteilt:

  • Google Cloud -Projekt-ID
  • Triggername

Nächste Schritte