1. Wprowadzenie
W ramach tego ćwiczenia w Codelabs wykorzystasz połączenie w kierunku południowym z lokalną bazą danych postgres przez H-VPN z użyciem wewnętrznego systemu równoważenia obciążenia serwera proxy tcp i hybrydowej grupy punktów końcowych sieci wywołanych z PSC Lookera jako konsumenta usługi.
Private Service Connect to funkcja sieci Google Cloud, która umożliwia klientom prywatny dostęp do usług zarządzanych z wewnątrz sieci VPC. Podobnie pozwala producentom usług zarządzanych hostować te usługi we własnych osobnych sieciach VPC i oferować połączenia prywatne dla klientów. Jeśli na przykład używasz Private Service Connect, aby uzyskać dostęp do Lookera, to Ty jesteś konsumentem usługi, a Google jest producentem usługi, jak pokazano na rysunku 1.
Rysunek 1.

Dostęp z południa, zwany też odwrotnym PSC, umożliwia konsumentowi utworzenie opublikowanej usługi jako producenta, aby umożliwić dostęp do punktów końcowych w sieci lokalnej, w VPC, do usług zarządzanych i hybrydowych. Połączenia wychodzące można wdrażać w dowolnym regionie, niezależnie od tego, gdzie wdrożono usługę Looker PSC, jak pokazano na rysunku 2.
Rysunek 2.

Czego się nauczysz
- Wymagania związane z siecią
 - Tworzenie usługi producenta Private Service Connect
 - Utwórz punkt końcowy Private Service Connect w Lookerze
 - Nawiązuj połączenie z lokalną bazą danych postgres z Lookera za pomocą połączenia testowego
 
Czego potrzebujesz
- Projekt Google Cloud z uprawnieniami właściciela
 - Istniejące wystąpienie PSC Lookera
 

2. Co utworzysz
Utworzysz sieć producenta looker-psc-demo, aby wdrożyć wewnętrzny równoważenie obciążenia proxy TCP i hybrydową grupę punktów końcowych NEG opublikowaną jako usługa za pomocą Private Service Connect (PSC). Aby zademonstrować lokalną bazę danych, wdrożysz lokalną sieć VPC połączoną z siecią VPC Looker-psc-demo przy użyciu sieci HA-VPN.
Aby zweryfikować dostęp do usługi Producer, wykonaj te czynności:
- Utwórz punkt końcowy PSC w Lookerze powiązany z przyłączem usługi Producer
 - Sprawdzanie połączenia z lokalną bazą danych postgres za pomocą konsoli Looker
 
3. Wymagania związane z siecią
Poniżej znajdziesz zestawienie wymagań dotyczących sieci dla sieci Producer. konsument w tym ćwiczeniu z programowania to instancja PSC Lookera.
Komponenty  | Opis  | 
VPC (looker-psc-demo)  | Środowisko VPC w trybie niestandardowym  | 
VPC (demonstracja lokalna)  | Środowisko VPC w trybie niestandardowym  | 
PSC NAT Subnet  | Pakiety z sieci VPC klienta są translowane przy użyciu source NAT (SNAT), aby ich pierwotne źródłowe adresy IP zostały przekonwertowane na źródłowe adresy IP z podsieci NAT w sieci VPC producenta.  | 
Reguła przekierowania PSC w podsieci  | Służy do przydzielenia adresu IP dla regionalnego wewnętrznego systemu równoważenia obciążenia TCP serwera proxy.  | 
Podsieć grupy punktów końcowych sieci PSC  | Służy do przydzielania adresu IP grupie punktów końcowych sieci.  | 
Podsieć tylko-proxy  | Do każdego serwera proxy systemu równoważenia obciążenia jest przypisany wewnętrzny adres IP. Pakiety wysyłane z serwera proxy do maszyny wirtualnej lub punktu końcowego backendu mają źródłowy adres IP z podsieci tylko-proxy.  | 
Hybrydowa grupa punktów końcowych sieci  | Usługi lokalne i inne usługi w chmurze są traktowane jak inne backendy Cloud Load Balancing. Główna różnica polega na tym, że do konfigurowania punktów końcowych tych backendów używana jest grupa punktów końcowych sieci z połączeniami hybrydowymi. Punkty końcowe muszą być prawidłowymi kombinacjami adresów IP i portów, do których system równoważenia obciążenia może dotrzeć za pomocą usług hybrydowych, takich jak Cloud VPN lub Cloud Interconnect.  | 
Usługa backendu  | Usługa backendu działa jako pomost między systemem równoważenia obciążenia a zasobami backendu. W tym samouczku usługa backendu jest powiązana z hybrydową grupą punktów końcowych sieci.  | 
Cloud Router  | 
  | 
