Internetowa grupa punktów końcowych sieci SSH w usłudze Looker w usłudze PSC południowej

1. Wprowadzenie

W tym ćwiczeniu wykonasz połączenie SSH w kierunku południowym z GitHubem za pomocą wewnętrznego systemu równoważenia obciążenia serwera proxy TCP i grupy punktów końcowych sieci internetowej wywoływanej z usługi PSC Looker jako konsumenta usługi.

Private Service Connect to funkcja sieci Google Cloud, która umożliwia konsumentom prywatny dostęp do usług zarządzanych z poziomu sieci VPC. Podobnie umożliwia producentom usług zarządzanych hostowanie tych usług we własnych, oddzielnych sieciach VPC i oferowanie prywatnego połączenia z klientami. Na przykład gdy używasz Private Service Connect do uzyskiwania dostępu do Lookera, jesteś konsumentem usługi, a Google jest producentem usług, co widać na ilustracji 1.

Rysunek 1.

145ea4672c3a3b14.png

Dostęp wychodzący, zwany też odwróconym PSC, umożliwia konsumentowi utworzenie opublikowanej usługi jako producenta, aby umożliwić Lookerowi dostęp do punktów końcowych lokalnie, w sieci VPC, do usług zarządzanych i internetu. Połączenia wychodzące można wdrażać w dowolnym regionie, niezależnie od tego, gdzie jest wdrożona usługa PSC Looker, jak pokazano na rysunku 2.

Rysunek 2.

259493afd914f68b.png

Czego się nauczysz

  • Wymagania związane z siecią
  • Tworzenie usługi producenta Private Service Connect
  • Tworzenie punktu końcowego Private Service Connect w Lookerze
  • Nawiązywanie połączenia z GitHubem z Lookera za pomocą funkcji Test Connection

Czego potrzebujesz

def88091b42bfe4d.png

2. Co utworzysz

Utworzysz sieć producenta, looker-psc-demo, aby wdrożyć wewnętrzny system równoważenia obciążenia proxy TCP i internetową grupę NEG opublikowaną jako usługa za pomocą usługi Private Service Connect (PSC). Po opublikowaniu wykonaj te czynności, aby sprawdzić dostęp do usługi Producer:

  • Utwórz w Looker punkt końcowy PSC powiązany z przyłączem usługi producenta.
  • Użyj konsoli Looker, aby utworzyć nowy projekt i przetestować łączność SSH z GitHub.com, korzystając z procedury Łączenie z Git za pomocą SSH.

3. Wymagania związane z siecią

Poniżej znajdziesz zestawienie wymagań sieciowych dla sieci producenta. Konsumentem w tym Codelabs jest instancja Looker PSC.

Sieć producentów

Komponenty

Opis

VPC (looker-psc-demo)

Sieć VPC w trybie niestandardowym

Podsieć NAT PSC

Pakiety z sieci VPC klienta są tłumaczone za pomocą źródłowego NAT (SNAT), dzięki czemu ich pierwotne źródłowe adresy IP są konwertowane na źródłowe adresy IP z podsieci NAT w sieci VPC producenta.

Podsieć reguły przekierowania PSC

Służy do przydzielania adresu IP regionalnemu wewnętrznemu systemowi 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

Każdy serwer proxy systemu równoważenia obciążenia ma 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.

Internetowa grupa punktów końcowych sieci

Zasób używany do definiowania zewnętrznego backendu systemu równoważenia obciążenia. Punkt końcowy nie może być osiągalny tylko przez Cloud VPN lub Cloud Interconnect.

Usługa backendu

Usługa backendu pełni funkcję pomostu między systemem równoważenia obciążenia a zasobami backendu. W samouczku usługa backendu jest powiązana z internetową grupą punktów końcowych sieci.

Cloud Router

Cloud NAT korzysta z routerów Cloud Router w zakresie funkcji platformy sterującej, ale nie do zarządzania sesjami BGP.

Cloud NAT

