Łączenie Looker Cloud przez sieci hybrydowe

1. Wprowadzenie

Looker (podstawowa usługa Google Cloud) zapewnia uproszczone, sprawne udostępnianie i konfigurowanie instancji Lookera oraz zarządzanie nimi z poziomu konsoli Google Cloud. Niektóre zadania związane z administrowaniem instancją można też wykonywać w konsoli.

Instancje Lookera (podstawowej usługi Google Cloud) są dostępne w 3 konfiguracjach sieci:

  • Publiczne: połączenie sieciowe korzysta z zewnętrznego adresu IP dostępnego w internecie.
  • Prywatne: połączenie sieciowe korzysta z wewnętrznego adresu IP prywatnego środowiska wirtualnego w chmurze (VPC) hostowanego przez Google.
  • Publiczne i prywatne: połączenie sieciowe korzysta zarówno z publicznego, jak i prywatnego adresu IP. Ruch przychodzący jest kierowany przez publiczny adres IP, a wychodzący – przez prywatny adres IP.

W tym samouczku wdrożysz kompleksową sieć prywatną , która będzie obsługiwać połączenie Lookera z lokalną siecią VPC za pomocą sieci VPN o wysokiej dostępności. Możesz ją replikować, aby spełniała Twoje wymagania dotyczące łączności z wieloma chmurami i lokalnymi środowiskami.

Looker (podstawowa usługa Google Cloud) obsługuje prywatny adres IP w przypadku instancji, które spełniają te kryteria:

Co utworzysz

W tym samouczku utworzysz kompleksowe wdrożenie sieci prywatnej Looker w samodzielnej sieci VPC, która ma połączenie hybrydowe z wieloma chmurami i środowiskami lokalnymi.

Skonfigurujesz sieć VPC o nazwie on-prem-vpc, która będzie reprezentować środowisko lokalne. W Twoim wdrożeniu sieć on-prem-vpc nie będzie istniała. Zamiast niej będzie używana sieć hybrydowa do lokalnego centrum danych lub dostawcy chmury.

Poniżej znajdziesz główne etapy samouczka.

  1. Tworzenie samodzielnej sieci VPC w regionie us-central1
  2. Przydzielanie podsieci IP do prywatnego dostępu do usług
  3. Wdrażanie instancji Lookera w samodzielnym VPC
  4. Tworzenie lokalnej sieci VPC i sieci hybrydowej
  5. Rozgłaszanie i weryfikowanie zakresu adresów IP Lookera za pomocą protokołu BGP
  6. Integrowanie i weryfikowanie komunikacji danych między Lookerem a PostgreSQL

Figure1

8436cc4802b670db.png

Czego się nauczysz

  • Jak utworzyć sieć VPC i powiązaną z nią sieć hybrydową
  • Jak wdrożyć Lookera w samodzielnej sieci VPC
  • Tworzenie lokalnej sieci VPC i powiązanej z nią sieci hybrydowej
  • Połącz sieć lokalną vpc z siecią analytics-vps za pomocą sieci VPN o wysokiej dostępności
  • Jak reklamować podsieci Looker w sieci hybrydowej
  • Jak monitorować infrastrukturę sieci hybrydowej
  • Jak zintegrować bazę danych PostgreSQL z Looker 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

Utwórz sieć analytics-vpc

W Cloud Shell wykonaj te czynności:

gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom

Utwórz sieć lokalną 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 routera Cloud Router i NAT

W samouczku do instalacji pakietu oprogramowania używana jest usługa Cloud NAT, ponieważ instancja maszyny wirtualnej bazy danych nie ma zewnętrznego adresu IP.

W Cloud Shell utwórz 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.

W Cloud Shell utwórz instancję.

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 połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:

  • Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne przez 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

Prywatny dostęp do usług to prywatne połączenie między siecią VPC a siecią należącą do Google lub innej firmy. Google lub podmioty zewnętrzne świadczące usługi są również nazywane producentami usług. Chmura Lookera Core jest producentem usług.

Prywatne połączenie pozwala instancjom maszyn wirtualnych w sieci VPC i usługom, z których korzystasz, komunikować się wyłącznie z użyciem wewnętrznych adresów IP.

Aby korzystać z prywatnego dostępu do usług, musisz przydzielić zakres adresów IP (blok CIDR) w sieci VPC, a następnie utworzyć połączenie prywatne z producentem usług.

Przydzielanie zakresu adresów IP dla usług

