Private Service Connect dla interfejsów API Google

1. Wprowadzenie

Usługa Private Service Connect umożliwia tworzenie prywatnych punktów końcowych z użyciem globalnych wewnętrznych adresów IP w sieci VPC, aby uzyskiwać dostęp do interfejsów Google API. Możesz przypisać do tych wewnętrznych adresów IP nazwy DNS, takie jak storage-pscendpoint.p.googleapis.com i bigtable-adsteam.p.googleapis.com. Zamiast wysyłać żądania do interfejsu API do publicznych punktów końcowych usług, takich jak storage.googleapis.com, możesz wysyłać je do punktu końcowego Private Service Connect, który jest prywatny i wewnętrzny w Twojej sieci VPC.

Te nazwy i adresy IP są wewnętrzne w sieci VPC i wszystkich sieciach lokalnych, które są z nią połączone za pomocą tuneli Cloud VPN lub przyłączy Cloud Interconnect (sieci VLAN).

Możesz kontrolować, który ruch trafia do którego punktu końcowego, i wykazać, że pozostaje on w Google Cloud.

Czego się nauczysz

  • Przypadki użycia Private Service Connect
  • Wymagania związane z siecią
  • Obsługiwane interfejsy API
  • Tworzenie punktu końcowego Private Service Connect
  • Tworzenie zasobnika w Cloud Storage
  • Tworzenie i aktualizowanie stref prywatnych Cloud DNS
  • Tworzenie bramy NAT w celu uzyskania dostępu do publicznych interfejsów API Google
  • Tworzenie i aktualizowanie pliku konfiguracji BOTO
  • Wykonaj polecenie gsutil list na maszynie wirtualnej VM1, które zostanie rozwiązane w odniesieniu do punktu końcowego usługi PSC.
  • Wykonaj polecenie gsutil list na maszynie wirtualnej VM2, które zostanie rozpoznane w publicznym googleapis.com.
  • Sprawdzanie rozpoznawania nazw DNS za pomocą narzędzia Tcpdump

Czego potrzebujesz

  • Znajomość DNS, edytora nano lub vi

2. Przypadki użycia Private Service Connect

W tej samej sieci VPC możesz utworzyć wiele punktów końcowych usługi Private Service Connect. Nie ma limitu przepustowości dla konkretnego punktu końcowego. Punkty końcowe usługi Private Service Connect używają globalnych wewnętrznych adresów IP, więc mogą być używane przez dowolny zasób w sieci VPC.

