Private Service Connect z automatyczną konfiguracją DNS

1. Wprowadzenie

Usługa Private Service Connect z automatyczną konfiguracją DNS korzysta z Service Directory i Cloud DNS, aby automatycznie tworzyć rekordy DNS zaprogramowane z adresami IP punktów końcowych Private Service Connect konsumenta.

Co utworzysz

W tym ćwiczeniu utworzysz kompleksową architekturę Private Service Connect, która ilustruje użycie automatycznego DNS, jak pokazano na rysunku 1.

Automatyczne DNS jest możliwe dzięki tym funkcjom:

  1. Załącznik usługi producenta generuje automatyczny DNS, podając posiadaną domenę publiczną z flagą „–domain-names” podczas tworzenia załącznika usługi Private Service Connect.
  2. Konsument definiuje nazwę punktu końcowego.
  3. Automatyczny DNS tworzy zarówno strefę DNS goog-psc-default-us-central1, jak i nazwę DNS cosmopup.net, a także wpis w Service Directory składający się z nazwy punktu końcowego konsumenta.

Zaleta automatycznego DNS jest widoczna na ilustracji (4), gdzie użytkownik może komunikować się z punktem końcowym usługi za pomocą DNS, FQDN stargazer.cosmopup.net.

Rysunek 1.

5e26a358454d1336.png

Czego się nauczysz

  • Jak utworzyć wewnętrzny system równoważenia obciążenia HTTP(S)
  • Tworzenie przyłącza usługi z automatycznym DNS
  • Jak utworzyć usługę producenta Private Service Connect
  • Jak uzyskać dostęp do punktu końcowego klienta za pomocą automatycznego DNS

Czego potrzebujesz

  • Projekt Google Cloud
  • domena publiczna, której jesteś właścicielem;

2. Zanim zaczniesz

Aktualizowanie projektu, aby obsługiwał ćwiczenia z programowania

To ćwiczenie wykorzystuje $zmienne, 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]
projectname=YOUR-PROJECT-NAME
echo $projectname

3. Konfiguracja aplikacji Producer

Tworzenie sieci VPC producenta

W Cloud Shell wykonaj te czynności:

gcloud compute networks create producer-vpc --project=$projectname --subnet-mode=custom

Utwórz podsieci producenta

W Cloud Shell wykonaj te czynności:

gcloud compute networks subnets create gce-subnet --project=$projectname --range=172.16.20.0/28 --network=producer-vpc --region=us-central1

W Cloud Shell wykonaj te czynności:

gcloud compute networks subnets create load-balancer-subnet --project=$projectname --range=172.16.10.0/28 --network=producer-vpc --region=us-central1

Zarezerwuj adres IP dla wewnętrznego systemu równoważenia obciążenia

W Cloud Shell wykonaj te czynności:

gcloud compute addresses create lb-ip \
    --region=us-central1 \
    --subnet=load-balancer-subnet \
    --purpose=GCE_ENDPOINT

Wyświetlanie przydzielonego adresu IP

Aby wyświetlić przydzielony adres IP, użyj polecenia compute addresses describe.

gcloud compute addresses describe lb-ip  --region=us-central1 | grep address:

Utwórz regionalne podsieci proxy

Przydzielanie serwerów proxy odbywa się na poziomie sieci VPC, a nie systemu równoważenia obciążenia. W każdym regionie sieci wirtualnej (VPC), w którym używasz systemów równoważenia obciążenia opartych na Envoy, musisz utworzyć podsieć tylko-proxy . Jeśli w tym samym regionie i tej samej sieci VPC wdrożysz kilka systemów równoważenia obciążenia, będą one współużytkować tę samą podsieć tylko-proxy na potrzeby równoważenia obciążenia.

  1. Klient nawiązuje połączenie z adresem IP i portem reguły przekierowania systemu równoważenia obciążenia.
  2. Każde proxy nasłuchuje na adresie IP i porcie określonym przez regułę przekierowania odpowiedniego systemu równoważenia obciążenia. Jeden z serwerów proxy odbiera i zamyka połączenie sieciowe klienta.
  3. Serwer proxy nawiązuje połączenie z odpowiednią maszyną wirtualną backendu określoną przez mapę URL i usługi backendu systemu równoważenia obciążenia.