Zanim utworzysz połączenie prywatne, musisz przydzielić zakres adresów IPv4, który będzie używany 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 kwalifikować się do podsieci (zakresy podstawowe i dodatkowe) ani miejsc docelowych niestandardowych tras statycznych.

Używanie zakresów adresów IPv6 z prywatnym dostępem do usług nie jest obsługiwane.

Włącz Service Networking API dla swojego projektu w konsoli Google Cloud. Podczas włączania interfejsu API może być konieczne odświeżenie strony konsoli, aby potwierdzić, że interfejs API został włączony.

Tworzenie przydziału adresów IP

Aby określić zakres adresów i długość prefiksu (maskę podsieci), użyj flag addresses i prefix-length. 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 przydział adresów 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

W Cloud Shell sprawdź 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, czyli Looker Cloud Core. Połączenie prywatne nawiązuje połączenie równorzędne sieci VPC między Twoją siecią VPC a siecią producenta usługi po utworzeniu instancji Lookera.

Połączenia prywatne to relacja 1:1 między siecią VPC a producentem usług. Jeśli jeden producent usługi oferuje wiele usług, potrzebujesz tylko jednego połączenia prywatnego dla wszystkich usług tego producenta.

Jeśli łączysz się z wieloma producentami usług, użyj unikalnej alokacji dla każdego z nich. Dzięki temu możesz zarządzać ustawieniami sieci, takimi jak trasy i reguły zapory sieciowej, dla każdego producenta usług.

W Cloud Shell utwórz połączenie prywatne i zanotuj 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.

W Cloud Shell sprawdź, czy operacja się powiodł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 interfejs Looker API w projekcie w konsoli Google Cloud. Podczas włączania interfejsu API może być konieczne odświeżenie strony konsoli, aby potwierdzić, że interfejs API został włączony.

Skonfiguruj klienta OAuth, aby uwierzytelniać się i uzyskiwać dostęp do instancji.

W następnej sekcji musisz użyć identyfikatora klienta OAuth i tajnego klucza, aby utworzyć instancję Lookera.

Autoryzowane źródła JavaScript i identyfikatory URI przekierowania nie są wymagane.

103601bca0b6ebe8.png

W Cloud Console utwórz instancję na podstawie podanych zrzutów ekranu.

Otwórz LOOKER → UTWÓRZ INSTANCJĘ.

Wypełnij pola wcześniej utworzonym identyfikatorem klienta OAuth i tajnym kluczem.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

Kliknij UTWÓRZ.

Podczas tworzenia instancji nastąpi przekierowanie na stronę Instancje w konsoli. Aby wyświetlić stan nowej instancji, konieczne może być odświeżenie strony. Aktywność związaną z tworzeniem instancji możesz też sprawdzić, 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. Aktualizowanie identyfikatora klienta OAuth 2.0

W następnej sekcji musisz zaktualizować utworzony wcześniej identyfikator klienta OAuth Autoryzowany identyfikator URI przekierowania, dodając do adresu URL instancji ciąg /oauth2callback.

Po zakończeniu tego procesu możesz użyć adresu URL instancji, aby zalogować się w interfejsie Lookera.

W konsoli Cloud Console kliknij INTERFEJSY API I USŁUGI → DANE LOGOWANIA.

Wybierz identyfikator klienta OAuth 2.0 i zaktualizuj adres URL instancji (przykład poniżej):

793c5b82ec34fb1f.png

7. Sprawdzanie dostępu do Lookera

W Cloud Console otwórz Lookera i wybierz adres URL instancji, który otworzy interfejs Lookera.

9d132a67c532279e.png

Po uruchomieniu wyświetli się strona docelowa, jak na zrzucie ekranu poniżej, potwierdzająca dostęp do Looker Cloud Core.

b77055fd674f8a69.png

8. Połączenia hybrydowe

W sekcji poniżej utworzysz router Cloud Router, który umożliwi Ci dynamiczną wymianę tras między Twoim prywatnym środowiskiem wirtualnym w chmurze (VPC) a siecią równorzędną za pomocą protokołu BGP.

Router Cloud Router może skonfigurować sesję BGP w tunelu 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 wdrożysz sieć VPN o wysokiej dostępności między sieciami analytics-vpc i on-prem-vpc, aby zademonstrować prywatne połączenie z Lookerem.

Utwórz bramę sieci VPN o wysokiej dostępności dla sieci analytics-vpc.

Podczas tworzenia każdej bramy automatycznie przydzielane 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 analytics-vpn-gw \
   --network=analytics-vpc\
   --region=us-central1

Utwórz bramę sieci VPN o wysokiej dostępności dla sieci on-prem-vpc.

