1. Wprowadzenie
Private Service Connect umożliwia producentom usług udostępnianie usług prywatnie z jednej sieci VPC do drugiej. Konsumenci mogą uzyskać dostęp do usług producenta za pomocą punktów końcowych PSC lub backendów PSC.
W tych ćwiczeniach skupiamy się na backendach PSC. Backendy PSC są używane w połączeniu z systemami równoważenia obciążenia serwera proxy Google Cloud (aplikacji lub sieci). Korzystanie z backendów PSC zapewnia bardziej szczegółowe ustawienia po stronie konsumenta, takie jak:
- Bardziej szczegółowe monitorowanie i logowanie
- Integracja z Cloud Armor
- Niestandardowe URL-e
- Zaawansowane zarządzanie ruchem
- Niestandardowe certyfikaty TLS
Z tego modułu praktycznego dowiesz się, jak utworzyć backend usługi Private Service Connect z globalnym zewnętrznym systemem równoważenia obciążenia aplikacji, aby uzyskać 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
- Konfigurowanie zarządzanej usługi WWW Apache i udostępnianie jej jako usługi PSC za pomocą załącznika usługi
- Tworzenie certyfikatów SSL w celu zakończenia szyfrowania SSL w systemach równoważenia obciążenia aplikacji wewnętrznych i zewnętrznych
- Konfigurowanie publicznej strefy Cloud DNS do uzyskiwania dostępu do usługi PSC
Czego potrzebujesz
- Projekt Google Cloud z uprawnieniami właściciela
2. Środowisko testowe
Tworzone środowisko będzie się składać z sieci VPC konsumenta i sieci VPC producenta. W sieci VPC producenta wdróż zarządzaną grupę instancji na podstawie szablonu instancji, który tworzy usługę sieciową Apache typu open source. Musisz też wdrożyć maszynę wirtualną testową, aby zapewnić prawidłowe działanie usługi lokalnie. Usługę Apache udostępnisz jako usługę producenta PSC za pomocą przyłącza usługi.
W środowisku VPC dla konsumenta wdróż globalny zewnętrzny system równoważenia obciążenia aplikacji z usługą backendu PSC wskazującą na usługę Apache. Następnie skonfigurujesz publiczną strefę DNS, aby uzyskać dostęp do usługi PSC w publicznym internecie.
3. Konfiguracja i wymagania
Konfiguracja środowiska w samodzielnym tempie
- 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órego nie używają interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest niepowtarzalny w ramach wszystkich projektów Google Cloud i nie można go zmienić (po ustawieniu). 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 musisz 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ć użyć własnego adresu e-mail, aby sprawdzić, czy jest on dostępny. Nie można go zmienić po wykonaniu tego kroku. Pozostanie on do końca 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. Przejście przez ten samouczek nie będzie kosztowne, a być może nawet bezpłatne. Aby wyłączyć zasoby i uniknąć obciążenia opłatami po zakończeniu samouczka, możesz usunąć utworzone zasoby lub usunąć 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.
Uruchomienie 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 tym CodeLab możesz wykonać w przeglądarce. Nie musisz niczego instalować.
4. Zanim zaczniesz
Włącz interfejsy API
W Cloud Shell sprawdź, czy masz skonfigurowany identyfikator projektu.
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łączanie wszystkich niezbędnych usług
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. Sieć usługowa będzie używana do wdrażania maszyn wirtualnych usługi WWW Apache oraz reguły przekierowania systemu równoważenia obciążenia. Podsieci test-client-subnet będą znajdować się w innym regionie i będą służyć do wdrażania maszyn wirtualnych, aby przetestować usługę 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 na potrzeby regionalnego wewnętrznego systemu 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 wdrożono usługę PSC, każda usługa musi mieć odpowiednią podsieć NAT PSC powiązaną z przyłączem usługi. Rozmiar tego podsieci powinien być dostosowany do liczby spodziewanych połą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
Tworzenie Cloud NAT
Cloud NAT jest wymagany do instalowania odpowiednich pakietów dla naszych usług producenta.
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
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), potrzebne będą 2 dodatkowe reguły zapory sieciowej, a także reguła zezwalająca na kontrole stanu systemu równoważenia obciążenia w instancjach backendowych (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 komunikat „PSC Service”.
Tworzenie szablonu 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 z tego artykułu. Wszystkie polecenia możesz wykonywać w Cloud Shell. Wróć tutaj po wykonaniu kroku 1. Twoja nazwa zwyczajowa musi być skonfigurowana w domenie EXAMPLE.COM.
Utwórz zasób certyfikatu, który chcesz powiązać 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 wewnętrznego regionalnego 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. Aby dowiedzieć się, jak obsługiwać TLS, zapoznaj się z dokumentacją odpowiedniego systemu równoważenia obciążenia.
Utwórz wewnętrzny adres IP, który będzie używany w regułach przekierowania systemu równoważenia obciążenia, i zapisz go, aby użyć go później podczas testowego wywołania 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 testowanie usługi lokalnie
Zanim utworzymy załącznik usługi, utworzymy testową maszynę wirtualną klienta 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 alokacji, a następnie połącz się z instancją przez 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 przez system równoważenia obciążenia. Wewnętrzny adres IP to ten, który został zarezerwowany i zanotowany wcześniej.
curl https://example.com:443 -k --connect-to example.com:443:<YOUR-INTERNAL-IP>:443
OCZEKIWANY WYNIK
PSC Service
Zamknij maszynę wirtualną.
Z vm-client
exit
10. Tworzenie załącznika usługi
W tym przykładzie konfigurujemy przyłącze usługi tak, aby zezwalało tylko na połączenia PSC z tego projektu. Możesz skonfigurować tę funkcję tak, aby akceptowała co najmniej 1 konkretny projekt lub co najmniej 1 konkretną sieć. Maksymalna liczba połączeń została ustawiona na 5. Każdy projekt lub sieć musi mieć określony 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
Zapisz URI załącznika usługi (selfLink), ponieważ będzie on potrzebny w następnym kroku do skonfigurowania backendu PSC. Aby go uzyskać, uruchom w Cloud Shell następujące polecenie:
Z Cloud Shell
gcloud compute service-attachments describe apache-service-attachment \ --region $region
Skopiuj identyfikator URI od sekcji projects
Przykład: projects/$project/regions/$region/serviceAttachments/apache-service-attachment
11. Konfiguracja VPC konsumenta
Tworzenie sieci 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 samodzielnie podpisanego certyfikatu po stronie klienta
Zewnętrzny adres IP
Utwórz zewnętrzny statyczny adres IP, który będzie używany później w regułach 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
Samodzielnie podpisany certyfikat konsumenta
Po raz drugi wykonaj krok 1 z tego, 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 źródle otwartym o nazwie nip.io. Publiczny adres URL usługi PSC będzie używać właśnie skonfigurowanego zewnętrznego adresu IP. Twoja nazwa wspólna musi być skonfigurowana z <YOUR-EXTERNAL-IP.nip.io>
Utwórz zasób certyfikatu, który chcesz powiązać 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 NEG usługi PSC wskazującym na nowo utworzone przyłącze usługi jako usługę backendową.
Miej pod ręką identyfikator URI przyłącza usługi zapisany w ostatnim kroku. Zastąp psc-target-service poniżej 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
Tworzenie mapy 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 przetestujesz, odczekaj 7–10 minut, aby publiczny DNS mógł się rozprzestrzenić.
Z Cloud Shell
curl https://$externalip.nip.io -k
Możesz też przetestować połączenie w przeglądarce, wpisując w niej https://<TWÓJ-ZEWNĘTRZNY-ADRES-IP>.nip.io lub w terminalu na komputerze.
OCZEKIWANY WYNIK
PSC Service
16. Czyszczenie
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
- Konfigurowanie zarządzanej usługi WWW Apache i udostępnianie jej jako usługi PSC za pomocą załącznika usługi
- Tworzenie certyfikatów SSL w celu zakończenia SSL na 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