Podsieci tylko-proxy musisz utworzyć niezależnie od tego, czy Twoja sieć VPC działa w trybie automatycznym czy niestandardowym. Podsieć tylko dla proxy musi zawierać co najmniej 64 adresy IP. Odpowiada to długości prefiksu /26 lub krótszej. Zalecany rozmiar podsieci to /23 (512 adresów tylko-proxy).

W Cloud Shell wykonaj te czynności:

gcloud compute networks subnets create proxy-subnet-us-central \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=us-central1 \
  --network=producer-vpc \
  --range=172.16.0.0/23

Tworzenie podsieci NAT Private Service Connect

Utwórz co najmniej jedną dedykowaną podsieć do używania z usługą Private Service Connect. Jeśli do publikowania usługi używasz konsoli Google Cloud, możesz utworzyć podsieci w trakcie tej procedury. Utwórz podsieć w tym samym regionie co system równoważenia obciążenia usługi. Nie możesz przekonwertować zwykłej podsieci na podsieć Private Service Connect.

W Cloud Shell wykonaj te czynności:

gcloud compute networks subnets create psc-nat-subnet \
    --project $projectname \
    --network producer-vpc \
    --region us-central1 \
    --range 100.100.10.0/24 \
    --purpose PRIVATE_SERVICE_CONNECT

Tworzenie reguł zapory sieciowej producenta

Skonfiguruj reguły zapory sieciowej, aby zezwolić na ruch tylko między podsiecią NAT Private Service Connect a podsiecią serwera proxy ILB.

W Cloud Shell wykonaj te czynności:

gcloud compute --project=$projectname firewall-rules create allow-to-ingress-nat-subnet --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=100.100.10.0/24

W Cloud Shell utwórz regułę zapory sieciowej fw-allow-health-check, która zezwala kontroli stanu Google Cloud na docieranie do usługi producenta (usługi backendu) na porcie TCP 80.

gcloud compute firewall-rules create fw-allow-health-check \
    --network=producer-vpc \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --rules=tcp:80

Utwórz regułę zezwalania na ruch przychodzący w zaporze sieciowej dla podsieci tylko dla proxy, aby umożliwić systemowi równoważenia obciążenia komunikację z instancjami backendowymi na porcie TCP 80.

gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
    --network=producer-vpc \
    --action=allow \
    --direction=ingress \
    --source-ranges=172.16.0.0/23 \
    --rules=tcp:80

Konfiguracja routera Cloud Router i NAT

W tym ćwiczeniu używamy Cloud NAT do instalowania pakietów oprogramowania, ponieważ instancja maszyny wirtualnej nie ma zewnętrznego adresu IP.

W Cloud Shell utwórz router Cloud Router.

gcloud compute routers create cloud-router-for-nat --network producer-vpc --region us-central1

W Cloud Shell utwórz bramę NAT.

gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

Konfiguracja grupy instancji

W następnej sekcji utworzysz instancję Compute Engine i niezarządzaną grupę instancji. W dalszych krokach grupa instancji będzie używana jako usługa backendu systemu równoważenia obciążenia.

W Cloud Shell utwórz regionalną kontrolę stanu przekazywaną do usługi producenta.

gcloud compute instances create app-server-1 \
    --project=$projectname \
    --machine-type=e2-micro \
    --image-family debian-10 \
    --no-address \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=gce-subnet \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt-get install apache2 -y
      sudo service apache2 restart
      echo 'Welcome to App-Server-1 !!' | tee /var/www/html/index.html
      EOF"

W Cloud Shell utwórz niezarządzaną grupę instancji.

gcloud compute instance-groups unmanaged create psc-instance-group --zone=us-central1-a

