Looker PSA Southbound HTTPS Internet NEG

1. Einführung

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

Eine Looker (Google Cloud Core)-Instanz mit einer Verbindung über eine private IP-Adresse (privater Dienstzugriff) und einer Verbindung über eine öffentliche IP-Adresse hat eine öffentliche URL. Der gesamte eingehende Traffic wird über die öffentliche IP-Verbindung geleitet. Ausgehender Traffic wird über Ihre VPC weitergeleitet, die so konfiguriert werden kann, dass nur privater IP-Traffic zugelassen wird, wie in Abbildung 1 dargestellt.

Figure1

9f587c14791dd92e.png

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

In diesem Codelab stellen Sie eine HTTPS-Verbindung in Richtung Süden zu GitHub her. Dazu verwenden Sie einen internen TCP-Proxy-Load-Balancer und eine Internet-Netzwerk-Endpunktgruppe (NEG), die von Looker PSA aufgerufen wird.

Lerninhalte

  • Netzwerkanforderungen
  • Verbindung zu GitHub von Looker aus mit „Verbindung testen“ 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 sind. Dabei wird Cloud NAT für den Internet-Egress zu github.com-Organisationen verwendet, die von Looker aufgelöst werden.

3. Netzwerkanforderungen

Im Folgenden finden Sie eine Aufschlüsselung der Netzwerkanforderungen:

Komponenten

Beschreibung

VPC ($vpc_network)

Benutzerdefinierte VPC

Subnetz der Weiterleitungsregel

Wird verwendet, um eine IP-Adresse für den regionalen internen 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 Back-End-VM oder einen Back-End-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.

Back-End-Dienst

Ein Back-End-Dienst fungiert als Brücke zwischen dem Load-Balancer und den Back-End-Ressourcen. In der Anleitung ist der Back-End-Dienst mit der Internet-NEG verknüpft.

Cloud Router

Cloud NAT verwendet Cloud Router für die Funktionen der Steuerungsebene, aber nicht für die Verwaltung von BGP-Sitzungen.

Cloud NAT

Die regionale Internet-NEG verwendet Cloud NAT für den Internet-Egress.

4. Codelab-Topologie

c5871e5418d37f13.png

5. Einrichtung und Anforderungen

Umgebung zum selbstbestimmten Lernen einrichten

  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 eines erstellen.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Er ist ein String, der nicht von Google APIs verwendet wird. Sie können ihn jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann also nicht geändert werden, nachdem sie festgelegt wurde. Die Cloud Console generiert automatisch einen eindeutigen String. In der Regel ist es nicht wichtig, wie dieser aussieht. In den meisten Codelabs müssen Sie auf Ihre Projekt-ID verweisen (in der Regel als PROJECT_ID angegeben). Wenn Ihnen die generierte ID nicht gefällt, können Sie eine andere zufällige ID generieren. Alternativ können Sie eine eigene ID verwenden und prüfen, ob sie 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 zu verwenden. Die Durchführung dieses Codelabs kostet wenig oder gar nichts. Wenn Sie Ressourcen herunterfahren möchten, um zu vermeiden, dass nach dieser Anleitung Kosten anfallen, können Sie die erstellten Ressourcen oder das Projekt löschen. Neue Google Cloud-Nutzer können am kostenlosen Testprogramm im Wert von 300$ teilnehmen.

Cloud Shell starten

Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

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

55efc1aaa7a4d3ad.png

Es dauert nur wenige Augenblicke, bis die Umgebung bereitgestellt ist und eine Verbindung hergestellt werden kann. Wenn der Vorgang abgeschlossen ist, sollte 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 in Google Cloud, was die 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

Voraussetzung für die Anleitung ist eine vorhandene PSA Looker-Instanz. Daher wurde die zugehörige VPC bereits erstellt.

Erstellen Sie in Cloud Shell das Subnetz der 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

Public NAT-Gateway erstellen

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

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-Egress 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 ist, kann nur eine öffentliche, über das Internet routingfähige IP-Adresse verwendet werden. Wenn das Format INTERNET_FQDN_PORT (Option 2) ausgewählt ist, kann der FQDN je nach Bereich des Endpunkts entweder zu einer öffentlichen, über das Internet routingfähigen IP-Adresse oder zu einer privaten IP-Adresse aufgelöst werden: regional oder global.

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 und führen Sie einen „dig“-Befehl aus, um die IP-Adresse von github.com abzurufen.

Das Beispiel aus einem lokalen Terminal generiert die aufgelöste IP-Adresse 140.82.113.4.

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 „–network-endpoint-type“ auf „internet_ip_port“ fest.

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

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 „–network-endpoint-type“ auf „internet_FQDN_port“ festlegen.

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

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 Back-End-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 die IP-Adresse des internen TCP-Proxy-Load-Balancers enthält.

Anschließend wird die Zone „github.com“ über das DNS-Peering für Looker PSA freigegeben, sodass die Verbindung zu GitHub über den internen Load-Balancer in Kombination mit der Internet-NEG und Cloud NAT möglich ist.

Erstellen Sie in Cloud Shell die Antwortrichtlinienzone:

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

Erstellen Sie in Cloud Shell den DNS-A-Eintrag, der die IP-Adresse des TCP-Proxy-Load-Balancers enthält: [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“, mit der eine DNS-Domain für eine private Dienstverbindung erstellt wird. Anfragen nach Einträgen in einem bestimmten Namespace, die aus dem VPC-Netzwerk des Diensterstellers stammen, werden an das VPC-Netzwerk des Dienstnutzers gesendet, um aufgelöst zu werden.

Erstellen Sie in Cloud Shell eine 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 validieren.

12. Neues Projekt erstellen

Entwicklermodus aktivieren

Öffnen Sie in der Looker Console:

Aktivieren Sie den Entwicklermodus (unten links auf der Seite). Wenn er ausgewählt ist, wird das Banner „Sie befinden sich im Entwicklermodus“ angezeigt.

70c9ded749decfbe.png

Neues Projekt erstellen

Öffnen Sie in der Cloud Console:

„Entwickeln“ > „Projekte“

e8ae11e0392a776d.png

Wählen Sie „Neues LookML-Projekt“ aus.

65a3c2573e97e1e9.png

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

9185808e001fa540.png

Wählen Sie „Git konfigurieren“ aus.

42f5e51ce70642ad.png

Git konfigurieren

Aktualisieren Sie die Repository-URL mit Ihren HTTPS-GitHub-Details. Hängen Sie die URL mit „.git“ an 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). Wählen Sie dann „Testen und Einrichtung abschließen“ aus.

1dc44d63c555a9ae.png

Wählen Sie „Git-Aktionen“ aus.

b5903668a50a99ca.png

Wählen Sie „Git-Verbindung testen“ aus.

51b722e84f2df38c.png

Validieren Sie den Git-Verbindungstest.

8fb7386b739f60be.png

13. Bereinigen

Löschen Sie die 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

Glückwunsch! Sie haben die Verbindung zu GitHub mit der Looker Console erfolgreich konfiguriert und validiert.

Cosmopup findet Codelabs toll.

c911c127bffdee57.jpeg

Nächste Schritte

Weitere Informationen und Videos

Referenzdokumente