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

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
- Projekt Google Cloud z uprawnieniami właściciela
- Konto i repozytorium GitHub
- Osobisty token dostępu do GitHuba (wersja klasyczna)
- Istniejąca instancja Lookera PSA z włączonym dostępem publicznym i prywatnym lub tylko prywatnym.

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

5. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- 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ć.



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

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:

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"

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

Tworzenie nowego projektu
W konsoli Cloud otwórz:
Programowanie → Projekty

Wybierz Nowy projekt LookML

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

Kliknij Skonfiguruj Git.

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.

Przykład:

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

Wybierz Działania Git

Wybierz Testuj połączenie z Git

Sprawdzanie testu połączenia z Git

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!!