gcloud compute instance-groups unmanaged set-named-ports psc-instance-group --project=$projectname --zone=us-central1-a --named-ports=http:80

gcloud compute instance-groups unmanaged add-instances psc-instance-group --zone=us-central1-a --instances=app-server-1

Konfigurowanie systemu równoważenia obciążenia

W kolejnych krokach skonfigurujesz wewnętrzny system równoważenia obciążenia HTTP , który w późniejszym kroku zostanie opublikowany jako przyłącze usługi.

W Cloud Shell utwórz regionalną kontrolę stanu.

gcloud compute health-checks create http http-health-check \
    --region=us-central1 \
    --use-serving-port

W Cloud Shell utwórz usługę backendu.

 gcloud compute backend-services create l7-ilb-backend-service \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=http-health-check \
      --health-checks-region=us-central1 \
      --region=us-central1

W Cloud Shell dodaj backendy do usługi backendu.

gcloud compute backend-services add-backend l7-ilb-backend-service \
  --balancing-mode=UTILIZATION \
  --instance-group=psc-instance-group \
  --instance-group-zone=us-central1-a \
  --region=us-central1

W Cloud Shell utwórz mapę URL, aby kierować przychodzące żądania do usługi backendu.

gcloud compute url-maps create l7-ilb-map \
    --default-service l7-ilb-backend-service \
    --region=us-central1

Utwórz docelowy serwer proxy HTTP.

gcloud compute target-http-proxies create l7-ilb-proxy\
    --url-map=l7-ilb-map \
    --url-map-region=us-central1 \
    --region=us-central1

Utwórz regułę przekierowania, aby kierować przychodzące żądania do serwera proxy. Do utworzenia reguły przekierowania nie używaj podsieci tylko-proxy.

 gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=producer-vpc \
      --subnet=load-balancer-subnet \
      --address=lb-ip \
      --ports=80 \
      --region=us-central1 \
      --target-http-proxy=l7-ilb-proxy \
      --target-http-proxy-region=us-central1

4. Weryfikowanie systemu równoważenia obciążenia

W konsoli Cloud otwórz Usługi sieciowe → Równoważenie obciążenia → Systemy równoważenia obciążenia. Zanotuj udaną kontrolę stanu usługi backendu.

881567cc11627009.png

Wybranie opcji „l7-ilb-map” spowoduje wyświetlenie adresu IP frontendu, który powinien być zgodny z adresem IP wyodrębnionym w poprzednim kroku, i identyfikuje usługę backendową.

bab89b0a7b4f95e9.png

5. Tworzenie przyłącza usługi Private Service Connect

Tworzenie przyłącza usługi

W Cloud Shell utwórz przyłącze usługi. Pamiętaj, aby na końcu nazwy domeny dodać znak „.”.

gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet --domain-names=cosmopup.net.

Opcjonalnie: jeśli używasz współdzielonego środowiska VPC, utwórz przyłącze usługi w projekcie usługi.

gcloud compute service-attachments create published-service --region=us-central1 --producer-forwarding-rule=l7-ilb-forwarding-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=projects/<hostproject>/regions/us-central1/subnetworks/psc-nat-subnet --domain-names=cosmopup.net.

Aby wyświetlić nowo utworzone przyłącze usługi, otwórz Usługi sieciowe → Private Service Connect.

d27fee9073dbbe2.png

Wybranie opcji published-service (opublikowana usługa) zapewnia więcej szczegółów, w tym identyfikator URI przyłącza usługi używany przez konsumenta do nawiązania połączenia Private Service Connection oraz nazwę domeny.

503df63730c62df2.png

Szczegóły przyłącza usługi:

projects/<project name>/regions/us-central1/serviceAttachments/published-service

6. Konfiguracja konsumencka

Włączanie interfejsów API dla konsumentów

W Cloud Shell wykonaj te czynności:

gcloud services enable dns.googleapis.com
gcloud services enable servicedirectory.googleapis.com