Sieć VPN o wysokiej dostępności  | Sieć VPN o wysokiej dostępności między sieciami VPC Google Cloud. W tej topologii możesz połączyć 2 sieci VPC Google Cloud, używając bramy sieci VPN o wysokiej dostępności w każdej sieci. Sieci VPC mogą znajdować się w tym samym regionie lub w wielu regionach.  | 
Cloud NAT  | Sieć VPC używana przez demonstracyjną sieć VPC lokalną do wychodzącego ruchu internetowego  | 
4. Topologia ćwiczeń z programowania

5. Konfiguracja i wymagania
Konfiguracja środowiska w samodzielnym tempie
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
 



- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
 - Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie ma znaczenia, jaki to ciąg. W większości laboratoriów z kodem trzeba podać identyfikator projektu (zwykle oznaczony jako 
PROJECT_ID). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować inny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu. - Informacyjnie: istnieje jeszcze 3 wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
 
- Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
 
Uruchom Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w tym ćwiczeniu będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po jego zakończeniu powinno wyświetlić się coś takiego:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie poprawia wydajność sieci i uwierzytelnianie. Wszystkie zadania w ramach tego ćwiczenia z programowania można wykonywać w przeglądarce. Nie musisz niczego instalować.
6. Zanim zaczniesz
Włącz interfejsy API
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
Włącz wszystkie niezbędne usługi:
gcloud services enable compute.googleapis.com
7. Tworzenie sieci VPC producenta
Sieć VPC
W Cloud Shell wykonaj te czynności:
gcloud compute networks create looker-psc-demo --subnet-mode custom
Tworzenie podsieci
Podmiana adresów sieciowych będzie wykonywana przez usługę PSC w ramach przyłącza usługi PSC.
W Cloud Shell utwórz podsieć PSC NAT:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
W Cloud Shell utwórz podsieć reguły przekierowania producenta:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
W Cloud Shell utwórz regionalną podrzędną sieć tylko-proxy dla producenta:
gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24
Zarezerwuj adres IP systemu równoważenia obciążenia
W Cloud Shell zarezerwuj wewnętrzny adres IP dla systemu równoważenia obciążenia:
gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet
W Cloud Shell wyświetl zarezerwowany adres IP.
gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:
Przykładowe dane wyjściowe:
gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2
Konfigurowanie grupy punktów końcowych sieci hybrydowej
Utwórz hybrydową grupę NEG i ustaw parametr –network-endpoint-type na NON_GCP_PRIVATE_IP_PORT.
W Cloud Shell utwórz hybrydową grupę punktów końcowych sieci używaną do uzyskiwania dostępu do lokalnej bazy danych:
gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone
W Cloud Shell zaktualizuj hybrydową grupę punktów końcowych sieci, dodając adres IP:port lokalnej bazy danych: 192.168.10.4 Port 5432 wygenerowany w kolejnym kroku samouczka:
gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone
Utwórz regionalną kontrolę stanu
Utwórz w Cloud Shell kontrolę stanu, która sonduje port 5432 lokalnej bazy danych:
gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432
Tworzenie zasady zapory sieciowej i reguł zapory sieciowej
W Cloud Shell wykonaj te czynności:
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
Poniższa reguła zapory sieciowej zezwala na ruch z zakresu adresów PSC NAT Subnet do wszystkich instancji w sieci.
W Cloud Shell wykonaj te czynności:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. Tworzenie usługi producenta
Tworzenie komponentów systemu równoważenia obciążenia
W Cloud Shell utwórz usługę backendu:
gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region
W Cloud Shell dodaj backend Hybrid NEG do usługi backendu:
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region
W Cloud Shell utwórz docelowy serwer proxy TCP, aby kierować żądania do usługi backendu:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region
Utwórz regułę przekierowania (wewnętrzny system równoważenia obciążenia serwera proxy TCP) za pomocą poniższej składni.
W Cloud Shell wykonaj te czynności:
gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432
Utwórz przyłącze usługi
W Cloud Shell utwórz załącznik usługi onpremdatabase1-svc-attachment:
gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
Następnie uzyskaj i zanotuj przyłącze usługi wymienione w identyfikatorze URI SelfLink, zaczynając od projektów, aby skonfigurować punkt końcowy PSC w narzędziu Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment
W Cloud Shell wykonaj te czynności:
gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region
Przykład oczekiwanego wyniku:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr
W konsoli Cloud przejdź do:
Usługi sieciowe → Private Service Connect → Opublikowane usługi