Regionalna internetowa grupa punktów końcowych sieci korzysta z Cloud NAT w przypadku ruchu wychodzącego do internetu.

4. Topologia ćwiczeń z programowania

dfa4dd1d681a66da.png

5. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest 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 ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje też trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym 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:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.

6. Zanim zaczniesz

Włącz interfejsy API

W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
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

Podsieć PSC będzie powiązana z przyłączem usługi PSC na potrzeby translacji adresów sieciowych.

W Cloud Shell utwórz podsieć NAT PSC:

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ą podsieć tylko-proxy 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

Utwórz bramę Public NAT

Brama NAT jest używana przez regionalny wewnętrzny system równoważenia obciążenia TCP serwera proxy do wychodzącego ruchu internetowego z opcją konfiguracji –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, dlatego ta sama brama NAT nie będzie obsługiwać wychodzącego ruchu internetowego GCE/GKE. Wdróż dodatkową bramę NAT z argumentem –endpoint-types=ENDPOINT_TYPE_VM na potrzeby wychodzącego ruchu internetowego GCE/GKE.

W Cloud Shell utwórz router Cloud Router:

gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region

W Cloud Shell utwórz bramę Cloud NAT, która umożliwia ruch wychodzący z internetu dla systemu równoważenia obciążenia serwera proxy TCP:

gcloud compute routers nats create looker-psc-demo-natgw \
  --router=looker-psc-demo-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

Rezerwowanie adresu IP systemu równoważenia obciążenia

W Cloud Shell zarezerwuj wewnętrzny adres IP dla systemu równoważenia obciążenia:

gcloud compute addresses create internet-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

W Cloud Shell wyświetl zarezerwowany adres IP.

gcloud compute addresses describe internet-neg-lb-ip \
  --region=$region | grep -i address:

Przykład:

user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Konfigurowanie internetowej grupy punktów końcowych sieci

Utwórz internetową grupę NEG i ustaw wartość –network-endpoint-type na internet-fqdn-port (nazwa hosta i port, pod którym można uzyskać dostęp do zewnętrznego backendu).

W Cloud Shell utwórz internetową grupę NEG używaną w przypadku github.com.

gcloud compute network-endpoint-groups create github-internet-neg-ssh \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

W Cloud Shell zaktualizuj internetową grupę NEG github-internet-neg-ssh, dodając do niej pełną i jednoznaczną nazwę domeny github.com i port 22.

gcloud compute network-endpoint-groups update github-internet-neg-ssh \
    --add-endpoint="fqdn=github.com,port=22" \
    --region=$region

Tworzenie zasad 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

Ta reguła zapory sieciowej zezwala na ruch z zakresu podsieci NAT usługi PSC 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 wykonaj te czynności:

gcloud compute backend-services create producer-backend-svc  --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=github-internet-neg-ssh --network-endpoint-group-region=$region --region=$region

W Cloud Shell utwórz docelowy serwer proxy TCP, aby kierować żądania do usługi backendu:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

W przypadku poniższej składni utwórz regułę przekierowania (wewnętrzny system równoważenia obciążenia serwera proxy TCP).

W Cloud Shell wykonaj te czynności:

gcloud compute forwarding-rules create producer-github-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=internet-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=22

Utwórz załącznik usługi

W Cloud Shell utwórz połączenie z usługą github-svc-attachment-ssh:

gcloud compute service-attachments create github-svc-attachment-ssh --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Następnie uzyskaj i zanotuj załącznik usługi wymieniony w identyfikatorze URI selfLink zaczynającym się od projects, aby skonfigurować punkt końcowy PSC w Lookerze.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-ssh

W Cloud Shell wykonaj te czynności:

gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region

Przykładowe oczekiwane dane wyjściowe

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '7557641709467614900'
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/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr

W konsoli Cloud otwórz:

Usługi sieciowe → Private Service Connect → Opublikowane usługi

30b1a280966b1f06.png

4eafe698193f5f44.png

9. Nawiązywanie połączenia z punktem końcowym PSC w Lookerze