Utwórz sieć VPC konsumenta

W Cloud Shell wykonaj te czynności:

gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom

Tworzenie podsieci konsumenta

W Cloud Shell utwórz podsieć dla instancji testowej.

gcloud compute networks subnets create db1-subnet --project=$projectname --range=10.20.0.0/28 --network=consumer-vpc --region=us-central1

W Cloud Shell utwórz podsieć dla punktu końcowego konsumenta.

gcloud compute networks subnets create consumer-ep-subnet --project=$projectname --range=10.10.0.0/28 --network=consumer-vpc --region=us-central1

Utwórz punkt końcowy klienta (regułę przekierowania)

W Cloud Shell utwórz statyczny adres IP, który będzie używany w punkcie końcowym klienta.

gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=consumer-ep-subnet --addresses 10.10.0.10

Aby utworzyć punkt końcowy klienta, używamy wygenerowanego wcześniej identyfikatora URI przyłącza usługi.

W Cloud Shell utwórz punkt końcowy konsumenta.

gcloud compute forwarding-rules create stargazer --region=us-central1 --network=consumer-vpc --address=psc-consumer-ip-1 --target-service-attachment=projects/$projectname/regions/us-central1/serviceAttachments/published-service

7. Sprawdzanie połączenia w sieci VPC klienta

W sieci VPC konsumenta sprawdź, czy połączenie Private Service Connect zostało utworzone, klikając Usługi sieciowe → Private Service Connect → Połączone punkty końcowe. Zwróć uwagę na utworzone wcześniej połączenie z obserwatorem gwiazd i odpowiadający mu adres IP.

c60812433c3e1676.png

Po wybraniu psc-consumer-1 wyświetlane są szczegóły, w tym identyfikator URI przyłącza usługi.

14d3e3b1e0aee3c2.png

8. Sprawdzanie połączenia w sieci VPC producenta

W sieci VPC producenta sprawdź, czy połączenie Private Service Connect zostało utworzone, klikając Usługi sieciowe → Private Service Connect → Opublikowana usługa. Zwróć uwagę, że opublikowane połączenie usługi wskazuje teraz 1 regułę przekierowania (punkt końcowy połączenia).

911dbd7421bcfd3a.png

9. Sprawdzanie automatycznej konfiguracji DNS

Sprawdźmy konfigurację DNS i katalogu usług.

Konfiguracja Cloud DNS

Otwórz Usługi sieciowe → Cloud DNS → Strefy. Strefa goog-psc-default-us-central & i nazwa DNS cosmopup.net. są generowane automatycznie.

4395e7b33fc42faa.png

Wyświetlanie konfiguracji DNS i katalogu usług

Wybranie nazwy strefy pozwala zobaczyć, jak Service Directory jest zintegrowany z Cloud DNS.

e4fe44d945b20451.png

Konfiguracja katalogu usług

Otwórz Usługi sieciowe → Service Directory.

Czy pamiętasz nazwę punktu końcowego klienta „stargazer”? Jest ona automatycznie programowana w Service Directory, co umożliwia nam dotarcie do punktu końcowego odbiorcy za pomocą w pełni kwalifikowanej nazwy domeny stargazer.goog-psc-default–us-central1.

602deab65b5ac315.png

10. Sprawdzanie dostępu konsumenta do usługi producenta

W sieci VPC konsumenta utworzymy maszynę wirtualną, aby przetestować połączenie z opublikowaną usługą przez dostęp do punktu końcowego konsumenta stargazer.cosmopup.net.

W Cloud Shell utwórz instancję testową w sieci VPC klienta.

gcloud compute instances create db1 \
    --zone=us-central1-a \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --subnet=db1-subnet \
    --no-address

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.

W Cloud Shell utwórz regułę zapory sieciowej IAP.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

Zaloguj się na maszynę wirtualną konsumenta za pomocą IAP w Cloud Shell, aby sprawdzić połączenie z usługą producenta, wykonując polecenie curl. Ponów próbę, jeśli nastąpi przekroczenie limitu czasu.