Podczas tworzenia każdej bramy automatycznie przydzielane 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 bramy sieci VPN o wysokiej dostępności

W konsoli kliknij POŁĄCZENIA HYBRYDOWE → VPN → BRAMY CLOUD VPN.

a3973b2bbb832bae.png

Utwórz router Cloud Router dla sieci analytics-vpc.

W Cloud Shell utwórz router Cloud Router w regionie us-central1.

gcloud compute routers create analytics-cr-us-central1 \
   --region=us-central1 \
   --network=analytics-vpc\
   --asn=65001

Utwórz router Cloud Router dla sieci lokalnej VPC

W Cloud Shell utwórz router Cloud Router 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 sieci analytics-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 tunnel0:

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

Utwórz tunel VPN1

W Cloud Shell utwórz tunel1:

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

Utwórz tunele VPN dla sieci lokalnej-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 tunnel0:

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

Utwórz tunel 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

Sprawdzanie tworzenia tunelu VPN

W konsoli przejdź do sekcji POŁĄCZENIA HYBRYDOWE → VPN → TUNELE VPN W CHMURZE.

61c09b3d3102149d.png

9. Ustanawianie sąsiadów BGP

Tworzenie sesji BGP

W tej sekcji skonfigurujesz interfejsy Cloud Router i peery w sieci BGP.

Utwórz interfejs BGP i połączenie równorzędne dla sieci 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 węzeł 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 węzeł 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

Tworzenie interfejsu BGP i połączenia równorzędnego dla sieci on-prem-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 węzeł 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 węzeł 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

Aby wyświetlić szczegóły tunelu VPN, kliknij POŁĄCZENIE HYBRYDOWE → VPN.

ddd4a8f851d44fd6.png

Weryfikowanie zapamiętanych tras analytics-vpc przez sieć VPN o wysokiej dostępności

Tunele sieci VPN o wysokiej dostępności i sesje protokołu BGP są ustanowione, więc trasy z sieci on-prem-vpc są zapamiętywane z sieci analytics-vpc. W konsoli otwórz Sieć VPC → Sieci VPC → analytics-vpc → TRASY → REGION → us-central1 → WYŚWIETL.

Zauważ, że sieć analytics-vpc nauczyła się tras z lokalnej bazy danych on-prem-vpc-database-subnet-us-central1 172.16.10.0/27.

57c7898390db4bcb.png

Sprawdź, czy sieć lokalna VPC nie nauczyła się tras przez sieć VPN o wysokiej dostępności.

Sieć analytics-vpc nie ma podsieci, więc router Cloud Router nie będzie rozgłaszać żadnych podsieci w sieci lokalnej on-prem-vpc . W konsoli wybierz Sieć VPC → Sieci VPC → on-prem-vpc → TRASY → REGION → us-central1 → WYŚWIETL.

5b007e46a7c7026.png

10. Rozgłaszanie podsieci Lookera w sieci lokalnej

Podsieć prywatnego dostępu do usług (PSA) Lookera nie jest automatycznie reklamowana przez router w chmurze analytics-cr-us-central1, ponieważ jest przypisana do PSA, a nie do sieci VPC.

Musisz utworzyć niestandardowe rozgłaszanie tras z regionu 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 obciążenia do uzyskiwania dostępu do Lookera.

W konsoli kliknij POŁĄCZENIA HYBRYDOWE → ROUTERY W CHMURZE → analytics-cr-us-central1, a następnie wybierz EDYTUJ.

W sekcji Reklamowane trasy wybierz opcję Utwórz trasy niestandardowe, zaktualizuj pola na podstawie poniższego przykładu, kliknij GOTOWE, a następnie ZAPISZ.

87f95ee3d1cd8521.png

11. Sprawdź, czy sieć VPC w środowisku lokalnym nauczyła się podsieci Lookera.

Sieć on-prem-vpc będzie teraz mieć dostęp do podsieci PSA Lookera, ponieważ została ona rozgłoszona z sieci analytics-cr-us-central1 jako niestandardowe rozgłaszanie trasy.

W konsoli wybierz SIEĆ VPC → SIECI VPC → lokalna sieć VPC → TRASY → REGION → us-central1 → WYŚWIETL.

Sprawdź trasy Lookera rozgłaszane z sieci analytics-vpc:

a987a76fd57ddedd.png

12. Sprawdzanie bieżącego połączenia równorzędnego VPC