W przypadku wielu punktów końcowych możesz określić różne ścieżki sieciowe za pomocą routera Cloud Router i reguł zapory sieciowej.

  • Możesz utworzyć reguły zapory sieciowej, aby uniemożliwić niektórym maszynom wirtualnym dostęp do interfejsów API Google przez punkt końcowy usługi Private Service Connect, a jednocześnie zezwolić na dostęp innym maszynom wirtualnym.
  • Możesz mieć regułę zapory sieciowej na instancji maszyny wirtualnej, która blokuje cały ruch do internetu. Ruch wysyłany do punktów końcowych Private Service Connect nadal dociera do Google.
  • Jeśli masz hosty lokalne połączone z siecią VPC za pomocą tunelu Cloud VPN lub przyłącza połączenia międzysieciowego (VLAN), możesz wysyłać niektóre żądania przez tunel lub VLAN, a inne przez internet publiczny. Ta konfiguracja umożliwia pominięcie tunelu lub sieci VLAN w przypadku usług takich jak Książki Google, które nie są obsługiwane przez prywatny dostęp do Google. Aby utworzyć tę konfigurację, utwórz punkt końcowy Private Service Connect, rozgłaszaj adresy IP punktu końcowego Private Service Connect za pomocą niestandardowych rozgłaszania tras Cloud Router i włącz zasady przekazywania przychodzącego Cloud DNS. Aplikacja może wysyłać niektóre żądania przez tunel Cloud VPN lub przyłącze połączenia międzysieciowego Cloud Interconnect (sieć VLAN) za pomocą nazwy punktu końcowego Private Service Connect, a inne przez internet za pomocą domyślnej nazwy DNS.
  • Jeśli połączysz sieć lokalną z siecią VPC za pomocą kilku przyłączy Cloud Interconnect (sieci VLAN), możesz wysyłać część ruchu z sieci lokalnej przez jedną sieć VLAN, a resztę przez inne, jak pokazano na rysunku 2. Dzięki temu możesz używać własnej sieci rozległej zamiast sieci Google i kontrolować przesyłanie danych, aby spełniać wymagania geograficzne. Aby utworzyć tę konfigurację, utwórz 2 punkty końcowe Private Service Connect. Utwórz niestandardowe rozgłaszanie tras dla pierwszego punktu końcowego w sesji BGP routera Cloud Router zarządzającego pierwszą siecią VLAN i utwórz inne niestandardowe rozgłaszanie tras dla drugiego punktu końcowego w sesji BGP routera Cloud Router zarządzającego drugą siecią VLAN. Hosty lokalne skonfigurowane do używania nazwy punktu końcowego Private Service Connect wysyłają ruch przez odpowiednie przyłącze połączenia międzysieciowego Cloud Interconnect (VLAN).
  • Możesz też używać wielu przyłączy Cloud Interconnect (sieci VLAN) w topologii aktywnej/aktywnej. Jeśli rozgłaszasz ten sam adres IP punktu końcowego Private Service Connect za pomocą niestandardowych rozgłoszeń tras w sesjach BGP na routerach Cloud Router zarządzających sieciami VLAN, pakiety wysyłane z systemów lokalnych do punktów końcowych są kierowane przez sieci VLAN za pomocą ECMP.

5e142c2fbf6f010e.png

Rysunek 1. Konfigurując Private Service Connect, Cloud Router i hosty lokalne, możesz określić, które przyłącze połączenia międzysieciowego Cloud Interconnect (VLAN) ma być używane do wysyłania ruchu do interfejsów API Google.

3. Wymagania związane z siecią

Aby korzystać z Private Service Connect, instancje maszyn wirtualnych bez zewnętrznych adresów IP muszą mieć interfejs podstawowy w podsieci z włączonym prywatnym dostępem do Google.

Maszyna wirtualna z zewnętrznym adresem IP może uzyskiwać dostęp do interfejsów API Google i usług za pomocą punktów końcowych Private Service Connect niezależnie od tego, czy w jej podsieci jest włączony prywatny dostęp do Google. Połączenie z punktem końcowym Private Service Connect pozostaje w sieci Google.

Punkty końcowe usługi Private Service Connect nie są dostępne z równorzędnych sieci VPC.

Obsługiwane interfejsy API

Podczas tworzenia punktu końcowego usługi Private Service Connect wybierasz pakiet interfejsów API, do którego chcesz mieć dostęp: all-apis lub vpc-sc.

Pakiety interfejsów API zapewniają dostęp do tych samych interfejsów API, które są dostępne za pomocą wirtualnych adresów IP prywatnego dostępu do Google.

  • Pakiet all-apis zapewnia dostęp do tych samych interfejsów API co private.googleapis.com.
  • Pakiet vpc-sc zapewnia dostęp do tych samych interfejsów API co restricted.googleapis.com.

4. Topologia i przypadek użycia ćwiczenia z programowania

2ac275eb86f26338.png

Rysunek 1. Topologia ćwiczeń z programowania

Przypadek użycia ćwiczeń z programowania:

Nasz klient wymaga dostępu do googleapis zarówno w sieci prywatnej (połączenie wzajemne), jak i publicznej na potrzeby przesyłania danych z usługi Cloud Storage. Aby spełnić wymagania klientów, wdrożymy Private Service Connect, który będzie się składać z unikalnego adresu /32, konfiguracji BOTO i aktualizacji rekordu DNS. Maszyna wirtualna 1 będzie korzystać z PSC w celu uzyskania dostępu do zasobnika pamięci w chmurze, a maszyna wirtualna 2 będzie używać publicznych zakresów adresów IP googleapis.com za pośrednictwem bramy NAT.