9. Nawiąż połączenie z punktem końcowym PSC w narzędziu Looker
W następnej sekcji powiążesz załącznik usługi Producers z PSC Looker Core, używając flagi –psc-service-attachment w Cloud Shell dla jednej domeny.
Utwórz w Cloud Shell powiązanie z PSC, aktualizując te parametry tak, aby pasowały do Twojego środowiska:
- INSTANCE_NAME: nazwa instancji Lookera (podstawowej usługi Google Cloud).
 - DOMAIN_1: onprem.database1.com
 - SERVICE_ATTACHMENT_1: identyfikator URI przechwycony podczas tworzenia przyłącza usługi, onpremdatabase1-svc-attachment
 - REGION: region, w którym hostowana jest instancja Lookera (podstawowej usługi Google Cloud).
 
W Cloud Shell wykonaj te czynności:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Przykład:
gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region
W Cloud Shell sprawdź, czy stan połączenia serviceAttachments to „ACCEPTED”, a następnie podaj nazwę instancji PSC Lookera:
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
Przykład:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
Przykład:
{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}
Weryfikowanie punktu końcowego PSC w konsoli Cloud
W konsoli Cloud możesz sprawdzić połączenie PSC
W Cloud Console:
Looker → Instancja Lookera → Szczegóły


Tworzenie lokalnej sieci VPC
Sieć VPC
W Cloud Shell wykonaj te czynności:
gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom
Tworzenie podsieci bazy danych PostgresSQL
W Cloud Shell wykonaj te czynności:
gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region
W Cloud Shell zarezerwuj wewnętrzny adres IPv4 używany dla onprem.database1.com, 192.168.10.4:
gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4
Utwórz router Cloud Router dla VPC demo na potrzeby testów lokalnych
W samouczku dotyczącym instalacji pakietu oprogramowania używany jest Cloud NAT, ponieważ instancja maszyny wirtualnej nie ma zewnętrznego adresu IP.
W Cloud Shell utwórz router Cloud Router używany z Cloud NAT i HA-VPN:
gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002
Utwórz w Cloud Shell bramę NAT:
gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region
Tworzenie testowej instancji bazy danych
Utwórz instancję bazy danych postgres, która posłuży do testowania i sprawdzania połączeń z Lookerem.
W Cloud Shell utwórz instancję:
gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
Tworzenie zasady zapory sieciowej i reguł zapory sieciowej
W Cloud Shell wykonaj te czynności:
gcloud compute network-firewall-policies create on-prem-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy
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 za pomocą IAP.
 - Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP używane przez IAP do przekierowywania TCP.
 
