1. Wprowadzenie
Konfiguracja z prywatnym i publicznym adresem IP jest obsługiwana tylko w przypadku instancji Lookera (podstawowej usługi Google Cloud), które korzystają z dostępu do usług prywatnych na potrzeby połączenia prywatnego.
Instancja Lookera (podstawowej usługi Google Cloud), która ma zarówno prywatne połączenie IP (dostęp do usług prywatnych), jak i publiczne połączenie IP, ma publiczny adres URL, a cały ruch przychodzący będzie przechodzić przez publiczne połączenie 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 mapowana na publiczny adres IP, dlatego jest niedostępna z instancji Lookera wdrożonej jako prywatna lub publiczna.
W tym laboratorium kodu utworzysz połączenie HTTPS z GitHubem za pomocą wewnętrznego systemu równoważenia obciążenia serwerów TCP i grupy punktów końcowych sieci (NEG) wywoływanej z poziomu PSA w Lookerze.
Czego się nauczysz
- Wymagania związane z siecią
- Nawiązywanie połączenia z GitHub z poziomu Lookera za pomocą testowego połączenia
Czego potrzebujesz
- Projekt Google Cloud z uprawnieniami właściciela
- Konto i repozytorium GitHub
- Osobisty token dostępu GitHub (wersja klasyczna)
- dotychczasowa instancja PSA Lookera z włączonym dostępem publicznym i prywatnym lub tylko prywatnym;
2. Co utworzysz
Wdrożysz wewnętrzny system równoważenia obciążenia proxy TCP i NEG internetowy skonfigurowany z rozwiązanym adresem IP github.com, który korzysta z Cloud NAT do wychodzącego ruchu internetowego do organizacji github.com rozwiązanych przez Lookera.
3. Wymagania związane z siecią
Poniżej znajdziesz zestawienie wymagań dotyczących sieci:
Komponenty | Opis |
VPC ($vpc_network) | Sieć VPC w trybie niestandardowym |
reguła przekierowania podsieci | Służy do przydzielenia adresu IP dla regionalnego wewnętrznego systemu równoważenia obciążenia TCP serwera proxy. |
Podsieć tylko-proxy | Każdemu proxy systemu równoważenia obciążenia przypisany jest wewnętrzny adres IP. Pakiety wysyłane z serwera 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 zdefiniowania zewnętrznego backendu systemu równoważenia obciążenia. Punkt końcowy nie może być dostępny tylko przez Cloud VPN lub Cloud Interconnect. |
Usługa backendu | Usługa backendu pełni funkcję łącznika między systemem równoważenia obciążenia a zasobami backendu. W samouczku usługa backendu jest powiązana z NEG w internecie. |
Cloud Router | Cloud NAT korzysta z routerów Cloud Router w celu korzystania z funkcji platformy sterującej, ale nie do zarządzania sesjami BGP. |
Cloud NAT | Regionalna internetowa grupa punktów końcowych sieci korzysta z usługi Cloud NAT do wychodzącego ruchu internetowego. |
4. Topologia ćwiczenia z programowania
5. Konfiguracja i wymagania
Konfiguracja środowiska w samodzielnym tempie
- 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órego nie używają interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest niepowtarzalny we wszystkich projektach Google Cloud i nie można go zmienić (po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie ma znaczenia, jaki to ciąg. W większości laboratoriów z kodem musisz podać identyfikator projektu (zwykle oznaczony jako
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować inny losowy. Możesz też spróbować użyć własnego adresu e-mail, aby sprawdzić, czy jest on dostępny. Po wykonaniu tego kroku nie można go zmienić. Pozostanie on na stałe w ramach projektu. - Informacyjnie: istnieje jeszcze 3 wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Cloud. Przejście przez ten samouczek nie będzie wiązać się z wysokimi kosztami, a być może nawet nie będzie trzeba nic płacić. Aby wyłączyć zasoby i uniknąć obciążenia opłatami po zakończeniu samouczka, możesz usunąć utworzone zasoby lub usunąć 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.
Uruchomienie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w tym przypadku będziesz korzystać z 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 jego zakończeniu powinno wyświetlić się coś takiego:
Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie poprawia wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym CodeLab 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
W tym samouczku zakładamy, że masz już instancję PSA Looker, a więc powiązana 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
Tworzenie bramy Public NAT
Brama NAT jest używana przez regionalny wewnętrzny system równoważenia obciążenia serwera proxy TCP do wychodzącego połączenia z internetem z opcją konfiguracji –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, dlatego ta sama brama NATGW nie obsługuje wychodzącego połączenia z internetem w przypadku GCE/GKE. Wdrożyć dodatkową bramę NAT z parametrem –endpoint-types=ENDPOINT_TYPE_VM na potrzeby wychodzącego połączenia z internetem w 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żliwi wychodzący ruch internetowy 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 DNS A 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 punktów końcowych NEG: INTERNET_FQDN_PORT lub INTERNET_IP_PORT. Jeśli wybrano format INTERNET_IP_PORT (opcja 1), można użyć tylko publicznego adresu IP docelowego w internecie; jeśli wybrano format INTERNET_FQDN_PORT (opcja 2), nazwa FQDN może zostać przekształcona w publiczny adres IP docelowy w internecie lub w prywatny adres IP w zależności od zakresu punktu końcowego: regionalny lub globalny.
Opcja 1. Skonfiguruj internetowy NEG za pomocą adresu IP
Internet NEG wymaga rozwiązania adresu IP witryny github.com, dlatego aby uzyskać jak najlepsze wyniki, otwórz lokalny terminal i wykonaj polecenie dig, aby uzyskać adres IP witryny github.com.
Przykład z lokalnego terminala generuje rozwiązany 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 wartość –network-endpoint-type na internet_ip_port.
W Cloud Shell utwórz NEG internetowy używany dla 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 github-internet-neg, podając rozwiązany 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. Skonfiguruj internetową grupę punktów końcowych sieci za pomocą nazwy FQDN
Opcjonalnie możesz utworzyć internetową grupę NEG i ustawić parametr –network-endpoint-type na internet_FQDN_port.
W Cloud Shell utwórz NEG internetowy używany dla 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 NEG internetowy github-internet-neg za pomocą FQDN 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
Utwórz regułę przekierowania (wewnętrzny system równoważenia obciążenia serwera proxy TCP) za pomocą poniższej składni.
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 następnej sekcji utworzysz zasadę odpowiedzi DNS dla GitHub.com z rekordem A zawierającym adres IP wewnętrznego systemu równoważenia obciążenia serwera proxy.
Następnie peering DNS udostępni strefę github.com usłudze PSA Looker, co umożliwi połączenie z GitHubem za pomocą wewnętrznego systemu równoważenia obciążenia w połączeniu z Internet NEG i Cloud NAT.
W Cloud Shell utwórz strefę zasad odpowiedzi:
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
W Cloud Shell utwórz rekord DNS A z adresem 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 połączoną domenę DNS dla prywatnego połączenia usługi, które wysyła do rozwiązania żądania rekordów w danym przedziale nazw pochodzące z sieci VPC producenta usługi do sieci VPC konsumenta.
W Cloud Shell utwórz domenę peered-dns, której looker będzie używać do wysyłania zapytań dotyczących github.com:
gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.
11. Testowanie połączenia z GitHub
W kolejnych krokach użyjesz konsoli Looker do utworzenia projektu, który umożliwi weryfikację połączeń HTTPS z github.com.
12. Utwórz nowy projekt
Włączanie trybu programisty
W konsoli Looker przejdź do:
Włącz tryb programowania (w lewym dolnym rogu strony). Po wybraniu pojawi się baner „Jesteś w trybie programowania”.
Tworzenie nowego projektu
W Cloud Console:
Programowanie → Projekty
Wybierz Nowy projekt LookML
Podaj nazwę projektu, wybierz Pusty projekt, a następnie Utwórz projekt.
Wybierz Skonfiguruj Git.
Konfigurowanie Git
Zaktualizuj adres URL repozytorium, podając dane konta GitHub w protokole HTTPS. Pamiętaj, aby dodać do adresu URL końcówkę .git, a potem kliknij Dalej.
Przykład:
Zaktualizuj wybór, podając nazwę użytkownika GitHuba i token dostępu (klasyczny), a następnie wybierz Testuj i zakończ konfigurację.
Wybierz działania Git
Wybierz Test połączenia z Git
Sprawdzanie testu połączenia z Git
13. Czyszczenie danych
Aby usunąć komponenty laboratorium 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! Konfiguracja i weryfikacja połączenia z GitHubem za pomocą konsoli Looker Console zostały zakończone pomyślnie.
Cosmopup uważa, że ćwiczenia z programowania są niesamowite.