Wszystkie aspekty laboratorium są wdrażane w Google Cloud Platform, ale ten sam przypadek użycia ma zastosowanie w przypadku wdrożenia w chmurze hybrydowej, które wymaga rozdzielenia ruchu.

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.

  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.

Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. 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.

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 GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

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

f6ef2b5f13479f3a.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 module możesz wykonać w przeglądarce.

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-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

Włącz wszystkie niezbędne usługi

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

7. Utwórz sieć VPC

Sieć VPC

Z Cloud Shell

gcloud compute networks create psc-lab --subnet-mode custom

Utwórz podsieć

Z Cloud Shell

gcloud compute networks subnets create psclab-subnet \
--network psc-lab --range 10.0.0.0/24 --region us-central1 --enable-private-ip-google-access

Tworzenie reguł 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 psclab-ssh \
    --network psc-lab --allow tcp:22 --source-ranges=35.235.240.0/20

Tworzenie instancji Cloud NAT

Utwórz router Cloud Router

Z Cloud Shell

gcloud compute routers create crnat \
    --network psc-lab \
    --asn 65000 \
    --region us-central1

Utwórz Cloud NAT

Z Cloud Shell

gcloud compute routers nats create cloudnat \
    --router=crnat \
    --auto-allocate-nat-external-ips \
    --nat-all-subnet-ip-ranges \
    --enable-logging \
    --region us-central1

8. Tworzenie punktu końcowego Private Service Connect

Podczas konfigurowania adresu IP punktu końcowego usługi Private Service Connect <pscendpointip> musisz podać unikalny adres IP, który nie jest zdefiniowany w sieci VPC.

Z Cloud Shell

gcloud compute addresses create psc-ip \
    --global \
    --purpose=PRIVATE_SERVICE_CONNECT \
    --addresses=192.168.255.250 \
    --network=psc-lab

Przechowywanie wartości „pscendpointip” przez czas trwania modułu

pscendpointip=$(gcloud compute addresses list --filter=name:psc-ip --format="value(address)")

echo $pscendpointip

Utwórz regułę przekierowania, aby połączyć punkt końcowy z interfejsami API Google i usługami.

Z Cloud Shell

gcloud compute forwarding-rules create pscendpoint \
    --global \
    --network=psc-lab \
    --address=psc-ip \
    --target-google-apis-bundle=all-apis

Wyświetlanie listy skonfigurowanych punktów końcowych usługi Private Service Connect

Z Cloud Shell

gcloud compute forwarding-rules list  \
--filter target="(all-apis OR vpc-sc)" --global

Opisywanie skonfigurowanych punktów końcowych Private Service Connect

Z Cloud Shell

gcloud compute forwarding-rules describe \
    pscendpoint --global

9. Utwórz zasobnik

Utwórz zasobnik Cloud Storage i zastąp BUCKET_NAME globalnie niepowtarzalną nazwą.

Z Cloud Shell

gsutil mb  -l us-central1 -b on gs://BUCKET_NAME

Przechowywanie „BUCKET_NAME” przez czas trwania modułu

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

10. Konfiguracja DNS

Gdy tworzysz punkt końcowy usługi Private Service Connect, Service Directory generuje rekord DNS dla interfejsów API i usług udostępnianych za pomocą tego punktu końcowego.

Rekordy DNS wskazują adres IP punktu końcowego usługi Private Service Connect i mają format SERVICE-ENDPOINT.p.googleapis.com.

Możesz używać tych nazw DNS w żądaniach API, aby kierować je do punktu końcowego Private Service Connect. Możesz też używać tych nazw DNS w nagłówku Host żądania.

Jeśli chcesz używać punktu końcowego usługi Private Service Connect z klientem lub aplikacją, która uzyskuje dostęp do interfejsów API i usług Google, zaktualizuj klienta lub aplikację, aby używać nazw DNS p.googleapis.com.