W Cloud Shell wykonaj te czynności:
gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy
Poniższa reguła zapory sieciowej zezwala na ruch z zakresu podsieci tylko-proxy do wszystkich instancji w sieci.
W Cloud Shell wykonaj te czynności:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp
10. Połączenia hybrydowe
W tej sekcji utworzysz router Cloud Router, który umożliwia dynamiczną wymianę tras między Twoim prywatnym środowiskiem wirtualnym w chmurze (VPC) a siecią równorzędną przy użyciu protokołu Border Gateway Protocol (BGP).
Cloud Router może skonfigurować sesję BGP przez tunel Cloud VPN, aby połączyć Twoje sieci. Automatycznie rozpoznaje nowe zakresy adresów IP podsieci i ogłasza je w sieci równorzędnej.
W kolejnych krokach wdrożesz sieć VPN o wysokiej dostępności między środowiskiem VPC looker-psc-demo a środowiskiem VPC on-prem-demo, aby zademonstrować połączenie hybrydowe NEG z bazą danych onprem.database1.com.
Utwórz bramę sieci VPN o wysokiej dostępności dla looker-psc-demo
Podczas tworzenia każdej bramy automatycznie przydzielane są 2 zewnętrzne adresy IPv4, po jednym dla każdego interfejsu bramy.
W Cloud Shell utwórz bramę sieci VPN o wysokiej dostępności:
gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region
Tworzenie GW o wysokiej dostępności na potrzeby lokalnej wersji demonstracyjnej
Podczas tworzenia każdej bramy automatycznie przydzielane są 2 zewnętrzne adresy IPv4, po jednym dla każdego interfejsu bramy.
W Cloud Shell utwórz sieć VPN o wysokiej dostępności:
gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region
Sprawdzanie tworzenia GW o wysokiej dostępności sieci VPN
W konsoli przejdź do HYBRID CONNECTIVITY → VPN → CLOUD VPN GATEWAYS.

Tworzenie routera Cloud Router dla Looker-psc-demo
W Cloud Shell utwórz router Cloud Router:
gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001
Tworzenie tuneli VPN dla Looker-psc-demo
Utworzysz 2 tunele VPN na każdej bramie sieci VPN o wysokiej dostępności.
Utwórz tunel VPN0
Utwórz w Cloud Shell środowisko tunnel0:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0
Utwórz tunel VPN1
W Cloud Shell utwórz tunel1:
gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1
Tworzenie tuneli VPN na potrzeby demonstracji na potrzeby firmy
W każdej bramie sieci VPN o wysokiej dostępności utworzysz 2 tunele VPN.
Utwórz tunel VPN0
Utwórz w Cloud Shell środowisko tunnel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --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 looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1
Sprawdzanie poprawności utworzenia tunelu VPN
W konsoli przejdź do HYBRID CONNECTIVITY → VPN → CLOUD VPN TUNNELS.

11. Ustal sąsiadów BGP
Tworzenie interfejsu BGP i połączenie równorzędne dla Looker-psc-demo
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region
Tworzenie interfejsu BGP i połączenia peeringowego na potrzeby demonstracji na potrzeby lokalnych testów
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region
W Cloud Shell utwórz interfejs BGP:
gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region
W Cloud Shell utwórz peera BGP:
gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region
Wybierz POŁĄCZENIE hybrydowe → VPN, aby wyświetlić szczegóły tunelu VPN.

Weryfikowanie zapamiętanych tras Looker-psc-demo przez sieć VPN o wysokiej dostępności
Teraz, gdy tunele VPN o wysokiej dostępności i sesje BGP są już utworzone, domyślne działanie routera Cloud Router polega na rozgłaszaniu tras podsieci. Wyświetl zapamiętane trasy Looker-psc-demo.
W konsoli wybierz Sieć VPC → Sieci VPC → looker-psc-demo → ROUTES → REGION → VIEW.
Zobacz, jak Looker-psc-demo nauczył się podsieci 192.168.10.0/28 w lokalnej sieci VPC.

Sprawdzanie, czy w lokalnej demonstracji VPC trasy zapamiętane przez sieć VPN o wysokiej dostępności
Ponieważ domyślne działanie routera Cloud Router polega na rozgłaszaniu wszystkich podsieci, tylko podmiana adresu sieciowego jest rozgłaszana przez BGP. Podczas komunikacji z serwerem onprem.database1.com hybrydowa funkcja NEG będzie używać adresu źródłowego w podsieci tylko-proxy.
Zobacz, jak lokalna wersja demo nauczyła się podsieci 10.10.10.0/24 od Looker-psc-demo.
W konsoli wybierz Sieć VPC → Sieci VPC → Lokalna wersja demonstracyjna → TRASY → REGION → WIDOK

12. Tworzenie bazy danych postgres w Lookerze
W następnej sekcji połączysz się przez SSH z maszyną wirtualną postgres-database za pomocą Cloud Shell.
W Cloud Shell wykonaj polecenie ssh do instancji bazy danych postgres**:**
 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
