1. Wprowadzenie
Looker (podstawowa usługa Google Cloud) zapewnia uproszczone i uproszczone udostępnianie instancji Lookera, konfigurowanie i zarządzanie nimi z poziomu konsoli Google Cloud. Niektóre zadania administrowania instancjami mogą być też wykonywane w konsoli.
W przypadku instancji Lookera (podstawowej usługi Google Cloud) dostępne są 3 konfiguracje sieci:
- Publiczny: połączenie sieciowe używa zewnętrznego adresu IP dostępnego w internecie.
- Prywatne: połączenie sieciowe używa wewnętrznego adresu IP prywatnego środowiska wirtualnego w chmurze (VPC) hostowanego przez Google.
- Publiczny i prywatny: połączenie sieciowe używa zarówno publicznego adresu IP, jak i prywatnego adresu IP, przy czym ruch przychodzący jest kierowany przez publiczny adres IP, a ruch wychodzący przez prywatny adres IP.
W tym samouczku wdrożysz kompleksową, kompleksową sieci prywatną, aby umożliwić połączenie Lookera z siecią VPC lokalną przez sieć VPN o wysokiej dostępności. Sieć można powielać, aby spełniała wymagania dotyczące połączeń w wielu chmurach i lokalnie.
Looker (podstawowa usługa Google Cloud) obsługuje prywatne adresy IP dla instancji spełniających te kryteria:
- Wersje instancji muszą być Enterprise lub Embed.
Co utworzysz
Z tego samouczka dowiesz się, jak stworzyć kompleksowe prywatne wdrożenie sieci Lookera w samodzielnym środowisku VPC, które ma połączenie hybrydowe z wielochmurami i środowiskami lokalnymi.
Skonfigurujesz sieć VPC o nazwie on-prem-vpc
, która będzie reprezentować środowisko lokalne. W Twoim wdrożeniu nie byłoby lokalnego środowiska VPC – użyto sieci hybrydowej do Twojego lokalnego centrum danych lub dostawcy usług w chmurze.
Poniżej znajdziesz najważniejsze kroki samouczka
- Tworzenie niezależnej sieci VPC w regionie us-central1
- Przydziel podsieć IP do prywatnego dostępu do usług
- Wdrażanie instancji Lookera w samodzielnym środowisku VPC
- Tworzenie lokalnych sieci VPC i hybrydowych
- Rozgłaszaj i zweryfikuj zakres adresów IP Lookera przez BGP
- Integrowanie i weryfikowanie komunikacji danych Lookera i Postgresql
Rysunek 1
Czego się nauczysz
- Jak utworzyć sieć VPC i powiązać ją z siecią hybrydową
- Jak wdrożyć Lookera w samodzielnym środowisku VPC
- Jak utworzyć lokalny serwer VPC i powiązane sieci hybrydowe
- Połącz lokalny serwer VPC z analytics-vps przez sieć VPN o wysokiej dostępności
- Jak reklamować podsieci Looker w ramach sieci hybrydowej
- Jak monitorować infrastrukturę sieci hybrydowych
- Jak zintegrować bazę danych Postgresql z Lookerem Cloud Core
Czego potrzebujesz
- Projekt Google Cloud
Uprawnienia
2. Zanim zaczniesz
Aktualizowanie projektu na potrzeby samouczka
W tym samouczku używamy zmiennych $variables, aby ułatwić implementację konfiguracji gcloud w Cloud Shell.
W Cloud Shell wykonaj te czynności:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Konfiguracja VPC
Tworzenie pliku analytics-vpc
W Cloud Shell wykonaj te czynności:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Tworzenie lokalnego środowiska VPC
W Cloud Shell wykonaj te czynności:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Tworzenie podsieci bazy danych Postgresql
W Cloud Shell wykonaj te czynności:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
Konfiguracja Cloud Router i NAT
Usługa Cloud NAT jest używana w samouczku do instalacji pakietu oprogramowania, ponieważ instancja maszyny wirtualnej bazy danych nie ma zewnętrznego adresu IP.
Utwórz w Cloud Shell router Cloud Router.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
W Cloud Shell utwórz bramę NAT.
gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Tworzenie testowej instancji bazy danych
Utwórz instancję bazy danych Postgres, która będzie używana do testowania i weryfikowania połączenia z Lookerem.
Utwórz instancję w Cloud Shell.
gcloud compute instances create postgres-database \
--project=$projectid \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=database-subnet-us-central1 \
--no-address \
--image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
Utwórz reguły zapory sieciowej
Aby umożliwić IAP nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:
- Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne za pomocą IAP.
- Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP, których IAP używa do przekierowywania TCP.
Z Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. Prywatny dostęp do usług
Dostęp do usług prywatnych to prywatne połączenie między siecią VPC a siecią należącą do Google lub innej firmy. Google lub podmiot zewnętrzny, czyli podmioty świadczące usługi, są też nazywane producentami usług. Looker Cloud Core jest producentem usługi.
Połączenie prywatne umożliwia instancjom maszyn wirtualnych w Twojej sieci VPC i usługom, z których korzystasz, komunikowanie się wyłącznie za pomocą wewnętrznych adresów IP.
Ogólnie, aby korzystać z dostępu do usług prywatnych, musisz przydzielić zakres adresów IP (blok CIDR) w swojej sieci VPC, a następnie utworzyć połączenie prywatne z producentem usług.
Przydziel zakres adresów IP dla usług
Zanim utworzysz połączenie prywatne, musisz przydzielić zakres adresów IPv4 do użytku przez sieć VPC producenta usługi. Dzięki temu nie dochodzi do kolizji adresów IP między siecią VPC a siecią producenta usługi.
Gdy przydzielisz zakres w sieci VPC, nie będzie on odpowiedni do tworzenia podsieci (głównych i dodatkowych zakresów) ani do miejsc docelowych niestandardowych tras statycznych.
Używanie zakresów adresów IPv6 z dostępem do usług prywatnych nie jest obsługiwane.
Włącz Service Networking API dla swojego projektu w konsoli Google Cloud. Po włączeniu tego interfejsu API może być konieczne odświeżenie strony konsoli, aby potwierdzić, że ten interfejs API został włączony.
Tworzenie przydziału adresów IP
Aby określić zakres adresów i długość prefiksu (maska podsieci), użyj flag z adresami i długością prefiksu. Aby na przykład przydzielić blok CIDR 192.168.0.0/22, podaj adres 192.168.0.0 i długość prefiksu 22.
W Cloud Shell utwórz alokację adresu IP dla Lookera.
gcloud compute addresses create psa-range-looker \
--global \
--purpose=VPC_PEERING \
--addresses=192.168.0.0 \
--prefix-length=22 \
--description="psa range for looker" \
--network=analytics-vpc
Sprawdź w Cloud Shell przydział adresów IP.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
Przykład:
userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION:
SUBNET:
STATUS: RESERVED
Tworzenie połączenia prywatnego
Po utworzeniu przydzielonego zakresu możesz utworzyć połączenie prywatne z producentem usług Looker Cloud Core. Po utworzeniu instancji narzędzia Looker prywatne połączenie ustanawia połączenie równorzędne sieci VPC między siecią VPC a siecią producenta usług.
Połączenia prywatne to relacja jeden-do-jednego między siecią VPC a producentem usług. Jeśli jeden producent usług oferuje wiele usług, potrzebujesz tylko jednego połączenia prywatnego dla wszystkich jego usług.
Jeśli łączysz się z wieloma producentami usług, użyj unikalnej alokacji dla każdego z nich. Ułatwia to zarządzanie ustawieniami sieciowymi poszczególnych producentów usług, takimi jak trasy i reguły zapory sieciowej.
W Cloud Shell utwórz połączenie prywatne i zapamiętaj nazwę operacji.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Przykład:
user@cloudshell$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
Sprawdź w Cloud Shell, czy operacja się udała. Zastąp OPERATION_NAME nazwą wygenerowaną w poprzednim kroku.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
Przykład:
user@cloudshell$ gcloud services vpc-peerings operations describe \
--name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
5. Tworzenie instancji Lookera (podstawowej usługi Google Cloud)
Zanim zaczniesz
Włącz w swoim projekcie interfejs Looker API w konsoli Google Cloud. Po włączeniu tego interfejsu API może być konieczne odświeżenie strony konsoli, aby potwierdzić, że ten interfejs API został włączony.
Skonfiguruj klienta OAuth, aby uwierzytelnić instancję i uzyskać do niej dostęp.
W poniższej sekcji utworzysz instancję Lookera przy użyciu identyfikatora klienta i tajnego klucza OAuth.
Autoryzowane źródła JavaScript i identyfikatory URI przekierowania nie są wymagane.
W konsoli Cloud utwórz instancję na podstawie dostarczonych zrzutów ekranu.
Kliknij LOOKER → UTWÓRZ INSTANCJĘ.
Wypełnij wcześniej utworzony identyfikator i klucz tajny klienta OAuth.
Wybierz UTWÓRZ.
Podczas tworzenia instancji nastąpi przekierowanie do strony Instancje w konsoli. Aby wyświetlić stan nowej instancji, konieczne może być odświeżenie strony. Możesz też zobaczyć aktywność związaną z tworzeniem instancji, klikając ikonę powiadomień w menu konsoli Google Cloud. Podczas tworzenia instancji ikona powiadomień w menu konsoli Google Cloud będzie otoczona ikoną ładowania.
Po utworzeniu instancji Lookera generowany jest adres URL instancji. Zanotuj adres URL.
6. Zaktualizuj identyfikator klienta OAuth 2.0
W tej sekcji musisz zaktualizować utworzony wcześniej identyfikator klienta OAuth Identyfikator URI autoryzowanego przekierowania, dołączając /oauth2callback
do adresu URL instancji.
Po zakończeniu możesz zalogować się w interfejsie Lookera za pomocą adresu URL instancji.
W konsoli Cloud Console kliknij Interfejsy API i usługi → DANE LOGOWANIA.
Wybierz identyfikator klienta OAuth 2.0 i zaktualizuj adres URL instancji, np.:
7. Weryfikacja dostępu do Lookera
W konsoli Cloud przejdź do Lookera i wybierz URL instancji, który spowoduje otwarcie interfejsu Lookera.
Po uruchomieniu zobaczysz stronę docelową, jak na zrzucie ekranu poniżej, potwierdzającą dostęp do Looker Cloud Core.
8. Połączenia hybrydowe
W następnej sekcji utworzysz router Cloud Router, który umożliwi Ci dynamiczną wymianę tras pomiędzy prywatnym środowiskiem wirtualnym w chmurze (VPC) a siecią równorzędną przy użyciu protokołu Border Gateway (BGP).
Cloud Router może skonfigurować sesję BGP przez tunel Cloud VPN, aby połączyć Twoje sieci. Automatycznie uczy się nowych zakresów adresów IP podsieci i ogłasza je w sieci równorzędnej.
W tym samouczku wdróżysz sieć VPN o wysokiej dostępności między analytics-vpc a on-prem-vpc, aby zilustrować prywatne połączenie z Lookerem.
Utwórz bramę sieci VPN o wysokiej dostępności dla analytics-vpc.
Podczas tworzenia każdej bramy automatycznie przydzielane są 2 zewnętrzne adresy IPv4, po jednym dla każdego interfejsu bramy. Zanotuj te adresy IP – będą Ci potrzebne później w krokach konfiguracji.
Utwórz w Cloud Shell sieć VPN o wysokiej dostępności
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Utwórz bramę sieci VPN o wysokiej dostępności dla on-prem-vpc.
Podczas tworzenia każdej bramy automatycznie przyznawane są 2 zewnętrzne adresy IPv4, po jednym dla każdego interfejsu bramy. Zapisz te adresy IP, aby użyć ich później w krokach konfiguracji.
W Cloud Shell utwórz bramę sieci VPN o wysokiej dostępności.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Sprawdzanie tworzenia GW o wysokiej dostępności sieci VPN
W konsoli wybierz POŁĄCZENIE HYBRYDOWE → VPN → GATEWAYS CLOUD VPN.
Utwórz router Cloud Router dla sieci VPC analitycznej.
Utwórz w Cloud Shell router Cloud Router znajdujący się w regionie us-central1.
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
Tworzenie routera Cloud Router dla lokalnego środowiska VPC
Utwórz w Cloud Shell router Cloud Router znajdujący się w regionie us-central1.
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Utwórz tunele VPN dla vpc analityki
W każdej bramie sieci VPN o wysokiej dostępności utworzysz 2 tunele VPN.
Utwórz tunel VPN0
W Cloud Shell utwórz tunel0:
gcloud compute vpn-tunnels create analytics-vpc-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 0
Tworzenie tunelu VPN1
W Cloud Shell utwórz tunel 1:
gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 1
Tworzenie tuneli VPN dla lokalnego środowiska VPC
W każdej bramie sieci VPN o wysokiej dostępności utworzysz 2 tunele VPN.
Utwórz tunel VPN0
W Cloud Shell utwórz tunel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 0
Tworzenie tunelu VPN1
W Cloud Shell utwórz tunel1:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 1
Sprawdź poprawność utworzenia tunelu VPN
W konsoli przejdź do HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS.
9. Ustal sąsiadów BGP
Utwórz sesje BGP
W tej sekcji skonfigurujesz interfejsy Cloud Router i peery BGP.
Tworzenie interfejsu BGP i połączenie równorzędne dla analytics-vpc
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel0 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel1 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1
Utwórz interfejs BGP i połączenie równorzędne dla lokalnego środowiska VPC
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel0-to-analytics-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel0 \
--interface if-tunnel1-to-analytics-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel1-to-analytics-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region us-central1
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel1\
--interface if-tunnel2-to-analytics-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1
Wybierz POŁĄCZENIE hybrydowe → VPN, aby wyświetlić szczegóły tunelu VPN.
Zweryfikuj zapamiętane trasy analytics-vpc przez sieć VPN o wysokiej dostępności
Ponieważ tworzone są tunele sieci VPN o wysokiej dostępności i sesje BGP, trasy z lokalnego środowiska VPC są zapamiętywane z instancji analytics-vpc. W konsoli wybierz Sieć VPC → Sieci VPC → analytics-vpc → TRASY → REGION → us-central1 → WIDOK
Zauważ, że usługa analytics-vpc ma poznane trasy z sieci lokacyjnej vpc z bazy danych na platformie lokalnej vpc-subnet-us-central1 172.16.10.0/27
Sprawdź, czy lokalna sieć VPC nie zapamiętywała tras przez sieć VPN o wysokiej dostępności
Sieć VPC analytics nie ma podsieci, dlatego router Cloud Router nie będzie rozgłaszać żadnych podsieci do sieci VPC lokalnej . W konsoli wybierz Sieć VPC → Sieci VPC → on-prem-vpc → TRASY → REGION → us-central1 → WIDOK
10. Rozgłaszanie podsieci Looker na potrzeby instalacji lokalnych
Podmiana podsieci prywatnej usługi (PSA) nie jest automatycznie reklamowana przez router chmurowy analytics-cr-us-central1, ponieważ jest ona przypisana do PSA, a nie do VPC.
Musisz utworzyć reklamę trasy niestandardowej z analytics-cr-central1 dla podsieci PSA 192.168.0.0/22 (PSA-range-looker), która będzie rozgłaszana w środowisku lokalnym i używana przez zbiory zadań do uzyskiwania dostępu do Lookera.
W konsoli wybierz HYBRID CONNECTIVITY → CLOUD ROUTERS → analytics-cr-us-central1 i wybierz EDYTUJ.
W sekcji Rozgłaszane trasy wybierz opcję Utwórz trasy niestandardowe, zaktualizuj pola zgodnie z poniższym przykładem, wybierz GOTOWE i kliknij ZAPISZ.
11. Sprawdź, czy lokalny serwer VPC zapamiętał podsieć Lookera
Lokalna instancja vpc będzie miała teraz dostęp do podsieci PSA Lookera, ponieważ została rozgłaszana z Analytics-cr-us-central1 jako reklama na trasie niestandardowej.
W konsoli wybierz SIEĆ VPC → SIECI VPC → on-prem-vpc → TRASY → REGION → us-central1 → WIDOK
Obserwuj trasy Lookera rozgłaszane z analytics-vpc:
12. Weryfikowanie bieżącego połączenia równorzędnego VPC
Połączenie między usługą Looker Cloud Core a siecią VPC analytics odbywa się za pomocą połączenia równorzędnego VPC, które umożliwia wymianę niestandardowych tras wyuczonych za pomocą BGP. W tym samouczku interfejs analytics-vpc będzie musiał opublikować w Lookerze trasy zapamiętane przez lokalny serwer VPC. Aby włączyć tę funkcję, połączenia równorzędne VPC wymagają aktualizacji eksportu tras niestandardowych.
Sprawdzanie aktualnie zaimportowanych i wyeksportowanych tras.
Przejdź do SIEĆ VPC → PEERING SIECI VPC → servicenetworking-googleapis-com
Na poniższym zrzucie ekranu widać, jak usługa analytics-vpc importuje psa-range-looker z sieci vpc zarządzanej przez Google, w której znajdują się usługi sieciowe.
Wybierz EKSPORTOWANE TRASY, nie są eksportowane żadne trasy do równorzędnej sieci VPC, ponieważ 1) podsieci nie są skonfigurowane w analytics-vpc; 2) nie wybrano opcji eksportu tras niestandardowych.
13. Zaktualizuj połączenie równorzędne VPC
Wybierz SIEĆ VPC → PEERING SIECI VPC → servicenetworking-googleapis-com → EDYTUJ
Wybierz EKSPORTUJ NIESTANDARDOWE TRASY → ZAPISZ.
14. Sprawdź zaktualizowane połączenie równorzędne VPC
Zweryfikuj wyeksportowane trasy.
Przejdź do SIEĆ VPC → PEERING SIECI VPC → servicenetworking-googleapis-com
Wybierz EKSPORTOWANE TRASY, aby wyświetlić lokalne trasy VPC (podsieć bazy danych 172.16.10.0/27) wyeksportowane do równorzędnej sieci VPC hostującej narzędzie Looker przez analytics-vpc.
15. Tworzenie bazy danych postgres w Lookerze
W następnej sekcji połączysz się przez SSH z maszyną wirtualną postgres-database za pomocą Cloud Shell.
Wykonaj w Cloud Shell połączenie SSH z instancją postgres-database**.
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Zidentyfikuj i zanotuj adres IP (ens4) instancji postgres-database w systemie operacyjnym.
ip a
Przykład:
user@postgres-database:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 172.16.10.2/32 metric 100 scope global dynamic ens4
valid_lft 84592sec preferred_lft 84592sec
inet6 fe80::4001:acff:fe10:a02/64 scope link
valid_lft forever preferred_lft forever
W systemie operacyjnym zaloguj się w postgresql.
sudo -u postgres psql postgres
Wpisz hasło w systemie operacyjnym.
\password postgres
W systemie operacyjnym ustaw hasło na postgres (dwukrotnie wpisz to samo hasło)
postgres
Przykład:
user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres":
Enter it again:
W systemie operacyjnym zamknij postgres.
\q
Przykład:
postgres=# \q
user@postgres-database:~$
W tej sekcji wstawisz adres IP instancji postgres-database oraz podsieć prywatnego dostępu do Google Lookera (192.168.0.0/22) w pliku pg_hba.conf w sekcji połączeń lokalnych IPv4 zgodnie z zrzutem ekranu poniżej:
sudo nano /etc/postgresql/15/main/pg_hba.conf
W tej sekcji odkomentuj plik postgresql.conf, aby nasłuchiwać wszystkich adresów IP „*”, jak pokazano na poniższym zrzucie ekranu:
sudo nano /etc/postgresql/15/main/postgresql.conf
Przed:
Po:
Uruchom ponownie usługę postgresql w systemie operacyjnym.
sudo service postgresql restart
W systemie operacyjnym zweryfikuj stan postgresql jako aktywny.
sudo service postgresql status
Przykład:
W systemie operacyjnym sprawdź, czy usługa postgresql jest aktywna.
user@postgres-database$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
Active: active (exited) since Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
16. Tworzenie bazy danych postgres
W następnej sekcji utworzysz bazę danych postgres o nazwie postgres_looker i schemat looker_schema, który posłuży do sprawdzania łączności Lookera z usługą lokalną.
Zaloguj się w systemie operacyjnym do postgres.
sudo -u postgres psql postgres
Utwórz bazę danych w systemie operacyjnym.
create database postgres_looker;
W systemie operacyjnym wyświetl listę baz danych.
\l
W systemie operacyjnym utwórz narzędzie do wyszukiwania użytkowników za pomocą narzędzia do wyszukiwania haseł.
create user postgres_looker with password 'postgreslooker';
W systemie operacyjnym połącz się z bazą danych.
\c postgres_looker;
W systemie operacyjnym utwórz schemat Lookera-schematu i wyjdź do promptu Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Przykład:
user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
Type "help" for help.
postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | ICU Locale | Locale Provider | Access privileges
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
postgres_looker | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | | libc | =c/postgres +
| | | | | | | postgres=CTc/postgres
(4 rows)
postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
CREATE SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit
Wyjdź z systemu operacyjnego, wracając do Cloud Shell.
\q
exit
17. Utwórz zaporę sieciową w lokalnym środowisku VPC
W następnej sekcji utwórz zaporę sieciową Ingress z rejestrowaniem, która zezwala na komunikację podsieci Lookera z instancją bazy danych postgres.
W Cloud Shell utwórz zaporę sieciową na platformie lokalnej.
gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging
18. Utwórz prywatny DNS w analytics-vpc
Chociaż usługa Looker jest wdrażana w sieci VPC zarządzanej przez Google, dostęp do prywatnego DNS w sieci analytics-vpc jest obsługiwany przez połączenie równorzędne z siecią usług.
W tej sekcji utworzysz w Analytics-vpc prywatną strefę DNS zawierającą rekord A instancji postgres-database w pełni kwalifikowana nazwa domeny (postgres.analytics.com)
i adres IP).
W Cloud Shell utwórz strefę prywatną analytics.com.
gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"
W Cloud Shell sprawdź adres IP instancji bazy danych postgres.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
Przykład:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
W Cloud Shell utwórz rekord A, pamiętając o dodaniu wcześniej zidentyfikowanego adresu IP.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
Przykład:
user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2
W Cloud Shell połącz sufiks DNS analytics.com z usługami sieciowymi, aby umożliwić Lookerowi dostęp do prywatnej strefy analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. Integracja Lookera z bazą danych Postgres
W tej sekcji użyjesz konsoli Cloud, aby utworzyć połączenie bazy danych z lokalną instancją postgres-database.
W konsoli Google Cloud przejdź do Lookera i wybierz adres URL instancji, aby otworzyć interfejs Lookera.
Po uruchomieniu usługi zobaczysz stronę docelową widoczną na zrzucie ekranu poniżej.
Wybierz ADMINISTRACJA → BAZA DANYCH → POŁĄCZENIA → wybierz DODAJ POŁĄCZENIE.
Podaj szczegóły połączenia zgodnie z informacjami na poniższym zrzucie ekranu i kliknij POŁĄCZ.
Nawiązano połączenie
20. Sprawdzanie połączenia z Lookerem
W następnej sekcji dowiesz się, jak sprawdzić łączność Lookera z bazą danych postgres w VPC na platformie lokalnej za pomocą działania „test” w Lookerze i TCPDUMP.
Jeśli sesja przekroczyła limit czasu, zaloguj się w bazie danych postgres w Cloud Shell.
W Cloud Shell wykonaj te czynności:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
W systemie operacyjnym utwórz filtr TCPDUMP z podsiecią psa-range-looker 192.168.0.0/22
sudo tcpdump -i any net 192.168.0.0/22 -nn
Przejdź do węzła ADMINISTRACJA → BAZA DANYCH → POŁĄCZENIA → Wybierz → Testuj.
Po wybraniu testu Looker połączy się z bazą danych postgres w następujący sposób:
Wróć do terminala systemu operacyjnego i sprawdź, czy funkcja TCPDUMP wykryła, że narzędzie do wyszukiwania zakresów psc łączy się z lokalną instancją postgres-database.
Dodaj notatkę, że każdy adres IP z zakresu PSA będzie wyświetlany z Lookera
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
21. Zalecenia dotyczące bezpieczeństwa
Istnieje kilka rekomendacji i sprawdzonych metod dotyczących bezpieczeństwa związanych z zabezpieczaniem Lookera i bazy danych Postgres. Możesz w tym celu korzystać z:
- Konfigurowanie uprawnień konta bazy danych o minimalnych uprawnieniach dla Lookera, które nadal umożliwiają wykonywanie potrzebnych funkcji.
- Dane przesyłane między klientem a interfejsem użytkownika Lookera oraz Lookerem w bazie danych są szyfrowane przy użyciu protokołu TLS 1.2 lub nowszego
- Dane w spoczynku są domyślnie szyfrowane. Klient może też korzystać z kluczy CMEK w przypadku instancji Lookera (https://cloud.google.com/looker/docs/looker-core-cmek) i Postgresa (https://cloud.google.com/sql/docs/postgres/configure-cmek).
- Kontrola dostępu do Lookera – administratorzy Lookera mogą kontrolować, co użytkownik główny lub grupa użytkowników mogą zobaczyć i zrobić w Lookerze, przyznając dostęp do treści, danych i funkcji. Dzięki tym opcjom administrator Lookera może zdefiniować konkretne role, które obejmują model i zestaw uprawnień, oraz utworzyć szczegółową kontrolę dostępu do danych.
- Looker obsługuje zarówno logi kontrolne, jak i logi dostępu do danych, które zawierają informacje o tym, kto, kiedy i gdzie wykonał określone działanie. Logi kontrolne są domyślnie włączone, a logi dostępu do danych trzeba właściwie włączyć.
- Obecnie VPC-SC obsługuje instancje Enterprise i Embed skonfigurowane tylko z prywatnym adresem IP
22. Czyszczenie danych
Usuń instancję Lookera Cloud Core. Otwórz stronę:
LOOKER → Looker-tutorial → USUŃ
Usuń z Cloud Shell komponenty samouczka.
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
23. Gratulacje
Gratulacje! Udało Ci się skonfigurować i zweryfikować łączność Lookera w ramach sieci hybrydowej, co umożliwia komunikację danych w środowiskach lokalnych i wielochmurowych.
Udało Ci się też przetestować łączność Lookera Cloud Core z bazą danych postgres za pomocą narzędzia „Test” w Looker Connect i TCPDUMP w instancji bazy danych postgres.
Cosmopup uważa, że samouczki są świetne.
Więcej informacji i filmy
- Przedstawiamy kolejną wersję Lookera
- Chcesz przejść na GCP? Na początek: sieci VPC
- Routing dynamiczny za pomocą Cloud Router
Dokumenty referencyjne
- Dokumentacja Lookera (podstawowej usługi Google Cloud)
- Tworzenie instancji Lookera (podstawowej usługi Google Cloud)
- Tworzenie połączenia z prywatnym adresem IP na potrzeby Lookera (podstawowej usługi Google Cloud)
- Sieć VPN o wysokiej dostępności między sieciami Google Cloud
- Skonfiguruj tłumaczenie adresów sieciowych i zarządzaj nimi w Cloud NA
- Opcje wymiany tras dynamicznych