gcloud compute ssh db1 --project=$projectname --zone=us-central1-a --tunnel-through-iap

Wykonaj polecenie curl, aby sprawdzić połączenie z usługą producenta. Po zweryfikowaniu zamknij maszynę wirtualną i wróć do wiersza poleceń Cloud Shell.

W Cloud Shell wykonaj polecenie curl w swojej domenie niestandardowej, na przykład stargazer.[custom-domain.com]. W danych wyjściowych poniżej wykonano polecenie curl względem adresu stargazer.cosmopup.net.

user@db1:~$ curl -v stargazer.cosmopup.net
*   Trying 10.10.0.10...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55d3aa8190f0)
* Connected to stargazer.cosmopup.net (10.10.0.10) port 80 (#0)
> GET / HTTP/1.1
> Host: stargazer.cosmopup.net
> User-Agent: curl/7.64.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< date: Thu, 22 Dec 2022 00:16:25 GMT
< server: Apache/2.4.38 (Debian)
< last-modified: Wed, 21 Dec 2022 20:26:32 GMT
< etag: "1b-5f05c5e43a083"
< accept-ranges: bytes
< content-length: 27
< content-type: text/html
< via: 1.1 google
< 
Welcome to App-Server-1 !!

Wyjdź z maszyny wirtualnej i wróć do wiersza poleceń Cloud Shell, aby rozpocząć zadania czyszczenia.

11. Czyszczenie danych

Usuń komponenty codelabu z Cloud Shell.

gcloud compute forwarding-rules delete stargazer --region=us-central1 --quiet

gcloud compute instances delete db1 --zone=us-central1-a --quiet 

gcloud compute addresses delete psc-consumer-ip-1 --region=us-central1 --quiet 

gcloud compute networks subnets delete consumer-ep-subnet db1-subnet --region=us-central1 --quiet 

gcloud compute firewall-rules delete ssh-iap-consumer --quiet 

gcloud compute networks delete consumer-vpc --quiet 

gcloud compute service-attachments delete published-service --region=us-central1 --quiet 

gcloud compute forwarding-rules delete l7-ilb-forwarding-rule --region=us-central1 --quiet 

gcloud compute target-http-proxies delete l7-ilb-proxy --region=us-central1 --quiet 
 
gcloud compute url-maps delete l7-ilb-map --region=us-central1 --quiet 
 
gcloud compute backend-services delete l7-ilb-backend-service --region=us-central1 --quiet
 
gcloud compute instance-groups unmanaged delete psc-instance-group --zone=us-central1-a --quiet
 
gcloud compute instances delete app-server-1 --zone=us-central1-a --quiet 
 
gcloud compute firewall-rules delete allow-to-ingress-nat-subnet fw-allow-health-check fw-allow-proxy-only-subnet --quiet 
 
gcloud compute addresses delete lb-ip --region=us-central1 --quiet 
 
gcloud compute networks subnets delete gce-subnet load-balancer-subnet psc-nat-subnet proxy-subnet-us-central --region=us-central1 --quiet 
 
gcloud compute routers delete cloud-router-for-nat --region=us-central1 --quiet 
 
gcloud compute networks delete producer-vpc --quiet 

12. Gratulacje

Gratulacje. Udało Ci się skonfigurować i zweryfikować punkt końcowy Private Service Connect z automatyczną konfiguracją DNS.

Utworzono infrastrukturę producenta i dodano przyłącze usługi z rejestracją domeny publicznej. Dowiedziałeś(-aś) się, jak utworzyć punkt końcowy konsumenta w sieci VPC konsumenta, który umożliwia połączenie z usługą lokalną za pomocą automatycznie wygenerowanego DNS.

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

8c2a10eb841f7b01.jpeg

Co dalej?

Sprawdź te ćwiczenia z programowania:

Więcej informacji i filmy

Dokumentacja