Zidentyfikuj i zanotuj adres IP (ens4) instancji postgres-database w systemie operacyjnym:
ip a
Przykład:
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 noprefixroute 
       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:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/64 scope link 
       valid_lft forever preferred_lft forever
Zaloguj się w postgresql:
sudo -u postgres psql postgres
W systemie operacyjnym wpisz hasło:
\password postgres
W systemie operacyjnym ustaw hasło na postgres (wpisz to samo hasło 2 razy):
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 następnej sekcji wstawisz adres IP instancji bazy danych postgres (192.168.10.4) i podsieć tylko dla serwera proxy (10.10.10.0/24) do pliku pg_hba.conf w sekcji połączeń lokalnych IPv4.
sudo nano /etc/postgresql/15/main/pg_hba.conf
Poniższy zrzut ekranu przedstawia zrealizowaną aktualizację: 
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:

W systemie operacyjnym ponownie uruchom usługę postgresql:
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 Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms
Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
13. 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ą.
W systemie operacyjnym zaloguj się do postgres:
sudo -u postgres psql postgres
Utwórz bazę danych w systemie operacyjnym:
create database postgres_looker;
Wymień bazę danych w systemie operacyjnym:
\l
W systemie operacyjnym utwórz użytkownika postgres_looker z hasłem postgreslooker:
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 wyjdź do wiersza poleceń Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Exit from the OS, returning you to cloud shell:
\q
Przykład:
user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
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 table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q
14. Integracja Lookera z bazą danych Postgres
W następnej sekcji użyjesz konsoli Looker do utworzenia połączenia z bazą danych z poziomu instancji bazy danych postgres na komputerze lokalnym.
Kliknij 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.

Połączenie zostało skonfigurowane

15. Sprawdzanie połączeń 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-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"
W systemie operacyjnym utwórz filtr TCPDUMP z podsiecią tylko-proxy 10.10.10.0/24.
sudo tcpdump -i any net 10.10.10.0/24 -nn
Otwórz połączenie danych ADMIN → BAZA DANYCH → POŁĄCZENIA → baza danych postgres → Test.
Po wybraniu testu Looker połączy się z bazą danych postgres w następujący sposób:

Czyszczenie danych
Usuń komponenty modułu z jednego terminala Cloud Shell
gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q
gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q
gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q
gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q
gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q
gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q
gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q
gcloud compute instances delete postgres-database --zone=$zone -q
gcloud compute addresses delete on-prem-database1-ip --region=$region -q
gcloud compute networks subnets delete database-subnet --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q
gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q
gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q
gcloud compute networks delete on-prem-demo -q
gcloud compute networks delete looker-psc-demo -q
16. Gratulacje
Gratulacje! Udało Ci się skonfigurować i potwierdzić połączenie z bazą danych na komputerze lokalnym przez sieć VPN o wysokiej dostępności za pomocą konsoli Looker Console korzystającej z funkcji Private Service Connect.
Utworzono infrastrukturę producenta i poznano sposób tworzenia hybrydowego punktu końcowego NEG, usługi producenta i punktu końcowego PSC Looker, które umożliwiają nawiązywanie połączenia z usługą producenta.
Cosmopup uważa, że ćwiczenia z programowania są świetne!

Co dalej?
Zapoznaj się z tymi ćwiczeniami z programowania
- Używanie usługi Private Service Connect do publikowania i używania usług
 - Łączenie z usługami lokalnymi za pomocą Hybrid Networking przy użyciu Private Service Connect i wewnętrznego systemu równoważenia obciążenia serwera proxy TCP
 - Dostęp do wszystkich opublikowanych modułów z programowania usługi Private Service Connect
 
Więcej informacji i filmy
Dokumenty referencyjne
- Konfigurowanie regionalnego wewnętrznego sieciowego systemu równoważenia obciążenia serwera proxy z połączeniami hybrydowymi
 - Omówienie Cloud NAT
 - Tworzenie instancji usługi Private Service Connect Lookera (podstawowej usługi Google Cloud)
 - Jak opublikować usługę za pomocą Private Service Connect
 - Omówienie Cloud VPN