Looker PSA Southbound HTTPS Internet NEG

Informationen zu diesem Codelab
schedule38 Minuten
subjectZuletzt aktualisiert: 2. April 2025
account_circleVerfasst von Deepak Michael, Emanuele Mazza

1. Einführung

Nur Looker (Google Cloud Core)-Instanzen, die für ihre private Verbindung den Zugriff auf private Dienste verwenden, unterstützen eine Konfiguration mit privater und öffentlicher IP-Adresse.

Eine Looker (Google Cloud Core)-Instanz, die sowohl eine private IP-Verbindung (Zugriff auf private Dienste) als auch eine öffentliche IP-Verbindung hat, hat eine öffentliche URL und der gesamte einkommende Traffic wird über die öffentliche IP-Verbindung geleitet. Ausgehender Traffic wird über Ihre VPC geleitet, die so konfiguriert werden kann, dass nur privater IP-Traffic zugelassen wird (siehe Abbildung 1).

Figure1

9f587c14791dd92e.png

Die Kommunikation mit github.com wird auf eine öffentliche IP-Adresse aufgelöst und ist daher von einer Looker-Instanz, die als „Privat“ oder „Öffentlich + Privat“ bereitgestellt wird, nicht erreichbar.

In diesem Codelab stellen Sie eine southbound-HTTPS-Verbindung zu GitHub mit einem internen TCP-Proxy-Load Balancer und einer Internet-Netzwerkendpunktgruppe (NEG) her, die über die Looker PSA aufgerufen wird.

Aufgaben in diesem Lab

  • Netzwerkanforderungen
  • Verbindung von Looker zu GitHub über eine Testverbindung herstellen

Voraussetzungen

5348de53f0a78a50.png

2. Aufgaben

Sie stellen einen internen TCP-Proxy-Load Balancer und eine Internet-NEG bereit, die mit der aufgelösten IP-Adresse von github.com konfiguriert ist und Cloud NAT für den Internet-Ausgang zu github.com-Organisationen nutzt, die von Looker aufgelöst werden.

3. Netzwerkanforderungen

Im Folgenden finden Sie eine Aufschlüsselung der Netzwerkanforderungen:

Komponenten

Beschreibung

VPC ($vpc_network)

VPC im benutzerdefinierten Modus

Subnetz der Weiterleitungsregel

Wird verwendet, um eine IP-Adresse für den internen regionalen TCP-Proxy-Load Balancer zuzuweisen.

Nur-Proxy-Subnetz

Jedem Proxy des Load Balancers wird eine interne IP-Adresse zugewiesen. Pakete, die von einem Proxy an eine Backend-VM oder einen Backend-Endpunkt gesendet werden, haben eine Quell-IP-Adresse aus dem Nur-Proxy-Subnetz.

Internet-NEG

Eine Ressource, mit der ein externes Backend für den Load Balancer definiert wird. Der Endpunkt darf nicht nur über Cloud VPN oder Cloud Interconnect erreichbar sein.

Backend-Dienst

Ein Back-End-Dienst dient als Brücke zwischen Ihrem Load Balancer und Ihren Back-End-Ressourcen. In diesem Tutorial ist der Back-End-Dienst mit der Internet-NEG verknüpft.

Cloud Router

Cloud NAT verwendet Cloud Router für die Steuerungsebene, aber nicht für die BGP-Sitzungsverwaltung.

Cloud NAT

Die regionale Internet-NEG nutzt Cloud NAT für den Internet-Traffic.

4. Codelab-Topologie

c5871e5418d37f13.png

5. Einrichtung und Anforderungen

Einrichtung der Umgebung im eigenen Tempo

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie ein Konto erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es ist ein Zeichenstring, der von Google APIs nicht verwendet wird. Sie können ihn jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und kann nach der Festlegung nicht mehr geändert werden. In der Cloud Console wird automatisch ein eindeutiger String generiert. In der Regel spielt es keine Rolle, wie er lautet. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (normalerweise als PROJECT_ID gekennzeichnet). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige generieren. Alternativ können Sie Ihr eigenes Konto ausprobieren und prüfen, ob es verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts bestehen.
  • Zur Information: Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs ist kostenlos oder kostet nur sehr wenig. Wenn Sie die Ressourcen deaktivieren möchten, um weitere Kosten nach Abschluss dieser Anleitung zu vermeiden, können Sie die von Ihnen erstellten Ressourcen oder das Projekt löschen. Neuen Google Cloud-Nutzern steht das kostenlose Testprogramm mit einem Guthaben von 300$ zur Verfügung.

Cloud Shell starten

Sie können Google Cloud zwar per Fernzugriff von Ihrem Laptop aus nutzen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der Google Cloud Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:

55efc1aaa7a4d3ad.png

Die Bereitstellung und Verbindung mit der Umgebung sollte nur wenige Minuten dauern. Wenn der Vorgang abgeschlossen ist, sollte in etwa Folgendes angezeigt werden:

7ffe5cbb04455448.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud. Dadurch werden Netzwerkleistung und Authentifizierung erheblich verbessert. Alle Aufgaben in diesem Codelab können in einem Browser ausgeführt werden. Sie müssen nichts installieren.

6. Hinweis

APIs aktivieren

Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network

Aktivieren Sie alle erforderlichen Dienste:

gcloud services enable compute.googleapis.com

7. VPC-Netzwerkkomponenten

VPC-Netzwerk

Für die Anleitung ist eine vorhandene PSA Looker-Instanz erforderlich. Das zugehörige VPC ist also bereits erstellt.

Erstellen Sie in Cloud Shell das Subnetz für die Weiterleitungsregel:

gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

Erstellen Sie in Cloud Shell das regionale Nur-Proxy-Subnetz:

gcloud compute networks subnets create $region-proxyonly-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=$vpc_network \
  --range=10.10.10.0/24

Öffentliches NAT-Gateway erstellen

Das NAT-Gateway wird vom regionalen internen TCP-Proxy-Load Balancer für den Internet-Ausgang mit der Konfigurationsoption „–endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB“ verwendet. Daher unterstützt dasselbe NATGW keinen GCE-/GKE-Internet-Ausgang. Binden Sie ein zusätzliches NAT-Gateway mit dem Parameter „–endpoint-types=ENDPOINT_TYPE_VM“ für den Internet-Ausgang von GCE/GKE ein.

Erstellen Sie in Cloud Shell den Cloud Router:

gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region

Erstellen Sie in Cloud Shell das Cloud NAT-Gateway, um den Internet-Ausgang für den TCP-Proxy-Load Balancer zu aktivieren:

gcloud compute routers nats create $vpc_network-natgw \
  --router=$vpc_network-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

IP-Adresse des Load-Balancers reservieren

Reservieren Sie in Cloud Shell eine interne IP-Adresse für den Load Balancer, die später als DNS-A-Eintrag für github.com verwendet wird:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=psa-fr-subnet

Rufen Sie in Cloud Shell die reservierte IP-Adresse auf:

gcloud compute addresses describe internet-neg-lb-ip \
  --region=$region | grep -i address:

Beispielausgabe:

user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

8. Internet-NEG

Es gibt zwei Möglichkeiten, den externen Endpunkt zu konfigurieren, auf den die Internet-NEG verweist: INTERNET_FQDN_PORT oder INTERNET_IP_PORT. Wenn das Format INTERNET_IP_PORT (Option 1) ausgewählt wird, kann nur eine öffentliche, im Internet routbare IP-Adresse verwendet werden. Wenn das Format INTERNET_FQDN_PORT (Option 2) ausgewählt wird, kann der FQDN je nach Umfang des Endpunkts (regional oder global) in eine öffentliche, im Internet routbare IP-Adresse oder in eine private IP-Adresse aufgelöst werden.

Option 1: Internet-NEG mit IP-Adresse einrichten

Für die Internet-NEG ist die aufgelöste IP-Adresse von Github.com erforderlich. Öffnen Sie daher für eine optimale Leistung ein lokales Terminal, führen Sie einen Dig-Befehl aus und rufen Sie die IP-Adresse von github.com ab.

Beispiel aus einem lokalen Terminal, das die aufgelöste IP-Adresse 140.82.113.4 generiert

bash-3.2$ dig github.com
; <<>> DiG 9.10.6 <<>> github.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;github.com.                        IN        A
;; ANSWER SECTION:
github.com.                60        IN        A        140.82.113.4
;; Query time: 409 msec
;; SERVER: ::1#53(::1)
;; WHEN: Thu Sep 26 15:50:45 CDT 2024
;; MSG SIZE  rcvd: 65

Erstellen Sie eine Internet-NEG und legen Sie den –network-endpoint-type auf internet_ip_port fest.

Erstellen Sie in Cloud Shell eine Internet-NEG, die für github.com verwendet wird:

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_IP_PORT \
    --network=$vpc_network \
    --region=$region

Aktualisieren Sie in Cloud Shell die Internet-NEG github-internet-neg mit der aufgelösten IP-Adresse von github.com und Port 443:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=[your-resolved-ip],port=443" \
    --region=$region

Beispiel:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="ip=140.82.113.4,port=443" \
    --region=$region

Option 2: Internet-NEG mit FQDN einrichten

Optional können Sie eine Internet-NEG erstellen und den „–network-endpoint-type“ auf „internet_FQDN_port“ festlegen.

Erstellen Sie in Cloud Shell eine Internet-NEG, die für github.com verwendet wird:

gcloud compute network-endpoint-groups create github-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=$vpc_network \
    --region=$region

Aktualisieren Sie in Cloud Shell die Internet-NEG github-internet-neg mit dem FQDN github.com:

gcloud compute network-endpoint-groups update github-internet-neg \
    --add-endpoint="fqdn=github.com,port=443" \
    --region=$region

9. GitHub-Dienst erstellen

Load Balancer-Komponenten erstellen

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute backend-services create psa-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend psa-backend-svc --network-endpoint-group=github-internet-neg --network-endpoint-group-region=$region --region=$region

Erstellen Sie in Cloud Shell einen Ziel-TCP-Proxy, um Anfragen an Ihren Backend-Dienst weiterzuleiten:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=psa-backend-svc  \
      --region=$region

Erstellen Sie mit der folgenden Syntax eine Weiterleitungsregel (interner TCP-Proxy-Load Balancer).

Führen Sie in Cloud Shell folgende Schritte aus:

gcloud compute forwarding-rules create psa-github-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=$vpc_network \
     --subnet=psa-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=443

10. GitHub-DNS-Zone

Im folgenden Abschnitt erstellen Sie eine DNS-Antwortrichtlinie für GitHub.com mit einem A-Eintrag, der aus der IP-Adresse des internen TCP-Proxy-Load Balancers besteht.

Danach wird die Zone „github.com“ über das DNS-Peering mit der Looker PSA geteilt, sodass eine Verbindung zu GitHub über den internen Load Balancer in Kombination mit dem Internet-NEG und Cloud NAT möglich ist.

Erstellen Sie in Cloud Shell die Zone für die Antwortrichtlinie:

gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"

Erstellen Sie in Cloud Shell den DNS-A-Eintrag mit der IP-Adresse des TCP-Proxy-Load Balancers [insert-your-ip-address]:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"

Beispiel:

gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

7b41b2f44609e5ed.png

DNS-Peering aktualisieren

In diesem Abschnitt verwenden Sie die Syntax gcloud services peered-dns-domains create, um eine Peered-DNS-Domain für eine private Dienstverbindung zu erstellen, die Anfragen für Einträge in einem bestimmten Namensbereich aus dem VPC-Netzwerk des Diensterstellers an das VPC-Netzwerk des Dienstnutzers zur Auflösung sendet.

Erstellen Sie in Cloud Shell eine Peered-DNS-Domain, die von Looker für github.com abgefragt wird:

gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.

11. Verbindung zu GitHub testen

In den folgenden Schritten erstellen Sie mit der Looker Console ein Projekt, um die HTTPS-Verbindung zu github.com zu prüfen.

12. Erstellen Sie ein neues Projekt

Entwicklermodus aktivieren

Rufen Sie in der Looker Console Folgendes auf:

Aktivieren Sie den Entwicklungsmodus (unten links auf der Seite). Daraufhin wird das Banner „Sie befinden sich im Entwicklungsmodus“ angezeigt.

70c9ded749decfbe.png

Neues Projekt erstellen

Rufen Sie in der Cloud Console Folgendes auf:

Entwickeln → Projekte

e8ae11e0392a776d.png

„Neues LookML-Projekt“ auswählen

65a3c2573e97e1e9.png

Geben Sie einen Projektnamen ein, wählen Sie „Leeres Projekt“ und dann „Projekt erstellen“ aus.

9185808e001fa540.png

Wählen Sie „Git konfigurieren“ aus.

42f5e51ce70642ad.png

Git konfigurieren

Aktualisieren Sie die Repository-URL mit Ihren HTTPS-GitHub-Details. Fügen Sie der URL das Suffix „.git“ hinzu und wählen Sie dann „Weiter“ aus.

f5c448f6659b8fc1.png

Beispiel:

4065ab1d196589f.png

Aktualisieren Sie die Auswahl mit Ihrem GitHub-Nutzernamen und Ihrem persönlichen Zugriffstoken (klassisch) und wählen Sie dann „Testen und Einrichtung abschließen“ aus.

1dc44d63c555a9ae.png

Git-Aktionen auswählen

b5903668a50a99ca.png

„Git-Verbindung testen“ auswählen

51b722e84f2df38c.png

Git-Konnektivitätstest validieren

8fb7386b739f60be.png

13. Bereinigen

So löschen Sie Lab-Komponenten über ein einzelnes Cloud Shell-Terminal:

gcloud compute forwarding-rules delete psa-github-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete psa-backend-svc --region=$region -q

gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q

gcloud compute routers delete $vpc_network-cloud-router --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q

gcloud services peered-dns-domains delete github-com --network=$vpc_network -q

gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q

gcloud dns response-policies update github-com --networks= -q

gcloud dns response-policies delete github-com

14. Glückwunsch

Sie haben die Verbindung zu GitHub mit der Looker Console erfolgreich konfiguriert und validiert.

Cosmopup findet Codelabs super!

c911c127bffdee57.jpeg

Was liegt als Nächstes an?

Weitere Lesematerialien und Videos

Referenzdokumente