1. Wprowadzenie
Private Service Connect umożliwia producentom usług prywatne udostępnianie usług z jednej sieci VPC do innej. Konsumenci mogą uzyskiwać dostęp do usług producenta za pomocą punktów końcowych PSC lub zaplecza PSC.
Te ćwiczenia skupiają się na backendach PSC. Backendy PSC są używane w połączeniu z systemami równoważenia obciążenia serwera proxy Google Cloud (aplikacyjnymi lub sieciowymi). Korzystanie z usługi PSC Backends zapewnia bardziej szczegółowe ustawienia po stronie konsumenta, takie jak:
- Bardziej szczegółowa obserwacja i logowanie
- Integracja z Cloud Armor
- Niestandardowe URL-e
- Zaawansowane zarządzanie ruchem
- Niestandardowe certyfikaty TLS
Z tego modułu dowiesz się, jak utworzyć backend usługi Private Service Connect za pomocą globalnego zewnętrznego systemu równoważenia obciążenia aplikacji, aby uzyskać prywatny dostęp do usługi producenta w innej sieci.
Czego się nauczysz
- Tworzenie i konfigurowanie backendu PSC powiązanego z globalnym zewnętrznym systemem równoważenia obciążenia aplikacji
- Skonfiguruj zarządzaną usługę internetową Apache i udostępnij ją jako usługę PSC za pomocą przyłącza usługi.
- Tworzenie certyfikatów SSL na potrzeby kończenia połączeń SSL w wewnętrznych i zewnętrznych systemach równoważenia obciążenia aplikacji
- Konfigurowanie publicznej strefy Cloud DNS na potrzeby dostępu do usługi PSC
Czego potrzebujesz
- Projekt Google Cloud z uprawnieniami właściciela
2. Środowisko testowe
Utworzone środowisko będzie się składać z sieci VPC konsumenta i sieci VPC producenta. W sieci VPC producenta wdrożysz zarządzaną grupę instancji z szablonu instancji, który tworzy usługę internetową Apache typu open source. Wdrożysz też maszynę wirtualną testową, aby zapewnić prawidłowe lokalne działanie usługi. Udostępnisz usługę Apache jako usługę producenta PSC za pomocą przyłącza usługi.
W sieci VPC klienta wdrożysz globalny zewnętrzny system równoważenia obciążenia aplikacji z usługą backendu PSC wskazującą usługę Apache. Następnie skonfigurujesz publiczną strefę DNS, aby uzyskać dostęp do usługi PSC w internecie publicznym.

3. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- 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ć.