Szczegółowe informacje znajdziesz w dokumentacji klienta lub biblioteki klienta. Na przykład:

  • Python: możesz skonfigurować api_endpoint w klasie opcji klienta w pakiecie google-api-core.
  • Możesz skonfigurować WithEndpoint w pakiecie opcji klienta w pakiecie api.
  • gcloud: You can configure api_endpoint_overrides using this command. gcloud config set api_endpoint_overrides/SERVICE ENDPOINT_URL

Przykład: gcloud config set api_endpoint_overrides/storage https://storage-xyz.p.googleapis.com/storage/v1/

Jeśli nie możesz skonfigurować klienta lub aplikacji tak, aby korzystały z innego punktu końcowego, utwórz rekordy DNS pasujące do domyślnych nazw DNS. Na przykład storage.googleapis.com. Więcej informacji znajdziesz w artykule Tworzenie rekordów DNS przy użyciu domyślnych nazw DNS.

Weryfikowanie rekordu DNS

W konsoli Cloud sprawdź wygenerowany wpis DNS w sekcji Usługi sieciowe → Cloud DNS. Zanotuj wygenerowaną nazwę DNS „p.googleapis.com”.

11. Tworzenie maszyn wirtualnych

Tworzenie maszyny wirtualnej (psc-instance-1) używanej do weryfikacji Private Service Connect

Z Cloud Shell

  gcloud compute instances create psc-instance-1 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

Zaloguj się w instancji maszyny wirtualnej (psc-instance-1).

Łączenie się z maszyną wirtualną przez SSH za pomocą Cloud Shell

gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

Utwórz dodatkowe terminale Cloud Shell, klikając + (zrzut ekranu poniżej) 3 razy.

69ea94e1527912bb.png

Utwórz maszynę wirtualną (psc-instance-2) używaną do weryfikacji publicznych interfejsów Google API.

Z karty 2

  gcloud compute instances create psc-instance-2 \
    --subnet psclab-subnet \
    --zone us-central1-a \
    --image=centos-7-v20210122 \
    --image-project=centos-cloud \
    --no-address \
    --metadata=startup-script=yum\ install\ tcpdump\ -y$'\n'yum\ install\ bind-utils\ -y$'\n'yum\ install\ nano\ -y 

Na karcie 2 połącz się z maszyną wirtualną przez SSH za pomocą Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

Na karcie 3 połącz się z instancją psc-instance-1 przez SSH za pomocą Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-1" --project "$projectname"

Na karcie 4 połącz się z instancją psc-instance-2 przez SSH w Cloud Shell.

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname


gcloud compute ssh --zone "us-central1-a" "psc-instance-2" --project "$projectname"

12. Sprawdzanie dotychczasowego działania Gsutil

Na karcie 4 (psc-instance-2) uruchom tcpdump i monitoruj ruch DNS.

sudo tcpdump -vv -i eth0 port 53

Sprawdzanie wyszukiwania DNS zasobnika na dane na karcie 2 (psc-instance-2)

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME
gsutil -D ls gs://$BUCKET_NAME

Sprawdź debugowanie gsutil. Do rozpoznawania nazw DNS używany jest HOST storage.googleapis.com.

<snip>
send: 'GET /storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\nHost: storage.googleapis.com\r\ncontent-length: 0\r\nauthorization: Bearer ya29.c.KpkB7wfaMjfc_WXEKCeNF4Md0fEHnfDU7tqBf3cd0u43yEmYXqj8fX_X5wWdNdDVH6k1EkjeAeIJDzKGvyjPOkf1Io2kVeUqYX69sDv53huW1NslffjAHKchbZ0CP3Cg83TS3Pa55jLcuE0TLbYycVrgSbD3H90LaapUGbWD3kj4IsJLf9J8R98Bqobu8HZwwqk92hlZ4zVzRqOM\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

Na karcie 4 (psc-instance-2) sprawdź, czy podczas uzyskiwania dostępu do zasobnika pamięci używane są publiczne rekordy A DNS GoogleAPI.com.