Połączenie między chmurą Lookera Core a siecią analytics-vpc odbywa się za pomocą połączenia równorzędnego VPC, które umożliwia wymianę niestandardowych tras uzyskanych za pomocą protokołu BGP. W samouczku sieć analytics-vpc musi opublikować w Lookerze trasy poznane przez sieć on-prem-vpc. Aby włączyć tę funkcję, równorzędne połączenia sieci VPC wymagają aktualizacji umożliwiającej eksportowanie niestandardowych tras.

Sprawdź bieżące zaimportowane i wyeksportowane trasy.

Otwórz SIEĆ VPC → POŁĄCZENIE SIECI VPC → servicenetworking-googleapis-com.

f6d9395712934cd8.png

Na zrzucie ekranu poniżej widać, że projekt analytics-vpc importuje projekt psa-range-looker z zarządzanej przez Google sieci VPC z ustanowioną komunikacją równorzędną, servicesnetworking.

86a0e8c3534c6986.png

Wybierz WYEKSPORTOWANE TRASY. Nie ma żadnych tras wyeksportowanych do równorzędnej sieci VPC, ponieważ: 1) podsieci nie są skonfigurowane w sieci analytics-vpc; 2) nie wybrano opcji Eksportuj trasy niestandardowe.

a52de427fa73fb22.png

13. Aktualizowanie połączenia równorzędnego VPC

Otwórz SIEĆ VPC → POŁĄCZENIE SIECI VPC → servicenetworking-googleapis-com → EDYTUJ.

Kliknij EKSPORTUJ TRASY NIESTANDARDOWE → ZAPISZ.

a2309e4c3a7cee80.png

14. Sprawdzanie zaktualizowanego połączenia równorzędnego VPC

Sprawdź wyeksportowane trasy.

Otwórz SIEĆ VPC → POŁĄCZENIE SIECI VPC → servicenetworking-googleapis-com.

Po wybraniu opcji EXPORTED ROUTES (Wyeksportowane trasy) zobaczysz, że trasy on-prem-vpc (podsieć bazy danych 172.16.10.0/27) są eksportowane do sieci Peered VPC, która hostuje Lookera w sieci analytics-vpc.

47e953268d78a469.png

15. Tworzenie bazy danych PostgreSQL w Lookerze

W następnej sekcji połączysz się przez SSH z maszyną wirtualną postgres-database za pomocą Cloud Shell.

W Cloud Shell połącz się przez SSH z instancją bazy danych postgres.

 gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"

W systemie operacyjnym znajdź i zanotuj adres IP (ens4) instancji bazy danych postgres.

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

Zaloguj się w systemie operacyjnym w postgresql.

sudo -u postgres psql postgres

Wpisz hasło w systemie operacyjnym.

\password postgres

W systemie operacyjnym ustaw hasło postgres (wpisz to samo hasło dwukrotnie).

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 sekcji poniżej wstaw adres IP instancji postgres-database i podsieć prywatnego dostępu do Google Looker (192.168.0.0/22) do pliku pg_hba.conf w sekcji IPv4 local connections (lokalne połączenia IPv4) zgodnie z poniższym zrzutem ekranu:

178364a8ee9b6233.png

sudo nano /etc/postgresql/15/main/pg_hba.conf

W sekcji poniżej odkomentuj plik postgresql.conf, aby nasłuchiwać wszystkich adresów IP „*' zgodnie ze zrzutem ekranu poniżej:

sudo nano /etc/postgresql/15/main/postgresql.conf

Przed:

aad52092c0a9408.png

Po:

7e80b916d29e097c.png

W systemie operacyjnym ponownie uruchom usługę postgresql.

sudo service postgresql restart

W systemie operacyjnym sprawdź, czy stan postgresql jest aktywny.

sudo service postgresql status

Przykład:

W systemie operacyjnym sprawdź, czy stan postgresql jest aktywny.

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 PostgreSQL

W następnej sekcji utworzysz bazę danych PostgreSQL o nazwie postgres_looker i schemat looker_schema, które będą służyć do weryfikowania połączenia Lookera z lokalną bazą danych.

Zaloguj się w systemie operacyjnym w bazie danych 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 użytkownika Looker z hasłem Looker.

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 looker-schema i zamknij go, aby wrócić do wiersza poleceń 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, aby wrócić do Cloud Shell.

\q
exit

17. Tworzenie zapory sieciowej w sieci VPC w środowisku lokalnym

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ą on-prem-vpc.

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. Tworzenie prywatnego DNS w sieci VPC analytics-vpc

