Łączenie Looker Cloud przez sieci hybrydowe

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:

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

  1. Tworzenie niezależnej sieci VPC w regionie us-central1
  2. Przydziel podsieć IP do prywatnego dostępu do usług
  3. Wdrażanie instancji Lookera w samodzielnym środowisku VPC
  4. Tworzenie lokalnych sieci VPC i hybrydowych
  5. Rozgłaszaj i zweryfikuj zakres adresów IP Lookera przez BGP
  6. Integrowanie i weryfikowanie komunikacji danych Lookera i Postgresql

Rysunek 1

8436cc4802b670db.png

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.

103601bca0b6ebe8.png

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.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

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.

5ac8a1b8b438dce6.png

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

793c5b82ec34fb1f.png

7. Weryfikacja dostępu do Lookera

W konsoli Cloud przejdź do Lookera i wybierz URL instancji, który spowoduje otwarcie interfejsu Lookera.

9d132a67c532279e.png

Po uruchomieniu zobaczysz stronę docelową, jak na zrzucie ekranu poniżej, potwierdzającą dostęp do Looker Cloud Core.

b77055fd674f8a69.png

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.

a3973b2bbb832bae.png

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.

61c09b3d3102149d.png

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.

ddd4a8f851d44fd6.png

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

57c7898390db4bcb.png

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

5b007e46a7c7026.png

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.

87f95ee3d1cd8521.png

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:

a987a76fd57ddedd.png

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

f6d9395712934cd8.png

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.

86a0e8c3534c6986.png

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.

a52de427fa73fb22.png

13. Zaktualizuj połączenie równorzędne VPC

Wybierz SIEĆ VPC → PEERING SIECI VPC → servicenetworking-googleapis-com → EDYTUJ

Wybierz EKSPORTUJ NIESTANDARDOWE TRASY → ZAPISZ.

a2309e4c3a7cee80.png

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.

47e953268d78a469.png

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:

178364a8ee9b6233.png

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:

aad52092c0a9408.png

Po:

7e80b916d29e097c.png

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.

9d132a67c532279e.png

Po uruchomieniu usługi zobaczysz stronę docelową widoczną na zrzucie ekranu poniżej.

b77055fd674f8a69.png

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.

c8cca15252c2020d.png

Nawiązano połączenie

3e51b7e2cc62fb45.png

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:

ef25b837b6a41fe.png

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Ń

e5a2e3af9e7ffd40.png

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.

e6d3675ca7c6911f.jpeg

Więcej informacji i filmy

Dokumenty referencyjne