metadata.google.internal.domain > psc-instance-2.c.yourprojectname.internal.33973: [udp sum ok] 36442 q: A? storage.googleapis.com. 11/0/0 storage.googleapis.com. A 108.177.111.128, storage.googleapis.com. A 142.250.128.128, storage.googleapis.com. A 74.125.70.128, storage.googleapis.com. A 74.125.201.128, storage.googleapis.com. A 64.233.183.128, storage.googleapis.com. A 173.194.198.128, storage.googleapis.com. A 172.217.219.128, storage.googleapis.com. A 142.250.136.128, storage.googleapis.com. A 209.85.234.128, storage.googleapis.com. A 172.217.212.128, storage.googleapis.com. A 172.217.214.128

13. Modyfikowanie działania gsutil

W poprzednim kroku utworzyliśmy prywatną strefę DNS i rekord A mapowany na adres IP punktu końcowego PSC. W następnym kroku określimy działanie gsutil, aktualizując plik BOTO na maszynie wirtualnej psc-instance-1.

Wyświetl domyślną konfigurację BOTO w terminalu instancji maszyny wirtualnej na karcie 1 (psc-instance-1).

[psc-instance ~]$ more  /etc/boto.cfg

Dane wyjściowe (Twój identyfikator projektu będzie inny)

[GSUtil]
default_project_id  = [your project number]
default_api_version = 2

[GoogleCompute]
service_account = default

Zaktualizuj konfigurację BOTO za pomocą edytora nano lub VI. Skopiuj i wklej wszystkie wpisy.

Przykład: sudo nano /etc/boto.cfg

lub

Przykład: sudo vi /etc/boto.cfg

Na karcie terminala instancji maszyny wirtualnej 1(psc-instance-1)

[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

Sprawdź konfigurację. Kolejność [Credentials] ma kluczowe znaczenie w przypadku wyszukiwania DNS.

more /etc/boto.cfg
[Credentials]
gs_host = storage-pscendpoint.p.googleapis.com
gs_host_header = storage.googleapis.com
gs_json_host = storage-pscendpoint.p.googleapis.com
gs_json_host_header = www.googleapis.com

[GSUtil]
default_project_id  = [your project number
default_api_version = 2

[GoogleCompute]
service_account = default

14. Sprawdzanie zaktualizowanego działania wyszukiwania gsutil

Na karcie 3 (psc-instance-1) uruchom tcpdump i monitoruj ruch DNS.

sudo tcpdump -vv -i eth0 port 53

Sprawdzanie zasobnika na dane za pomocą narzędzia gsutil na karcie 1 (psc-instance-1)

BUCKET_NAME=YOUR BUCKET NAME
echo $BUCKET_NAME

gsutil -D ls gs://$BUCKET_NAME

Dzienniki debugowania potwierdzają, że do zasobnika pamięci można uzyskać dostęp za pomocą punktu końcowego Private Service Connect „pscendpoint”

Dane wyjściowe:

<snip>
INFO 0131 22:14:18.795986 base_api.py] Making http GET to https://storage-pscendpoint.p.googleapis.com/storage/v1/b/$BUCKET_NAME/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000
INFO 0131 22:14:18.796415 base_api.py] Headers: {u'Host': 'www.googleapis.com',
 'accept': 'application/json',
 'accept-encoding': 'gzip, deflate',
 'content-length': '0',
 'user-agent': 'apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0'}
INFO 0131 22:14:18.796502 base_api.py] Body: (none)
connect: (storage-pscendpoint.p.googleapis.com, 443)
send: 'GET /storage/v1/b/psc-bucket/o?delimiter=%2F&projection=noAcl&versions=False&fields=prefixes%2CnextPageToken%2Citems%2Fname&alt=json&maxResults=1000 HTTP/1.1\r\ncontent-length: 0\r\naccept-encoding: gzip, deflate\r\naccept: application/json\r\nuser-agent: apitools Python/2.7.5 gsutil/4.57 (linux2) analytics/disabled interactive/True command/ls google-cloud-sdk/324.0.0\r\nhost: www.googleapis.com\r\nauthorization: Bearer ya29.c.KpkB7wd3XWiYeRyTuth5_HPlNV-hPwc2Nn7RSIeMpzrpa_j4EsMPl2m_mDGKAcGHvYIgiC5bT2UVQirAPpSbbpToa6G6lkaBbH5SZwHwgNXYfisp5Ww1UjXe4rTa69a_Wp0WesafcwPNnYzDo3xf5VGh3iGhySA04kTXuyT--MgOU8U-XLII2LJQxUWlV8KEdrvyCuqRb-jsDdk_\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
<snip>