Chociaż Looker jest wdrażany w sieci VPC zarządzanej przez Google, dostęp do prywatnego DNS analytics-vpc jest obsługiwany przez połączenie równorzędne z siecią usług.

W następnej sekcji utworzysz w sieci analytics-vpc prywatną strefę DNS zawierającą rekord A z pełną i jednoznaczną nazwą domeny instancji postgres-database (postgres.analytics.com)) i adresem 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 znajdź adres IP instancji postgres-database.

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 skonfiguruj połączenie równorzędne dns-suffix analytics.com z siecią usług, 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. Integrowanie Lookera z bazą danych Postgres

W następnej sekcji użyjesz Cloud Console, aby utworzyć połączenie z bazą danych z instancją bazy danych postgres-database na serwerze lokalnym.

W Cloud Console otwórz Lookera i wybierz adres URL instancji, który otworzy interfejs Lookera.

9d132a67c532279e.png

Po uruchomieniu wyświetli się strona docelowa widoczna na zrzucie ekranu poniżej.

b77055fd674f8a69.png

Otwórz ADMINISTRATOR → BAZA DANYCH → POŁĄCZENIA i kliknij DODAJ POŁĄCZENIE.

Wypełnij szczegóły połączenia zgodnie ze zrzutem ekranu poniżej i kliknij POŁĄCZ.

c8cca15252c2020d.png

Połączenie zostało nawiązane

3e51b7e2cc62fb45.png

20. Sprawdzanie łączności z Lookerem

W następnej sekcji dowiesz się, jak sprawdzić połączenie Lookera z bazą danych postgres w sieci VPC on-prem za pomocą działania „test” w Lookerze i narzędzia TCPDUMP.

Jeśli sesja wygasła, zaloguj się w Cloud Shell w bazie danych postgres.

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

Otwórz kolejno Połączenie z bazą danych ADMINISTRATOR → BAZA DANYCH → POŁĄCZENIA → Wybierz → Testuj.

Po wybraniu opcji Test Looker połączy się z bazą danych postgres, jak pokazano poniżej:

ef25b837b6a41fe.png

Wróć do terminala systemu operacyjnego i sprawdź, czy narzędzie TCPDUMP wykryło, że narzędzie psc-range-looker łączy się z lokalną instancją bazy danych postgres.

Dodaj notatkę, że każdy adres IP z zakresu PSA będzie widoczny w Lookerze.

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 zaleceń dotyczących bezpieczeństwa i sprawdzonych metod związanych z zabezpieczaniem Lookera i bazy danych Postgres. Możesz w tym celu korzystać z:

  • Skonfigurowanie konta bazy danych z najmniejszymi uprawnieniami, które nadal umożliwiają Looker wykonywanie potrzebnych funkcji.
  • Dane w ruchu między klientem a interfejsem Lookera oraz między Lookerem a bazą danych są szyfrowane przy użyciu protokołu TLS 1.2 lub nowszego.
  • Dane w spoczynku są domyślnie szyfrowane. Klienci mogą 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 w Lookerze – administratorzy Lookera mogą kontrolować, co użytkownik lub grupa użytkowników może zobaczyć i zrobić w Lookerze, przyznając dostęp do treści, dostęp do danych i dostęp do funkcji. Te opcje umożliwiają administratorowi Lookera zdefiniowanie konkretnych ról, które obejmują model i zbiór uprawnień, oraz utworzenie szczegółowej kontroli dostępu do danych.
  • Looker obsługuje zarówno logi kontrolne, jak i logi dostępu do danych, które rejestrują, kto, co, gdzie i kiedy zrobił. Logi kontrolne są domyślnie włączone, a logi dostępu do danych wymagają wyraźnego włączenia.
  • Obecnie Ustawienia usługi VPC obsługują instancje Enterprise i Embed skonfigurowane tylko z prywatnym adresem IP.

22. Czyszczenie danych

Usuń instancję Looker Cloud Core. W tym celu przejdź do:

LOOKER → looker-tutorial → DELETE

e5a2e3af9e7ffd40.png

W Cloud Shell usuń 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ć połączenie Lookera za pomocą sieci hybrydowej, która umożliwia komunikację danych w środowiskach lokalnych i wielochmurowych.

Udało Ci się też pomyślnie przetestować połączenie Lookera Cloud Core z bazą danych postgres za pomocą narzędzia „Test” w Lookerze i narzędzia TCPDUMP w instancji bazy danych postgres.

Cosmopup uważa, że samouczki są świetne!!

e6d3675ca7c6911f.jpeg

Więcej informacji i filmy

Dokumentacja