- 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ę tym 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.
- 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 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 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 zakończeniu powinno wyświetlić się coś takiego:

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ć.
4. 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] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
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
5. Konfiguracja VPC producenta
Utwórz sieć VPC
Z Cloud Shell
gcloud compute networks create producer-vpc --subnet-mode custom
Tworzenie podsieci
W sieci VPC producenta zostaną wdrożone 2 podsieci ogólnego przeznaczenia. Podsieć usługi będzie używana do wdrażania maszyn wirtualnych usługi internetowej Apache, a także reguły przekierowania systemu równoważenia obciążenia. Podsieć test-client-subnet będzie znajdować się w innym regionie i będzie używana do wdrażania maszyny wirtualnej w celu testowania usługi Apache z włączonym dostępem globalnym.
Z Cloud Shell
gcloud compute networks subnets create service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
Z Cloud Shell
gcloud compute networks subnets create test-client-subnet \
--network=producer-vpc \
--range=10.0.1.0/28 \
--region=us-east4
Musimy też wdrożyć podsieć tylko-proxy, która będzie używana z regionalnym wewnętrznym systemem równoważenia obciążenia aplikacji.
Z Cloud Shell
gcloud compute networks subnets create central-proxy-subnet \
--network=producer-vpc \
--range=10.100.101.0/24 \
--region=$region \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE
Gdy usługa PSC jest wdrażana, każda unikalna usługa wymaga powiązania z przyłączem usługi odpowiedniej podsieci NAT PSC. Ta podsieć powinna mieć odpowiedni rozmiar w zależności od oczekiwanej liczby podłączonych punktów końcowych.
Z Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--region=$region \
--range=10.100.100.0/24 \
--purpose=PRIVATE_SERVICE_CONNECT
Utwórz Cloud NAT.
Do zainstalowania odpowiednich pakietów dla naszych usług producenta wymagany jest Cloud NAT.
Z Cloud Shell
gcloud compute routers create central-cr \
--network=producer-vpc \
--region=$region
Z Cloud Shell
gcloud compute routers nats create central-nat \
--router=central-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Tworzenie zasad i reguł zapory sieciowej
Z Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-vpc-policy \
--network producer-vpc \
--name network-producer-vpc \
--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 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 network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
Będziesz potrzebować 2 dodatkowych reguł zapory sieciowej, aby zezwolić na ruch przychodzący do backendów systemu równoważenia obciążenia pochodzący z podsieci tylko dla proxy systemu równoważenia obciążenia (2000), a także reguły zezwalającej na kontrolę stanu systemu równoważenia obciążenia w instancjach backendu (2001).
Z Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow traffic from load balancer proxy subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.101.0/24 \
--layer4-configs tcp:443 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 2001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow load balancer health checks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:443 \
--global-firewall-policy
6. Tworzenie usługi internetowej Apache
Utworzymy prostą usługę internetową Apache, która wyświetla „PSC Service”.
Utwórz szablon instancji
Z Cloud Shell
gcloud compute instance-templates create apache-service-template \
--network producer-vpc \
--subnet service-subnet \
--region $region \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "PSC Service" | \
tee /var/www/html/index.html
systemctl restart apache2'
Tworzenie kontroli stanu dla zarządzanej grupy instancji
Z Cloud Shell
gcloud compute health-checks create https service-mig-healthcheck \
--port=443 \
--global
Tworzenie zarządzanej grupy instancji
Z Cloud Shell
gcloud compute instance-groups managed create psc-service-mig \
--region $region \
--size=2 \
--template=apache-service-template \
--health-check=service-mig-healthcheck
gcloud compute instance-groups managed set-named-ports psc-service-mig \
--named-ports=https:443 \
--region=$region
7. Tworzenie samodzielnie podpisanego certyfikatu
Aby utworzyć certyfikat podpisany samodzielnie, wykonaj krok 1 instrukcji tutaj. Wszystkie polecenia możesz uruchamiać w Cloud Shell. Wróć tutaj po wykonaniu kroku 1. NAZWA ZWYKŁA MUSI BYĆ SKONFIGUROWANA Z DOMENĄ EXAMPLE.COM.
Utwórz zasób certyfikatu, który ma być powiązany z systemem równoważenia obciążenia. Zastąp parametry certyfikatu i klucza prywatnego nazwami swoich plików.
Z Cloud Shell
gcloud compute ssl-certificates create producer-service-cert \
--certificate=<your-producer-certfile.cert> \
--private-key=<your-producer-keyfile.pem> \
--region=$region
8. Tworzenie regionalnego wewnętrznego systemu równoważenia obciążenia aplikacji
Następnie utworzymy komponenty systemu równoważenia obciążenia dla usługi. Używamy wewnętrznego regionalnego systemu równoważenia obciążenia aplikacji, ale możesz użyć dowolnego wewnętrznego systemu równoważenia obciążenia Google Cloud. Postępuj zgodnie z odpowiednią dokumentacją systemu równoważenia obciążenia dotyczącą obsługi protokołu TLS.
Utwórz wewnętrzny adres IP, który będzie używany w regule przekierowania systemu równoważenia obciążenia, i zapisz go. Będzie on potrzebny później podczas wykonywania wywołania testowego usługi.
Z Cloud Shell
gcloud compute addresses create apache-service-ip \ --region=$region \ --subnet=service-subnet gcloud compute addresses describe apache-service-ip \ --format="get(address)" \ --region=$region
Utwórz kontrolę stanu systemu równoważenia obciążenia.
Z Cloud Shell
gcloud compute health-checks create https lb-apache-service-hc \
--region=$region \
--port-name=https
Utwórz usługę backendu.
Z Cloud Shell
gcloud compute backend-services create apache-bes\ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --port-name=https \ --health-checks=lb-apache-service-hc \ --health-checks-region=$region \ --region=$region gcloud compute backend-services add-backend apache-bes \ --balancing-mode=UTILIZATION \ --instance-group=psc-service-mig \ --region=$region
Utwórz mapę URL.
Z Cloud Shell
gcloud compute url-maps create producer-url-map \ --default-service=apache-bes \ --region=$region
Utwórz docelowe serwery proxy HTTPS.
Z Cloud Shell
gcloud compute target-https-proxies create https-proxy \ --url-map=producer-url-map \ --region=$region \ --ssl-certificates=producer-service-cert
Utwórz regułę przekierowania.
Z Cloud Shell
gcloud compute forwarding-rules create apache-fr \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=producer-vpc \ --subnet=service-subnet \ --address=apache-service-ip \ --ports=443 \ --region=$region \ --target-https-proxy=https-proxy \ --target-https-proxy-region=$region \ --allow-global-access
9. Tworzenie testowej maszyny wirtualnej i lokalne testowanie usługi
Zanim utworzymy przyłącze usługi, utworzymy testową kliencką maszynę wirtualną w innym regionie, aby sprawdzić, czy system równoważenia obciążenia jest prawidłowo skonfigurowany z dostępem globalnym i protokołem TLS.
Z Cloud Shell
gcloud compute instances create vm-client \
--zone=us-east4-a \
--subnet=test-client-subnet \
--no-address
Poczekaj około minuty na zakończenie obsługi, a potem połącz się z instancją za pomocą SSH.
Z Cloud Shell
gcloud compute ssh \
--zone "us-east4-a" "vm-client" \
--tunnel-through-iap \
--project $project
Przetestuj usługę Apache, łącząc się przez port 443 za pomocą systemu równoważenia obciążenia. Wewnętrzny adres IP to adres zarezerwowany i zanotowany wcześniej.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
OCZEKIWANY WYNIK
PSC Service
Zakończ sesję na maszynie wirtualnej.
Z vm-client
exit
10. Tworzenie przyłącza usługi
W tym przykładzie konfigurujemy przyłącze usługi tak, aby zezwalało tylko na połączenia PSC z tego projektu. Można go skonfigurować tak, aby akceptował co najmniej 1 konkretny projekt lub sieć, ale nie oba te elementy. Ustawiliśmy maksymalny limit połączeń na 5. Każdy projekt lub sieć musi mieć ustawiony limit.
Z Cloud Shell
gcloud compute service-attachments create apache-service-attachment \
--region=$region \
--producer-forwarding-rule=apache-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$project=5 \
--nat-subnets=psc-nat-subnet
Zanotuj identyfikator URI połączenia z usługą (selfLink), ponieważ będzie on potrzebny w następnym kroku do konfiguracji backendu PSC. Możesz go uzyskać, wykonując w Cloud Shell to polecenie.
Z Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \
--region $region
Skopiuj identyfikator URI zaczynający się od projects.
Przykład: projects/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Konfiguracja sieci VPC konsumenta
Utwórz sieć VPC
Z Cloud Shell
gcloud compute networks create consumer-vpc --subnet-mode custom
Utwórz podsieć
Po stronie konsumenta potrzebna jest podsieć, w której zostanie wdrożona grupa punktów końcowych sieci Private Service Connect.
Z Cloud Shell
gcloud compute networks subnets create consumer-subnet \
--network=consumer-vpc \
--region=$region \
--range=10.0.0.0/28
12. Rezerwowanie zewnętrznego adresu IP i tworzenie certyfikatu z podpisem własnym po stronie klienta
Zewnętrzny adres IP
Utwórz zewnętrzny statyczny adres IP, który zostanie później użyty w regule przekierowania systemu równoważenia obciążenia, i zapisz adres IP w zmiennej Cloud Shell.
Z Cloud Shell
gcloud compute addresses create external-psc-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
export externalip=$(gcloud compute addresses describe external-psc-ip \
--format="get(address)" \
--global)
echo $externalip
Certyfikat podpisany samodzielnie przez konsumenta
Po raz drugi wykonaj krok 1 instrukcji tutaj, aby utworzyć certyfikat podpisany samodzielnie. Wszystkie polecenia możesz uruchamiać w Cloud Shell. Wróć tutaj po wykonaniu kroku 1. Zamiast własnej publicznej strefy DNS będziemy używać publicznej usługi DNS z symbolem wieloznacznym o otwartym kodzie źródłowym o nazwie nip.io. Publiczny adres URL usługi PSC będzie korzystać z właśnie skonfigurowanego zewnętrznego adresu IP. NAZWA ZWYKŁA MUSI BYĆ SKONFIGUROWANA Z UŻYCIEM <YOUR-EXTERNAL-IP.nip.io>
Utwórz zasób certyfikatu, który ma być powiązany z zewnętrznym systemem równoważenia obciążenia. Zastąp parametry certyfikatu i klucza prywatnego nazwami swoich plików.
Z Cloud Shell
gcloud compute ssl-certificates create consumer-service-cert \
--certificate=<your-consumer-certfile.cert> \
--private-key=<your-consumer-keyfile.pem> \
--global
13. Tworzenie komponentów systemu równoważenia obciążenia
Utworzymy globalny zewnętrzny system równoważenia obciążenia aplikacji z siecią NEG usługi PSC wskazującą nowo utworzone przyłącze usługi jako usługę backendu.
Przygotuj identyfikator URI przyłącza usługi, który został zapisany w ostatnim kroku. Zastąp poniższy adres psc-target-service swoim identyfikatorem URI.
Z Cloud Shell
gcloud compute network-endpoint-groups create apache-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/$project/regions/$region/serviceAttachments/apache-service-attachment \ --region=$region \ --network=consumer-vpc \ --subnet=consumer-subnet
Utwórz usługę backendu.
Z Cloud Shell
gcloud compute backend-services create apache-pscneg-bes \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global
gcloud compute backend-services add-backend apache-pscneg-bes \
--network-endpoint-group=apache-psc-neg \
--network-endpoint-group-region=$region \
--global
Utwórz mapę URL
Z Cloud Shell
gcloud compute url-maps create consumer-url-map \
--default-service=apache-pscneg-bes \
--global
Utwórz docelowe serwery proxy HTTPS.
Z Cloud Shell
gcloud compute target-https-proxies create psc-https-proxy \
--url-map=consumer-url-map \
--ssl-certificates=consumer-service-cert
Tworzenie reguły przekierowania
Z Cloud Shell
gcloud compute forwarding-rules create external-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=external-psc-ip \ --global \ --target-https-proxy=psc-https-proxy \ --ports=443
14. Tworzenie publicznej strefy DNS
Z Cloud Shell
gcloud dns managed-zones create "psc-service" \
--dns-name=$externalip.nip.io. \
--description="public dns for psc service" \
--visibility=public
Z Cloud Shell
gcloud dns record-sets transaction start \ --zone="psc-service" gcloud dns record-sets transaction add $externalip \ --name=$externalip.nip.io \ --ttl=300 \ --type=A \ --zone="psc-service" gcloud dns record-sets transaction execute \ --zone="psc-service"
15. Testowanie połączenia PSC konsumenta
Zanim przeprowadzisz test, odczekaj 7–10 minut, aby publiczny DNS mógł się rozpropagować.
Z Cloud Shell
curl https://$externalip.nip.io -k
Możesz też przetestować połączenie w przeglądarce, wpisując w niej lub w terminalu na komputerze adres https://<YOUR-EXTERNAL-IP>.nip.io.
OCZEKIWANY WYNIK
PSC Service
16. Procedura czyszczenia
Usuwanie komponentów laboratorium z jednego terminala Cloud Shell
gcloud dns record-sets delete $externalip.nip.io --zone="psc-service" --type=A -q gcloud dns managed-zones delete "psc-service" -q gcloud compute forwarding-rules delete external-fr --global -q gcloud compute target-https-proxies delete psc-https-proxy -q gcloud compute url-maps delete consumer-url-map --global -q gcloud compute backend-services delete apache-pscneg-bes --global -q gcloud compute network-endpoint-groups delete apache-psc-neg --region=$region -q gcloud compute ssl-certificates delete consumer-service-cert --global -q gcloud compute addresses delete external-psc-ip --global -q gcloud compute networks subnets delete consumer-subnet --region $region -q gcloud compute networks delete consumer-vpc -q gcloud compute instances delete vm-client --zone=us-east4-a -q gcloud compute service-attachments delete apache-service-attachment --region $region -q gcloud compute forwarding-rules delete apache-fr --region $region -q gcloud compute target-https-proxies delete https-proxy --region $region -q gcloud compute url-maps delete producer-url-map --region $region -q gcloud compute backend-services delete apache-bes --region $region -q gcloud compute health-checks delete lb-apache-service-hc --region $region -q gcloud compute addresses delete apache-service-ip --region $region -q gcloud compute ssl-certificates delete producer-service-cert --region $region -q gcloud compute instance-groups managed delete psc-service-mig --region $region -q gcloud compute health-checks delete service-mig-healthcheck --global -q gcloud compute instance-templates delete apache-service-template -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete central-nat --router=central-cr --region $region -q gcloud compute routers delete central-cr --region $region -q gcloud compute networks subnets delete psc-nat-subnet --region $region -q gcloud compute networks subnets delete service-subnet --region $region -q gcloud compute networks subnets delete test-client-subnet --region us-east4 -q gcloud compute networks subnets delete central-proxy-subnet --region $region -q gcloud compute networks delete producer-vpc -q
17. Gratulacje!
Gratulujemy ukończenia ćwiczenia.
Omówione zagadnienia
- Tworzenie i konfigurowanie backendu PSC powiązanego z globalnym zewnętrznym systemem równoważenia obciążenia aplikacji
- Skonfiguruj zarządzaną usługę internetową Apache i udostępnij ją jako usługę PSC za pomocą przyłącza usługi.
- Tworzenie certyfikatów SSL na potrzeby kończenia połączeń SSL w wewnętrznych i zewnętrznych systemach równoważenia obciążenia aplikacji
- Konfigurowanie publicznej strefy Cloud DNS w celu uzyskania dostępu do usługi PSC