Na karcie 3 (psc-instance-1) sprawdź, czy adres IP punktu końcowego PSC jest rekordem DNS A używanym podczas próby uzyskania dostępu do zasobnika pamięci.

@psc-instance-1 ~]$ sudo tcpdump -vv -i eth0 port 53
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:02:33.936256 IP (tos 0x0, ttl 64, id 55416, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0xcceb!] 34796+ A? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.936269 IP (tos 0x0, ttl 64, id 55417, offset 0, flags [DF], proto UDP (17), length 82)
    psc-instance-1.c.yourprojectname.internal.42296 > metadata.google.internal.domain: [bad udp cksum 0x5e4e -> 0x3ebd!] 5632+ AAAA? storage-pscendpoint.p.googleapis.com. (54)
05:02:33.944018 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 98)
    metadata.google.internal.domain > psc-instance-1.c.yourprojectname.42296: [udp sum ok] 34796 q: A? storage-pscendpoint.p.googleapis.com. 1/0/0 storage-pscendpoint.p.googleapis.com. A 10.10.110.10 (70)
05:02:33.946005 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 175)

Sprawdź, czy adres IP punktu końcowego Private Service Connect jest teraz używany do rozpoznawania nazw DNS.

Z karty 1

nslookup storage-pscendpoint.p.googleapis.com

Wyniki

@psc-instance ~]$ nslookup storage-pscendpoint.p.googleapis.com
Server:         169.254.169.254
Address:        169.254.169.254#53

Non-authoritative answer:
Name:   storage-pscendpoint.p.googleapis.com
Address: <pscip>

15. Procedura czyszczenia

Zamykanie instancji maszyny wirtualnej (wszystkie karty)

exit

Usuwanie komponentów laboratorium z jednego terminala Cloud Shell

gcloud compute routers nats delete cloudnat --router=crnat --region=us-central1 --quiet

gcloud compute routers delete crnat --region=us-central1 --quiet

gcloud compute forwarding-rules delete pscendpoint --global --quiet

gcloud compute addresses delete psc-ip --global --quiet

gsutil rm -r gs://$BUCKET_NAME

gcloud compute instances delete psc-instance-1 --zone=us-central1-a --quiet

gcloud compute instances delete psc-instance-2 --zone=us-central1-a --quiet

gcloud compute firewall-rules delete psclab-ssh --quiet

gcloud compute networks subnets delete psclab-subnet --region us-central1 --quiet

gcloud compute networks delete psc-lab --quiet

W konsoli sprawdź, czy wyświetlany jest właściwy projekt, a następnie wybierz Usługi sieciowe → Cloud DNS.

16. Gratulacje!

Gratulujemy ukończenia ćwiczenia.

Omówione zagadnienia

  • Przypadki użycia Private Service Connect
  • Wymagania związane z siecią
  • Obsługiwane interfejsy API
  • Utworzono punkt końcowy Private Service Connect
  • Utworzono zasobnik Cloud Storage
  • Zaktualizowano plik konfiguracji BOTO
  • Utworzono bramę NAT
  • Wykonaj polecenie gsutil list na maszynie wirtualnej VM1, które będzie odwoływać się do punktu końcowego usługi PSC.
  • Wykonaj polecenie gsutil list na maszynie wirtualnej VM2, które jest rozpoznawane w publicznym googleapis.com.
  • Sprawdzanie rozpoznawania nazw DNS za pomocą narzędzia Tcpdump