Looker PSA Southbound HTTPS Internet NEG

1. Wprowadzenie

Tylko instancje Lookera (podstawowej usługi Google Cloud), które do połączenia prywatnego używają prywatnego dostępu do usług, obsługują konfigurację z prywatnym i publicznym adresem IP.

Instancja Lookera (podstawowej usługi Google Cloud), która ma zarówno połączenie po IP (prywatny dostęp do usług), jak i połączenie po IP, ma publiczny adres URL, a cały ruch przychodzący będzie przechodzić przez połączenie po IP. Ruch wychodzący jest kierowany przez sieć VPC, którą można skonfigurować tak, aby zezwalała tylko na ruch z prywatnych adresów IP, jak pokazano na rysunku 1.

Figure1

9f587c14791dd92e.png

Komunikacja z github.com jest kierowana na publiczny adres IP, który jest niedostępny z instancji Lookera wdrożonej jako prywatna lub publiczna+prywatna.

W tym ćwiczeniu wykonasz wychodzące połączenie HTTPS z GitHubem za pomocą wewnętrznego systemu równoważenia obciążenia proxy TCP i internetowej grupy punktów końcowych sieci (NEG) wywoływanej z Looker PSA.

Czego się nauczysz

  • Wymagania związane z siecią
  • Nawiązywanie połączenia z GitHubem z Lookera za pomocą funkcji Test Connection

Czego potrzebujesz

5348de53f0a78a50.png

2. Co utworzysz

Wdrożysz wewnętrzny system równoważenia obciążenia serwera proxy TCP i internetową grupę NEG skonfigurowaną z rozwiązanym adresem IP github.com, która korzysta z Cloud NAT na potrzeby ruchu wychodzącego do internetu w organizacjach github.com rozwiązywanego przez Lookera.

3. Wymagania związane z siecią

Poniżej znajdziesz zestawienie wymagań sieciowych:

Komponenty

Opis

VPC ($vpc_network)

Sieć VPC w trybie niestandardowym

podsieć reguły przekierowania,

Służy do przydzielania adresu IP regionalnemu wewnętrznemu systemowi równoważenia obciążenia TCP serwera proxy.

Podsieć tylko-proxy

Każdy serwer proxy systemu równoważenia obciążenia ma przypisany wewnętrzny adres IP. Pakiety wysyłane z proxy do maszyny wirtualnej lub punktu końcowego backendu mają źródłowy adres IP z podsieci tylko-proxy.

Internetowa grupa punktów końcowych sieci

Zasób używany do definiowania zewnętrznego backendu systemu równoważenia obciążenia. Punkt końcowy nie może być osiągalny tylko przez Cloud VPN lub Cloud Interconnect.

Usługa backendu

Usługa backendu pełni funkcję pomostu między systemem równoważenia obciążenia a zasobami backendu. W samouczku usługa backendu jest powiązana z internetową grupą punktów końcowych sieci.

Cloud Router

Cloud NAT korzysta z routerów Cloud Router w zakresie funkcji platformy sterującej, ale nie do zarządzania sesjami BGP.

Cloud NAT

Regionalna internetowa grupa punktów końcowych sieci korzysta z Cloud NAT w przypadku ruchu wychodzącego do internetu.

4. Topologia ćwiczeń z programowania

c5871e5418d37f13.png

5. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego ćwiczenia nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

55efc1aaa7a4d3ad.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym ćwiczeniu w Codelabs możesz wykonać w przeglądarce. Nie musisz niczego instalować.

6. Zanim zaczniesz

Włącz interfejsy API

W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:

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

Włącz wszystkie niezbędne usługi:

gcloud services enable compute.googleapis.com

7. Komponenty sieci VPC

Sieć VPC

Wymaganiem wstępnym tego samouczka jest istniejąca instancja Lookera PSA, dlatego powiązana z nią sieć VPC jest już utworzona.

W Cloud Shell utwórz podsieć reguły przekierowania:

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

W Cloud Shell utwórz regionalną podsieć tylko-proxy:

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

Utwórz bramę Public NAT

Brama NAT jest używana przez regionalny wewnętrzny system równoważenia obciążenia TCP serwera proxy do wychodzącego ruchu internetowego z opcją konfiguracji –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, dlatego ta sama brama NAT nie będzie obsługiwać wychodzącego ruchu internetowego GCE/GKE. Wdróż dodatkową bramę NAT z argumentem –endpoint-types=ENDPOINT_TYPE_VM na potrzeby wychodzącego ruchu internetowego GCE/GKE.

W Cloud Shell utwórz router Cloud Router:

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

W Cloud Shell utwórz bramę Cloud NAT, która umożliwia ruch wychodzący z internetu dla systemu równoważenia obciążenia serwera proxy TCP:

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

Rezerwowanie adresu IP systemu równoważenia obciążenia

W Cloud Shell zarezerwuj wewnętrzny adres IP dla systemu równoważenia obciążenia, który będzie później używany jako rekord A DNS dla github.com:

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

W Cloud Shell wyświetl zarezerwowany adres IP:

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

Przykładowe dane wyjściowe:

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

8. Internetowa grupa punktów końcowych sieci