W następnej sekcji powiążesz przyłącze usługi producenta z usługą PSC Looker Core za pomocą flagi –psc-service-attachment w Cloud Shell dla pojedynczej domeny.

W Cloud Shell utwórz powiązanie PSC, aktualizując te parametry, aby pasowały do Twojego środowiska:

  • INSTANCE_NAME: nazwa instancji Lookera (podstawowej usługi Google Cloud).
  • DOMAIN_1: githubssh.com
  • SERVICE_ATTACHMENT_1: identyfikator URI zarejestrowany podczas opisywania przyłącza usługi, github-svc-attachment-ssh.
  • REGION: region, w którym jest hostowana 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=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region

W Cloud Shell sprawdź, czy stan połączenia serviceAttachments to „ACCEPTED”. Zastąp ciąg INSTANCE_NAME nazwą instancji Looker PSC.

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": "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": "githubssh.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-08-31T20:53:04.824018122Z"
}

Sprawdzanie poprawności punktu końcowego PSC w Cloud Console

W konsoli Cloud możesz sprawdzić połączenie PSC.

W konsoli Cloud otwórz:

Looker → Instancja Lookera → Szczegóły

2d4684d722d31e4b.png

db670bb008ea3fc4.png

10. Testowanie połączenia z GitHubem

W kolejnych krokach użyjesz konsoli Looker do utworzenia projektu, aby sprawdzić łączność SSH z GitHub.com, aktualizując domenę github.com na githubssh.com w interfejsie Lookera. Ta czynność jest wymagana tylko w przypadku połączeń SSH z GitHubem.

11. Utwórz nowy projekt

Włączanie trybu deweloperskiego

W konsoli Looker otwórz:

Włącz tryb programowania (w lewym dolnym rogu strony). Po wybraniu tej opcji wyświetli się baner „Jesteś w trybie programowania”.

70c9ded749decfbe.png

Tworzenie nowego projektu

W konsoli Cloud otwórz:

Programowanie → Projekty

e8ae11e0392a776d.png

Wybierz Nowy projekt LookML

65a3c2573e97e1e9.png

Podaj nazwę projektu, wybierz Pusty projekt, a następnie kliknij Utwórz projekt.

dbb890960291aa84.png

Kliknij Skonfiguruj Git.

42f5e51ce70642ad.png

Konfigurowanie Gita

3962a1fe7ac8da77.png

Po kliknięciu przycisku Dalej pojawi się prośba o zweryfikowanie adresu URL repozytorium i usługi hostingu Git.

743e5d963cfe6f82.png

Dodaj klucz wdrożenia do repozytorium GitHub. Upewnij się, że masz uprawnienia do zapisu. Po wprowadzeniu zmian kliknij Przetestuj i sfinalizuj konfigurację.

4894e0af6421802e.png

Wybierz Działania Git

e87931dbf7e265f3.png

Wybierz Testuj połączenie z Git

73d90adf267120af.png

Sprawdzanie testu połączenia z Git

f69bc63b9c595aa1.png

12. Czyszczenie danych

Usuwanie komponentów laboratorium z jednego terminala Cloud Shell

gcloud compute service-attachments delete github-svc-attachment-ssh --region=$region -q

gcloud compute forwarding-rules delete producer-github-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 looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q

gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg-ssh --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q

gcloud compute networks delete looker-psc-demo -q

13. Gratulacje

Gratulacje. Udało Ci się skonfigurować i zweryfikować połączenie z GitHubem za pomocą konsoli Looker opartej na Private Service Connect.

Utworzyliśmy infrastrukturę producenta, dowiedzieliśmy się, jak utworzyć internetową grupę NEG, usługę producenta i punkt końcowy PSC Lookera, które umożliwiają połączenie z usługą producenta.

Cosmopup uważa, że ćwiczenia z programowania są świetne!!

c911c127bffdee57.jpeg

Co dalej?

Sprawdź te ćwiczenia z programowania:

Więcej informacji i filmy

Dokumentacja