Auf dieser Seite wird erläutert, wie Sie Ihre privaten Pools so einrichten, dass sie über eine statische externe IP-Adresse auf externe Ressourcen zugreifen.
Klicken Sie auf Anleitung, um eine detaillierte Anleitung für diese Aufgabe direkt in der Google Cloud Console aufzurufen.
Hinweise
-
Enable the Cloud Build, Compute Engine, and Service Networking APIs.
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Compute Engine-Netzwerkadministrator (
roles/compute.networkAdmin
) für das Cloud-Projekt zu gewähren, in dem sich das VPC-Netzwerk befindet, um die Berechtigungen zu erhalten, die Sie zum Einrichten einer privaten Verbindung benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.Wenn Sie die
gcloud
-Befehle auf dieser Seite verwenden möchten, müssen Sie die Google Cloud CLI installieren.
VPC-Netzwerk erstellen
Console
So erstellen Sie ein VPC-Netzwerk mit der Google Cloud Console:
Öffnen Sie in der Google Cloud Console die Seite VPC-Netzwerke.
Klicken Sie auf VPC-Netzwerk erstellen, um ein neues Netzwerk zu erstellen.
Die Seite VPC-Netzwerk erstellen wird angezeigt.
Geben Sie einen Namen für das Netzwerk ein.
Wählen Sie unter Modus für Subnetzerstellung die Option Automatisch aus.
Weitere Informationen zum Anpassen anderer Felder finden Sie unter VPC-Netzwerke erstellen und verwalten. Andernfalls lassen Sie alle Felder unverändert.
Klicken Sie auf Erstellen, um das VPC-Netzwerk zu erstellen.
Nachdem Sie auf Erstellen geklickt haben, wird Ihr neues VPC-Netzwerk auf der Seite VPC-Netzwerke angezeigt.
gcloud
Wenn Sie ein VPC-Netzwerk mit dem Befehlszeilentool gcloud
erstellen möchten, geben Sie den folgenden Befehl in Ihr Terminal ein. Dabei ist NETWORK_NAME der Name Ihres VPC-Netzwerks:
gcloud compute networks create NETWORK_NAME \
--subnet-mode=auto
Nachdem Sie auf Erstellen geklickt haben, wird Ihr neues VPC-Netzwerk auf der Seite VPC-Netzwerke angezeigt.
Weitere Informationen zum Erstellen und Verwalten von VPC-Netzwerken finden Sie unter VPC-Netzwerke erstellen und verwalten.
Private Verbindung erstellen
Console
So erstellen Sie eine private Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers:
Öffnen Sie in der Google Cloud Console die Seite VPC-Netzwerke.
Klicken Sie auf den Namen Ihres Netzwerks.
Die Seite VPC-Netzwerkdetails wird angezeigt.
Klicken Sie auf den Tab Private Dienstverbindung.
Wählen Sie den Tab Diensten zugewiesene IP-Bereiche aus.
Klicken Sie auf IP-Bereich zuweisen.
Das Pop-up-Fenster Internen IP-Bereich zuweisen wird angezeigt.
Geben Sie einen Namen für den IP-Bereich ein.
Wählen Sie unter IP-Bereich die Option Automatisch aus.
Geben Sie im Feld Präfixlänge eine Präfixlänge für Ihr Netzwerk ein.
Klicken Sie auf Zuweisen, um den IP-Bereich zuzuweisen.
Wählen Sie den Tab Private Verbindungen zu Diensten aus.
Klicken Sie auf Create Connection.
Das Pop-up-Fenster Private Verbindung erstellen wird angezeigt.
Wählen Sie unter Zugewiesene Bereiche Ihren IP-Bereich aus.
Klicken Sie auf Verbinden.
Ihre Verbindung wird jetzt in der Tabelle auf dem Tab Private Verbindungen zu Diensten angezeigt.
Klicken Sie auf Aktivieren (Benutzerdefinierte Route exportieren), damit die Routen für VPC auf das Netzwerk angewendet werden, in dem die Instanzen Ihres privaten Pools ausgeführt werden.
Sie haben Ihr Netzwerk jetzt konfiguriert.
gcloud
So erstellen Sie eine private Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers:
Geben Sie in Ihrem Terminal den folgenden Befehl ein, um einen IP-Bereich für Ihren Dienst zuzuweisen:
gcloud compute addresses create RESERVED_RANGE_NAME \ --global \ --prefix-length=PREFIX_LENGTH \ --network=VPC_NETWORK \ --project=PROJECT_ID
Wobei:
- RESERVED_RANGE_NAME ist der Name des zugewiesenen Bereichs.
Beispiel:
my-allocated-range
. - PREFIX_LENGTH ist die Präfixlänge für Ihr Netzwerk. Die Präfixlänge muss
/24
oder niedriger sein, z. B./22
oder/21
. - VPC_NETWORK ist der Name Ihres VPC-Netzwerks, z. B.
my-vpc-network
. - PROJECT_ID ist die ID des Projekts, das Ihr VPC-Netzwerk enthält.
- RESERVED_RANGE_NAME ist der Name des zugewiesenen Bereichs.
Beispiel:
Geben Sie in Ihrem Terminal den folgenden Befehl ein, um eine private Verbindung zu erstellen:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID
Wobei:
- RESERVED_RANGE_NAME ist der Name des zugewiesenen Bereichs, den Sie im vorherigen Schritt erstellt haben.
- VPC_NETWORK ist der Name Ihres VPC-Netzwerks, z. B.
my-vpc-network
. - PROJECT_ID ist die ID des Projekts, das Ihr VPC-Netzwerk enthält.
Geben Sie den folgenden Befehl in Ihr Terminal ein, um sicherzustellen, dass die Routen für VPC auf das Netzwerk angewendet werden, in dem Ihre privaten Poolinstanzen ausgeführt werden:
gcloud compute networks peerings update servicenetworking-googleapis-com \ --export-custom-routes \ --network=VPC_NETWORK \ --project=PROJECT_ID
Wobei:
- VPC_NETWORK ist der Name Ihres VPC-Netzwerks, z. B.
my-vpc-network
. - PROJECT_ID ist die ID des Projekts, das Ihr VPC-Netzwerk enthält.
- VPC_NETWORK ist der Name Ihres VPC-Netzwerks, z. B.
Sie haben Ihr Netzwerk jetzt konfiguriert.
Weitere Informationen zum Konfigurieren eines Netzwerks finden Sie unter Private Verbindung zwischen Ihrem VPC-Netzwerk und dem Netzwerk des Diensterstellers einrichten.
Privaten Pool erstellen
Console
So erstellen Sie einen privaten Pool mit der Google Cloud Console:
Öffnen Sie die Seite Worker-Pool in der Google Cloud Console:
Wählen Sie das Projekt aus, in dem Sie den privaten Pool erstellen möchten.
Klicken Sie auf der Seite Worker-Pool auf Erstellen.
Das Steuerfeld Privaten Pool erstellen wird angezeigt.
Geben Sie im seitlichen Steuerfeld Privaten Pool erstellen die folgenden Informationen ein:
Geben Sie einen Namen für den privaten Pool ein.
Wählen Sie im Drop-down-Menü eine Region aus.
Geben Sie unter Netzwerk folgende Informationen ein:
- Projekt: Geben Sie die Projekt-ID oder ‑nummer ein.
- Netzwerk: Geben Sie den Namen Ihres VPC-Netzwerks ein.
- Optional: Entfernen Sie das Häkchen bei Externe IP-Adressen zuweisen für die am stärksten eingeschränkte Netzwerkkonfiguration.
Sie haben jetzt einen privaten Pool erstellt.
gcloud
Wenn Sie einen privaten Pool mit dem gcloud
-Befehlszeilentool erstellen möchten, geben Sie den folgenden Befehl in das Terminal ein:
gcloud builds worker-pools create PRIVATEPOOL_ID \
--project=PRIVATEPOOL_PROJECT_ID \
--region=REGION \
--peered-network=PEERED_NETWORK \
--no-public-egress
Wobei:
- PRIVATEPOOL_ID ist die eindeutige Kennung für Ihren privaten Pool.
- PRIVATEPOOL_PROJECT_ID ist die ID des Google Cloud-Projekts, in dem Sie Ihren privaten Pool erstellen möchten.
- REGION ist eine der unterstützten Regionen.
- PEERED_NETWORK ist die URL der Netzwerkressource.
--no-public-egress
: Wenn dieses Flag festgelegt ist, wird der private Pool ohne externe IP-Adresse erstellt.
Sie haben jetzt einen privaten Pool erstellt.
Weitere Informationen zum Erstellen und Verwalten privater Pools finden Sie unter Private Pools erstellen und verwalten.
Auf externe Ressourcen in einem privaten Netzwerk zugreifen
Externe IP-Adressen, die mit privaten Cloud Build-Pools verknüpft sind, sind standardmäßig nicht statisch oder konfigurierbar. Sie werden vonGoogle Cloudzugewiesen. Wenn Sie Ihre privaten Pools so einrichten möchten, dass sie über eine statische externe IP-Adresse auf externe Ressourcen aus Ihrem privaten Netzwerk zugreifen, müssen Sie in Ihrem Projekt eine virtuelle Maschine (VM) einrichten, die als selbstverwaltetes NAT-Gateway für Proxyanfragen an das öffentliche Internet dient. Anschließend müssen Sie benutzerdefinierte Routen einrichten, um diese Anfragen an Ihre VM weiterzuleiten, damit Routen mit dem Dienstnetzwerkprojekt ausgetauscht werden.
In diesem Abschnitt wird beschrieben, wie Sie Ihre privaten Pools so einrichten, dass sie über eine statische externe IP-Adresse auf externe Ressourcen zugreifen. Gehen Sie dazu so vor:
Erstellen Sie ein Startskript, um die VM so zu konfigurieren, dass jeglicher Traffic, der an die VM weitergeleitet wird, per Proxy weitergeleitet wird und so erscheint, als stamme er von der IP-Adresse der VM:
#! /bin/bash set -e sysctl -w net.ipv4.ip_forward=1 IFACE=$(ip -brief link | tail -1 | awk {'print $1'}) iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
Richten Sie eine VM in derselben VPC wie Ihr privater Pool mit einer Regel ein, damit Anfragen über die VPC geproxyt werden können:
gcloud compute instances create VM_NAME \ --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \ --network=NETWORK_NAME \ --private-network-ip=INTERNAL_IP --can-ip-forward \ --zone=ZONE \ --subnet=SUBNETWORK \ --tags=NAT_TAG \ --metadata-from-file=startup-script=STARTUP_SCRIPT
Wobei:
- VM_NAME ist der Name, den Sie für Ihre VM angeben möchten.
- NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
- INTERNAL_IP ist eine gültige interne IP-Adresse im Bereich des Subnetzes Ihrer VM-Region. Beispiel:
10.128.0.2
. - ZONE ist die Zone, die mit Ihrem Netzwerk verknüpft ist, z. B.
us-central1-a
. - Optional: SUBNETWORK ist der Name Ihres Subnetzes. Den Namen Ihres Subnetzwerks finden Sie in der entsprechenden REST-Ressource für Ihr Subnetzwerk im folgenden Format:
projects/project-id/regions/region/subnetworks/subnetwork-name
. Wenn Sie beim Erstellen eines VPC-Netzwerks unter Subnetzverbindungsmodus die Option Automatisch ausgewählt haben, müssen Sie dieses Feld nicht angeben. - NAT_TAG ist der Name des NAT-Gateway-Tags, mit dem Sie Anfragen bedingt weiterleiten können, je nachdem, ob sie ein Tag von dieser VM haben oder nicht. Sie können einen beliebigen Namen für das Tag angeben.
- STARTUP_SCRIPT ist der Name des Startscripts, das Sie im vorherigen Schritt erstellt haben. Beispiel:
startup-script-example.sh
. In diesem Beispiel wird das Flag--metadata-from-file
verwendet, um den Inhalt des von Ihnen angegebenen Startskripts an einen Schlüssel namensstartup-script
zu übergeben.
Nach der Ausführung dieses Befehls wird eine Ausgabe mit dem Wert der externen IP-Adresse angezeigt. Notieren Sie sich den Wert der externen IP-Adresse. Der gesamte Traffic von Ihrem privaten Pool zu Ihrer externen Ressource wird über diese Adresse geleitet. Sie können diese Adresse für die weitere Konfiguration verwenden, z. B. für die Konfiguration von Firewallregeln in Ihrem externen Netzwerk.
Richten Sie eine Route ein, über die alle Anfragen an die externe Ressource an die im vorherigen Schritt erstellte Instanz weitergeleitet werden, damit Ihre Anfragen an Ihre privaten Poolinstanzen weitergeleitet werden können:
gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-address=INTERNAL_IP \ --network=NETWORK_NAME \ --priority=POOL_ROUTE_PRIORITY
Wobei:
- PRIVATE_POOL_ROUTE_NAME ist der Name, den Sie der Route geben möchten.
- DESTINATION_RANGE ist ein gültiger CIDR-Adressbereich, der das Ziel enthält, an das Sie weiterleiten möchten. Beispiel: eine GitHub Enterprise-Instanz. Beispiel:
8.8.8.0/24
. - INTERNAL_IP ist der interne IP-Wert, der im vorherigen Schritt ermittelt wurde. Beispiel:
10.128.0.2
. - NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
- POOL_ROUTE_PRIORITY ist die Prioritätsnummer, die Sie für Ihre Route angeben möchten.
Mit diesem Befehl wird sichergestellt, dass jeglicher Traffic von einem Build innerhalb einer privaten Poolinstanz an die von Ihnen erstellte Proxy-VM und nicht direkt an das öffentliche Internet weitergeleitet wird.
Richten Sie eine Route ein, um Anfragen von Ihrem Proxy von Ihren getaggten Instanzen an den externen Ziel-IP-Bereich weiterzuleiten. Mit dem folgenden Befehl wird eine Route erstellt, um Anfragen an das öffentliche Internet weiterzuleiten, die mit Ihren privaten Poolinstanzen verknüpft sind.
gcloud compute routes create NAT_EGRESS_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-gateway=default-internet-gateway \ --network=NETWORK_NAME \ --priority=NAT_ROUTE_PRIORITY \ --tags=NAT_TAG
Wobei:
- NAT_EGRESS_ROUTE_NAME ist der Name, den Sie der NAT-Gateway-Route geben möchten.
- DESTINATION_RANGE ist die Adresse des Ziels, an das Sie eine Route planen möchten. Beispiel: eine GitHub Enterprise-Instanz. Beispiel:
8.8.8.0/24
. - NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
- NAT_TAG ist der Name des NAT-Gateway-Tags, mit dem Sie Anfragen bedingt weiterleiten können, je nachdem, ob sie ein Tag von dieser VM haben oder nicht. Sie können einen beliebigen Namen für das Tag angeben.
NAT_ROUTE_PRIORITY ist die Prioritätsnummer, die Sie für die Route angeben möchten.
Mit diesem Befehl wird sichergestellt, dass jeglicher Traffic von der Proxy-VM an das öffentliche Internet weitergeleitet werden kann.
Fügen Sie eine Firewallregel hinzu, um Traffic von Ihrem privaten Pool in Ihre NAT-Gateway-VM zuzulassen:
gcloud compute firewall-rules create RULE_NAME \ --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \ --network=NETWORK_NAME \ --source-ranges=RESERVED_RANGE \ --target-tags=NAT_TAG
Wobei:
- RULE_NAME ist der Name, den Sie der Firewallregel geben möchten.
- FIREWALL_PRIORITY ist die Prioritätsnummer, die Sie für die Firewallregel angeben möchten.
- NETWORK_NAME ist der Name des Netzwerks, das Sie im vorherigen Abschnitt erstellt haben.
- RESERVED_RANGE ist der CIDR-Bereich, den Sie bei der Konfiguration Ihres VPC-Netzwerks zugewiesen haben.
- NAT_TAG ist der Name des NAT-Gateway-Tags, mit dem Sie Anfragen bedingt weiterleiten können, je nachdem, ob sie ein Tag von dieser VM haben oder nicht. Sie können einen beliebigen Namen für das Tag angeben.
Sie können jetzt über die statische IP-Adresse des selbst verwalteten NAT-Gateways in Ihrer VPC auf externe Ressourcen zugreifen.
Nächste Schritte
- Weitere Informationen zu privaten Pools.
- Umgebung für die Erstellung privater Pools einrichten
- Informationen zum Zugriff auf Ressourcen in einem privaten JFrog Artifactory mit privaten Pools