Mit Cloud Build können Sie Trigger erstellen, um Builds aus Repositories zu 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 können, wenn Ihre Instanz in einem privaten Netzwerk gehostet wird.
Hinweise
-
Enable the Cloud Build, Secret Manager, Compute Engine, and Service Networking APIs.
- Folgen Sie der Anleitung zum Verbinden eines GitLab Enterprise Edition-Hosts.
- Folgen Sie der Anleitung zum Verbinden eines GitLab Enterprise Edition-Repositorys.
Repositories aus GitLab Enterprise Edition in einem privaten Netzwerk erstellen
Wenn auf Ihre GitLab Enterprise Edition-Instanz nur innerhalb eines VPC-Netzwerk zugegriffen werden kann, müssen Sie einen Service Directory-Dienst einrichten und mit privaten Pools erstellen. Das Projekt, das Ihr VPC-Netzwerk enthält, kann sich in einem anderen Projekt befinden als das Projekt, das Ihren Service Directory-Dienst enthält. Gehen Sie folgendermaßen vor, um sicherzustellen, dass Ihre Instanz erreichbar ist, bevor Sie Trigger erstellen:
Aktivieren Sie die Service Directory API.
Sie benötigen für dasGoogle Cloud -Projekt, in dem Sie den Service Directory-Dienst erstellen möchten, die Rolle Project IAM Admin. Informationen zum Zuweisen von IAM-Rollen finden Sie unter Zugriff auf Cloud Build-Ressourcen konfigurieren.
So richten Sie einen Service Directory-Dienst ein:
Namespace für Ihr Google Cloud -Projekt konfigurieren
Die Region, die Sie in Ihrem Namespace angeben, muss mit der Region übereinstimmen, die Sie in Ihrer Cloud Build-Hostverbindung angeben.
Konfigurieren Sie einen Dienst in Ihrem Namespace.
Endpunkt für Ihren registrierten Dienst konfigurieren
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 die 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.
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 Service Directory enthält.
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.
Verwenden Sie private Pools, um Ihre Builds auszuführen. Wenn Sie noch keinen privaten Pool erstellt haben, erstellen Sie einen neuen privaten Pool.
Folgen Sie der Anleitung zum Erstellen eines GitLab Enterprise Edition-Triggers, um auf einer GitLab Enterprise Edition-Instanz gehostete Repositories zu erstellen.
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 Cloudzu erreichen
Service Directory verwendet den IP-Adressbereich 35.199.192.0/19
, um eine Verbindung zu Ihrem Host außerhalb von Google Cloudherzustellen. 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 an Ihr privates Netzwerk übertragen wird.
Cloud Load Balancing verwenden, um Hosts außerhalb von Google Cloudzu erreichen
Wenn Ihre Netzwerkkonfiguration es nicht zulässt, den Service Directory-IP-Adressbereich 35.199.192.0/19
an Cloud VPN oder Cloud Interconnect weiterzuleiten, können Sie mit Cloud Load Balancing einen Load Balancer erstellen, der den 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 einen internen HTTPS-Load-Balancer oder einen internen TCP-Load-Balancer (Transmission Control Protocol) verwenden, wenn Sie Ihren Endpunkt erstellen.
Beachten Sie beim Erstellen Ihres TCP-Load-Balancers Folgendes:
- Sie benötigen nur eine Netzwerk-Endpunktgruppe (NEG) mit Hybridkonnektivität, um Ihren Host zu erreichen.
- 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 dynamischen 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 Hybridbereitstellungen 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
Die von Cloud Build an GitLab Enterprise Edition gesendeten Daten helfen Ihnen, Trigger nach Namen zu erkennen und Build-Ergebnisse in Ihren GitLab Enterprise Edition-Repositories aufzurufen.
Die folgenden Daten werden zwischen Cloud Build und GitLab Enterprise Edition geteilt:
- Google Cloud Projekt-ID
- Triggername