Istnieją 2 sposoby konfigurowania zewnętrznego punktu końcowego, do którego odwołuje się internetowa grupa NEG : INTERNET_FQDN_PORT lub INTERNET_IP_PORT. Jeśli wybierzesz format INTERNET_IP_PORT (opcja 1), możesz użyć tylko publicznego adresu IP, który można kierować w internecie. Jeśli wybierzesz format INTERNET_FQDN_PORT (opcja 2), nazwa FQDN może być rozpoznawana jako publiczny adres IP, który można kierować w internecie, lub jako prywatny adres IP w zależności od zakresu punktu końcowego: regionalnego lub globalnego.

Opcja 1. Skonfiguruj internetową NEG za pomocą adresu IP

Internetowa grupa punktów końcowych sieci wymaga rozpoznanego adresu IP witryny Github.com, dlatego aby uzyskać najlepszą wydajność, otwórz lokalny terminal i wykonaj polecenie dig, aby uzyskać adres IP witryny github.com.

Przykład z lokalnego terminala generuje rozpoznany adres IP 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

Utwórz internetową grupę NEG i ustaw parametr –network-endpoint-type na internet_ip_port.

W Cloud Shell utwórz internetową grupę NEG używaną w przypadku github.com:

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

W Cloud Shell zaktualizuj internetową grupę punktów końcowych sieci github-internet-neg o rozpoznany adres IP github.com i port 443:

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

Przykład:

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

Opcja 2. Konfigurowanie internetowej grupy punktów końcowych sieci za pomocą pełnej i jednoznacznej nazwy domeny

Opcjonalnie możesz utworzyć internetową grupę NEG i ustawić wartość –network-endpoint-type na internet_FQDN_port.

W Cloud Shell utwórz internetową grupę NEG używaną w przypadku github.com:

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

W Cloud Shell zaktualizuj github-internet-neg w usłudze Internet NEG, podając pełną i jednoznaczną nazwę domeny github.com:

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

9. Tworzenie usługi GitHub

Tworzenie komponentów systemu równoważenia obciążenia

W Cloud Shell wykonaj te czynności:

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

W Cloud Shell utwórz docelowy serwer proxy TCP, aby kierować żądania do usługi backendu:

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

W przypadku poniższej składni utwórz regułę przekierowania (wewnętrzny system równoważenia obciążenia serwera proxy TCP).

W Cloud Shell wykonaj te czynności:

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. Strefa DNS GitHub

W kolejnej sekcji utworzysz zasadę odpowiedzi DNS dla GitHub.com z rekordem A zawierającym adres IP wewnętrznego systemu równoważenia obciążenia TCP serwera proxy.

Następnie peering DNS udostępni strefę github.com usłudze Looker PSA, co umożliwi połączenie z GitHubem za pomocą wewnętrznego modułu równoważenia obciążenia w połączeniu z internetową grupą punktów końcowych (NEG) i Cloud NAT.

W Cloud Shell utwórz strefę zasady odpowiedzi:

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

W Cloud Shell utwórz rekord DNS A zawierający adres IP systemu równoważenia obciążenia serwera proxy TCP [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]"

Przykład:

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

Aktualizowanie połączenia równorzędnego DNS

W tej sekcji użyjesz składni „gcloud services peered-dns-domains create”, która tworzy równorzędną domenę DNS dla połączenia z usługą prywatną, które wysyła żądania rekordów w danej przestrzeni nazw pochodzące z sieci VPC producenta usługi do sieci VPC konsumenta w celu ich rozwiązania.

W Cloud Shell utwórz domenę peered-dns-domain, do której Looker będzie wysyłać zapytania dotyczące github.com:

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

11. Testowanie połączenia z GitHubem

Wykonując poniższe kroki, utworzysz w konsoli Looker projekt, który pozwoli Ci sprawdzić łączność HTTPS z witryną github.com.

12. Utwórz nowy projekt

Włączanie trybu deweloperskiego

W konsoli Looker otwórz:

Włącz tryb programowania (w lewym dolnym rogu strony). Po wybraniu tej opcji wyświetli się baner „Jesteś w trybie programowania”.

70c9ded749decfbe.png

Tworzenie nowego projektu

W konsoli Cloud otwórz:

Programowanie → Projekty

e8ae11e0392a776d.png

Wybierz Nowy projekt LookML

65a3c2573e97e1e9.png

Podaj nazwę projektu, wybierz Pusty projekt, a następnie kliknij Utwórz projekt.

9185808e001fa540.png

Kliknij Skonfiguruj Git.

42f5e51ce70642ad.png

Konfigurowanie Gita

Zaktualizuj adres URL repozytorium, podając szczegóły dotyczące protokołu HTTPS w GitHubie. Pamiętaj, aby dodać na końcu adresu URL rozszerzenie .git, a następnie kliknij Dalej.

f5c448f6659b8fc1.png

Przykład:

4065ab1d196589f.png

Zaktualizuj wybór, podając nazwę użytkownika GitHuba i osobisty token dostępu (klasyczny), a następnie kliknij Testuj i zakończ konfigurację.

1dc44d63c555a9ae.png

Wybierz Działania Git

b5903668a50a99ca.png

Wybierz Testuj połączenie z Git

51b722e84f2df38c.png

Sprawdzanie testu połączenia z Git

8fb7386b739f60be.png

13. Czyszczenie danych

Usuń komponenty modułu z jednego terminala Cloud Shell:

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. Gratulacje

Gratulacje. Udało Ci się skonfigurować i zweryfikować połączenie z GitHubem za pomocą konsoli Looker.

Cosmopup uważa, że ćwiczenia z programowania są świetne!!

c911c127bffdee57.jpeg

Co dalej?

Więcej informacji i filmy

Dokumentacja