1. Wprowadzenie
Połączenie równorzędne VPC to powszechna metoda, którą producenci oferują użytkownikom możliwość korzystania z usług. Użycie połączeń równorzędnych VPC wiąże się jednak z wieloma zawiłościami dotyczącymi routingu, takimi jak nieprzejściowe połączenia równorzędne VPC, duże wykorzystanie adresów IP i nadmierna ekspozycja zasobów w równorzędnej sieci VPC.
Private Service Connect (PSC) to metoda połączenia, która umożliwia producentom udostępnianie usługi w jednym punkcie końcowym, którą konsument udostępnia w sieci VPC zadania. Eliminuje to wiele problemów, z którymi użytkownicy mają do czynienia przy połączeniach równorzędnych VPC. Chociaż przy użyciu PSC tworzonych jest wiele nowych usług, wciąż istnieje wiele usług, które działają jako usługi połączeń równorzędnych VPC.
W Google Cloud przedstawiamy ścieżkę migracji usług, które zostały utworzone przy użyciu połączenia równorzędnego VPC, aby przejść na architekturę opartą na PSC. Dzięki tej metodzie migracji adres IP usługi producenta, który jest udostępniany przez połączenie równorzędne VPC, jest zachowywany w architekturze opartej na PSC, dzięki czemu konsument nie musi wprowadzać żadnych zmian. Wykonaj te ćwiczenia z programowania, aby poznać czynności techniczne związane z migracją.
UWAGA: ta ścieżka migracji dotyczy tylko usług, w których producent i konsument znajdują się w tej samej organizacji Google Cloud. W przypadku usług Google Cloud i usług innych firm, które korzystają z połączenia równorzędnego VPC, będą one korzystać z podobnej metody migracji, ale zostanie ona dostosowana do samej usługi. Skontaktuj się z odpowiednimi stronami, aby dowiedzieć się więcej o ścieżce migracji dotyczącej tego typu usług.
Czego się nauczysz
- Jak skonfigurować usługę opartą na połączeniach równorzędnych VPC
- Jak skonfigurować usługę opartą na PSC
- Użycie interfejsu Internal-Ranges API do przeprowadzenia migracji podsieci przez połączenie równorzędne VPC w celu przeprowadzenia migracji usługi równorzędnej VPC do usługi PSC.
- Wyjaśnienie, kiedy musi nastąpić przestój przed migracją usługi
- Kroki czyszczenia migracji
Czego potrzebujesz
- Projekt Google Cloud z uprawnieniami właściciela
2. Topologia ćwiczeń z programowania
Dla uproszczenia to ćwiczenie z programowania gromadzi wszystkie zasoby w 1 projekcie. W ramach ćwiczeń w Codelabs zostaną podane, jakie działania należy wykonać po stronie producenta, a jakie działania należy wykonać po stronie konsumenta, jeśli producenci i konsumenci należą do różnych projektów.
To ćwiczenie w Codelabs będzie miało 4 stany.
Stan 1 to stan połączenia równorzędnego VPC. Powstaną 2 powiązane ze sobą środowiska VPC – Consumer-vpc i Producer-vpc. Producer-vpc będzie udostępniać prostą usługę Apache za pomocą wewnętrznego przekazującego sieciowego systemu równoważenia obciążenia. Consumer-vpc będzie mieć 1 konsumencką maszynę wirtualną do celów testowych,
Stan 2 to stan testowy PSC. Utworzymy nową regułę przekierowania i użyjemy jej do powiązania z naszym przyłączem usługi. Następnie utworzymy testowy punkt końcowy PSC w środowisku konsumenckim VPC, aby sprawdzić, czy nasza usługa PSC działa zgodnie z oczekiwaniami.
Stan 3 to stan migracji. Zarezerwujemy zakres podsieci w modelu Producer-vpc, w którym wdrożono usługę równorzędną VPC, która ma być używana w klientach indywidualnych. Utworzymy wtedy nowy punkt końcowy PSC z tym samym adresem IP co istniejąca reguła przekierowania w Producer-vpc.
Stan 4 to stan ostateczny PSC. Wyczyścimy testowy punkt końcowy PSC i usuniemy połączenie równorzędne VPC między klientem customer-vpc i Producer-vpc.
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 (zazwyczaj 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. Po wykonaniu tego kroku nie można go zmienić. Pozostanie on na stałe w ramach 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 przypadku będziesz korzystać z 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
Sprawdź w Cloud Shell, czy Twój projekt jest skonfigurowany i skonfiguruj zmienne.
gcloud auth login gcloud config list project gcloud config set project [YOUR-PROJECT-ID] export projectid=[YOUR-PROJECT-ID] export region=us-central1 export zone=$region-a echo $projectid echo $region echo $zone
Włącz wszystkie niezbędne usługi
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com
5. Tworzenie sieci VPC producenta (aktywność producenta)
Sieć VPC
Z Cloud Shell
gcloud compute networks create producer-vpc \ --subnet-mode=custom
Utwórz podsieci
Z Cloud Shell
gcloud compute networks subnets create producer-service-subnet \ --network=producer-vpc \ --range=10.0.0.0/28 \ --region=$region gcloud compute networks subnets create producer-fr-subnet \ --network=producer-vpc \ --range=192.168.0.0/28 \ --region=$region
Tworzenie routera Cloud Router i Cloud NAT w usłudze Producer
Z Cloud Shell
gcloud compute routers create $region-cr \ --network=producer-vpc \ --region=$region gcloud compute routers nats create $region-nat \ --router=$region-cr \ --region=$region \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Tworzenie zasad zapory sieciowej i reguł zapory sieciowej Producer
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 nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:
- Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne za pomocą IAP.
- Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP używane przez IAP 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
Utworzymy również 2 kolejne reguły, które umożliwią kontrole stanu systemu równoważenia obciążenia w usłudze oraz zezwalają na ruch w sieci z maszyn wirtualnych, które będą łączyć się z klienta VPC.
Z Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "LB healthchecks" \ --direction INGRESS \ --src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \ --layer4-configs tcp:80 \ --global-firewall-policy gcloud compute network-firewall-policies rules create 3000 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow access from consumer-vpc" \ --direction INGRESS \ --src-ip-ranges 10.0.1.0/28 \ --layer4-configs tcp:80 \ --global-firewall-policy
6. Konfiguracja usługi producenta (aktywność producenta)
Utworzymy usługę producenta z 1 maszyną wirtualną działającą na serwerze WWW Apache. Zostanie ona dodana do niezarządzanej grupy instancji z frontendem za pomocą regionalnego wewnętrznego przekazującego sieciowego systemu równoważenia obciążenia.
Tworzenie maszyny wirtualnej i niezarządzanej grupy instancji
Z Cloud Shell
gcloud compute instances create producer-service-vm \ --network producer-vpc \ --subnet producer-service-subnet \ --zone $zone \ --no-address \ --metadata startup-script='#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y a2enmod ssl sudo a2ensite default-ssl echo "I am a Producer Service." | \ tee /var/www/html/index.html systemctl restart apache2'
Z Cloud Shell
gcloud compute instance-groups unmanaged create prod-uig \ --zone=$zone gcloud compute instance-groups unmanaged add-instances prod-uig \ --zone=$zone \ --instances=producer-service-vm
Tworzenie regionalnego wewnętrznego przekazującego sieciowego systemu równoważenia obciążenia
Z Cloud Shell
gcloud compute health-checks create http producer-hc \ --region=$region gcloud compute backend-services create producer-bes \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=$region \ --health-checks=producer-hc \ --health-checks-region=$region gcloud compute backend-services add-backend producer-bes \ --region=$region \ --instance-group=prod-uig \ --instance-group-zone=$zone gcloud compute addresses create producer-fr-ip\ --region $region \ --subnet producer-fr-subnet \ --addresses 192.168.0.2 gcloud compute forwarding-rules create producer-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=producer-fr-subnet \ --address=producer-fr-ip \ --ip-protocol=TCP \ --ports=80 \ --backend-service=producer-bes \ --backend-service-region=$region
7. Tworzenie konsumenta sieci VPC (aktywność klienta)
Sieć VPC
Z Cloud Shell
gcloud compute networks create consumer-vpc \ --subnet-mode=custom
Utwórz podsieć
Z Cloud Shell
gcloud compute networks subnets create consumer-vm-subnet \ --network=consumer-vpc \ --range=10.0.1.0/28 \ --region=$region
Tworzenie zasady zapory sieciowej i reguł zapory sieciowej sieci konsumenta
Utworzymy kolejną zasadę zapory sieciowej dla VPN dla klientów indywidualnych.
Z Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global gcloud compute network-firewall-policies associations create \ --firewall-policy consumer-vpc-policy \ --network consumer-vpc \ --name network-consumer-vpc \ --global-firewall-policy gcloud compute network-firewall-policies rules create 1000 \ --action ALLOW \ --firewall-policy consumer-vpc-policy \ --description "SSH with IAP" \ --direction INGRESS \ --src-ip-ranges 35.235.240.0/20 \ --layer4-configs tcp:22 \ --global-firewall-policy
8. Utwórz połączenie równorzędne VPC
Aktywność producenta
Z Cloud Shell
gcloud compute networks peerings create producer-vpc-peering \ --network=producer-vpc \ --peer-project=$projectid \ --peer-network=consumer-vpc
Aktywność klientów
Z Cloud Shell
gcloud compute networks peerings create consumer-vpc-peering \ --network=consumer-vpc \ --peer-project=$projectid \ --peer-network=producer-vpc
Sprawdź, czy połączenie równorzędne zostało ustanowione, sprawdzając listę tras w kliencie VPC. Powinny wyświetlać się trasy zarówno dla VPC, jak i Producer-vpc.
Aktywność klientów
Z Cloud Shell
gcloud compute routes list --filter="network=consumer-vpc"
Oczekiwane dane wyjściowe
NAME: default-route-49dda7094977e231 NETWORK: consumer-vpc DEST_RANGE: 0.0.0.0/0 NEXT_HOP: default-internet-gateway PRIORITY: 1000 NAME: default-route-r-10d65e16cc6278b2 NETWORK: consumer-vpc DEST_RANGE: 10.0.1.0/28 NEXT_HOP: consumer-vpc PRIORITY: 0 NAME: peering-route-496d0732b4f11cea NETWORK: consumer-vpc DEST_RANGE: 192.168.0.0/28 NEXT_HOP: consumer-vpc-peering PRIORITY: 0 NAME: peering-route-b4f9d3acc4c08d55 NETWORK: consumer-vpc DEST_RANGE: 10.0.0.0/28 NEXT_HOP: consumer-vpc-peering PRIORITY: 0
9. Utwórz strefę DNS (aktywność klienta)
W celu zaprezentowania bardziej realistycznego przykładu utworzymy strefę prywatną Cloud DNS, która będzie wywoływać usługę producenta przez DNS, a nie prywatny adres IP.
Do utworzonego wcześniej adresu IP reguły przekierowania systemu równoważenia obciążenia sieci dodamy rekord A wskazujący adres service.example.com w domenie example.com. Ten adres IP reguły przekierowania to 192.168.0.2.
Z Cloud Shell
gcloud dns managed-zones create "producer-service" \ --dns-name=example.com \ --description="producer service dns" \ --visibility=private \ --networks=consumer-vpc gcloud dns record-sets transaction start \ --zone="producer-service" gcloud dns record-sets transaction add 192.168.0.2 \ --name=service.example.com \ --ttl=300 \ --type=A \ --zone="producer-service" gcloud dns record-sets transaction execute \ --zone="producer-service"
10. Testowanie usługi producenta przez połączenie równorzędne VPC (aktywność konsumentów)
Na tym etapie powstał architektura State 1.
Tworzenie maszyny wirtualnej klienta
Z Cloud Shell
gcloud compute instances create consumer-client \ --zone=$zone \ --subnet=consumer-vm-subnet \ --no-address
Testowanie połączeń
Z Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Z maszyny wirtualnej klienta klienta
curl service.example.com
Oczekiwane dane wyjściowe
I am a Producer Service.
Z maszyny wirtualnej klienta klienta
exit
11. Przygotowywanie usługi do korzystania z Private Service Connect (aktywność producenta)
Zakończyliśmy wszystkie początkowe kroki konfiguracji, więc teraz zaczniemy przygotowywać usługę równorzędną z VPC do migracji do Private Service Connect. W tej sekcji wprowadzimy zmiany w pliku Producer-vpc, konfigurując usługę do udostępniania za pomocą przyłącza usługi. Musimy utworzyć nową podsieć i nową regułę przekierowania w tej podsieci, aby można było przenieść istniejącą podsieć do klienta konsumenckiego-vpc i zachować istniejący adres IP usługi.
Utwórz podsieć, w której będzie hostowany adres IP nowej reguły przekierowania systemu równoważenia obciążenia.
Z Cloud Shell
gcloud compute networks subnets create producer-psc-fr-subnet \ --network=producer-vpc \ --range=10.0.2.64/28 \ --region=$region
Utwórz wewnętrzny adres IP reguły przekierowania systemu równoważenia obciążenia.
Z Cloud Shell
gcloud compute addresses create producer-psc-ip \ --region $region \ --subnet producer-psc-fr-subnet \ --addresses 10.0.2.66
Utwórz nową regułę przekierowania systemu równoważenia obciążenia. Konfiguracja tej reguły pozwala korzystać z tej samej usługi backendu i kontroli stanu, które skonfigurowano wcześniej.
Z Cloud Shell
gcloud compute forwarding-rules create psc-service-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=producer-psc-fr-subnet \ --address=producer-psc-ip \ --ip-protocol=TCP \ --ports=80 \ --backend-service=producer-bes \ --backend-service-region=$region
Podsieć psc-nat-subnet zostanie powiązana z przyłączem usługi PSC na potrzeby translacji adresów sieciowych. W produkcyjnych zastosowaniach ta podsieć musi mieć odpowiednią wielkość, aby obsługiwać liczbę dołączonych punktów końcowych. Więcej informacji znajdziesz w dokumentacji dotyczącej rozmiaru podsieci PSC NAT.
Z Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \ --network=producer-vpc \ --range=10.100.100.0/28 \ --region=$region \ --purpose=PRIVATE_SERVICE_CONNECT
Musimy dodać do zasady zapory sieciowej dodatkową regułę zapory sieciowej, aby zezwolić na ruch z podsieci psc-nat-subnet. W przypadku uzyskiwania dostępu do usługi przez PSC ruch będzie źródłem ruchu w podsieci psc-nat-subnet.
Z Cloud Shell
gcloud compute network-firewall-policies rules create 2001 \ --action ALLOW \ --firewall-policy producer-vpc-policy \ --description "allow PSC NAT subnet" \ --direction INGRESS \ --src-ip-ranges 10.100.100.0/28 \ --layer4-configs tcp:80 \ --global-firewall-policy
Utwórz przyłącze usługi i zapisz identyfikator URI przyłącza usługi, aby skonfigurować punkt końcowy PSC w następnej sekcji.
Z Cloud Shell
gcloud compute service-attachments create producer-sa \ --region=$region \ --producer-forwarding-rule=psc-service-fr \ --connection-preference=ACCEPT_MANUAL \ --consumer-accept-list=$projectid=5 \ --nat-subnets=psc-nat-subnet
Z Cloud Shell
gcloud compute service-attachments describe producer-sa --region=$region
Przykładowe dane wyjściowe
connectionPreference: ACCEPT_MANUAL consumerAcceptLists: - connectionLimit: 5 projectIdOrNum: $projectid creationTimestamp: '2025-04-24T11:23:09.886-07:00' description: '' enableProxyProtocol: false fingerprint: xxx id: 'xxx' kind: compute#serviceAttachment name: producer-sa natSubnets: - https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: 'xxx' low: 'xxx' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/producer-sa targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/forwardingRules/psc-service-fr
12. Łączenie „testu” punktu końcowego PSC konsumenta z usługą producenta i testem (aktywność klienta)
Architektura obecnie mieści się w Stanach Zjednoczonych 2.
W tej chwili istniejąca usługa producenta udostępniana przez połączenie równorzędne VPC nadal działa i działa prawidłowo w scenariuszu produkcyjnym. Przed zainicjowaniem okresu przerwy w działaniu usługi w celu przeniesienia bieżącej podsieci równorzędnej VPC do środowiska VPC konsumenta utworzymy „testowy” punkt końcowy PSC, aby sprawdzić, czy ujawniony przyłącze usługi działa prawidłowo. Nasze połączenia w stanie końcowym będą punktem końcowym PSC z tym samym adresem IP co bieżąca reguła przekierowania dla usługi opartej na połączeniu równorzędnym VPC.
Tworzenie punktu końcowego PSC
Z Cloud Shell
gcloud compute addresses create test-psc-endpoint-ip \ --region=$region \ --subnet=consumer-vm-subnet \ --addresses 10.0.1.3
Poniższa usługa docelowa będzie identyfikatorem URI przyłącza usługi zanotowanym w ostatnim kroku.
Z Cloud Shell
gcloud compute forwarding-rules create test-psc-endpoint \ --region=$region \ --network=consumer-vpc \ --address=test-psc-endpoint-ip \ --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa
Testowanie „testowego” punktu końcowego PSC
Z Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Od klienta-klienta
curl 10.0.1.3
Oczekiwane dane wyjściowe
I am a Producer Service.
Od klienta-klienta
exit
13. Przeprowadź migrację istniejącej podsieci reguły przekierowania producenta
Wykonanie tych czynności spowoduje przerwę w działaniu usługi producenta opartej na połączeniu równorzędnym VPC. Korzystając z interfejsu Internal Ranges API, przeniesiemy teraz podsieć reguły przekierowania z Manufacturer-vpc do standardu Consumer-vpc. Spowoduje to zablokowanie używania podsieci w okresie przejściowym, w którym usuniemy podsieć z serwera Producer-vpc, i wyznaczymy ją wyłącznie na potrzeby migracji w celu utworzenia w pliku Consumer-vpc.
Interfejs API zakresu wewnętrznego wymaga zarezerwowania istniejącej podsieci równorzędnej reguły przekierowania VPC (Produce-fr-subnet, 192.168.0.0/28) i wyznaczenia nazwy podsieci docelowej w pliku customer-vpc (consumer-psc-subnet). W kilku krokach tworzymy nową podsieć w sieci Consumer-vpc o tej nazwie.
Rezerwowanie podsieci Producer-fr-subnet na potrzeby migracji
Aktywność producenta
Z Cloud Shell
gcloud network-connectivity internal-ranges create producer-peering-internal-range \ --ip-cidr-range=192.168.0.0/28 \ --network=producer-vpc \ --usage=FOR_MIGRATION \ --migration-source=projects/$projectid/regions/$region/subnetworks/producer-fr-subnet \ --migration-target=projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
Uruchom opis dla utworzonego zakresu wewnętrznego, aby wyświetlić stan podsieci.
Aktywność producenta
Z Cloud Shell
gcloud network-connectivity internal-ranges describe producer-peering-internal-range
Przykładowe dane wyjściowe
createTime: '2025-04-24T19:26:10.589343291Z' ipCidrRange: 192.168.0.0/28 migration: source: projects/$projectid/regions/$region/subnetworks/producer-fr-subnet target: projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet name: projects/$projectid/locations/global/internalRanges/producer-peering-internal-range network: https://www.googleapis.com/compute/v1/projects/$project/global/networks/producer-vpc peering: FOR_SELF updateTime: '2025-04-24T19:26:11.521960016Z' usage: FOR_MIGRATION
Usuń regułę przekierowania i podsieć równorzędną VPC
Aktywność producenta
Z Cloud Shell
gcloud compute forwarding-rules delete producer-fr --region=$region gcloud compute addresses delete producer-fr-ip --region=$region gcloud compute networks subnets delete producer-fr-subnet --region=$region
Migracja podsieci
Przeprowadź migrację podsieci do środowiska VPC Consumer-vpc, tworząc nową podsieć przy użyciu utworzonego wcześniej zakresu wewnętrznego. Nazwa tej podsieci musi być taka sama jak nazwa, którą określiliśmy wcześniej w celu kierowania (consumer-psc-subnet). Specyficzne przeznaczenie PEER_MIGRATION wskazuje, że podsieć jest zarezerwowana na potrzeby migracji podsieci między równorzędnymi sieciami VPC. Dzięki tej flagie przeznaczenia ta podsieć może zawierać tylko zarezerwowane statyczne adresy IP i punkty końcowe PSC.
Aktywność klientów
Z Cloud Shell
gcloud compute networks subnets create consumer-psc-subnet \ --purpose=PEER_MIGRATION \ --network=consumer-vpc \ --range=192.168.0.0/28 \ --region=$region
14. Tworzenie punktu końcowego PSC (aktywność klienta)
Usługa Producer jest nadal niedostępna. Utworzona właśnie podsieć jest nadal zablokowana i można jej używać tylko na potrzeby migracji. Aby to sprawdzić, spróbuj utworzyć maszynę wirtualną w tej podsieci. Nie uda się utworzyć maszyny wirtualnej.
Z Cloud Shell
gcloud compute instances create test-consumer-vm \ --zone=$zone \ --subnet=consumer-psc-subnet \ --no-address
Oczekiwane dane wyjściowe
ERROR: (gcloud.compute.instances.create) Could not fetch resource: - Subnetwork must have purpose=PRIVATE.
Tej podsieci możemy użyć tylko do utworzenia punktu końcowego PSC. Zauważ, że utworzony przez nas adres IP korzysta z tego samego adresu IP co reguła przekierowania, z której korzysta nasza usługa producenta zamiast połączenia równorzędnego VPC.
Z Cloud Shell
gcloud compute addresses create psc-endpoint-ip \ --region=$region \ --subnet=consumer-psc-subnet \ --addresses 192.168.0.2
Ponownie musisz użyć tego samego identyfikatora URI przyłącza usługi, który został zanotowany wcześniej i który został również użyty do utworzenia „testowego” punktu końcowego PSC.
Z Cloud Shell
gcloud compute forwarding-rules create psc-endpoint \ --region=$region \ --network=consumer-vpc \ --address=psc-endpoint-ip \ --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa
15. Testowanie punktu końcowego PSC (aktywność klienta)
W tym momencie jesteś w architekturze State 3.
Z Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Z maszyny wirtualnej klienta klienta
curl service.example.com
Oczekiwane dane wyjściowe
I am a Producer Service.
Z maszyny wirtualnej klienta klienta
exit
Obecnie przerwa w działaniu usługi została zakończona i usługa jest ponownie dostępna. Nie musieliśmy wprowadzać żadnych zmian w istniejących rekordach DNS. Nie trzeba wprowadzać żadnych zmian po stronie klienta. Aplikacje mogą tylko wznawiać operacje do przeniesionej usługi.
16. Czyszczenie migracji
Aby dokończyć migrację, musimy wykonać kilka czynności czyszczenia. Musimy usunąć i odblokować zasoby.
Odblokowywanie podsieci zakresu wewnętrznego
Spowoduje to odblokowanie przeniesionej podsieci, dzięki czemu można zmienić jej przeznaczenie z „PEER_MIGRATION” na „PRIVATE”.
Aktywność producenta
Z Cloud Shell
gcloud network-connectivity internal-ranges delete producer-peering-internal-range
Aktywność klientów
Z Cloud Shell
gcloud compute networks subnets update consumer-psc-subnet \ --region=$region \ --purpose=PRIVATE gcloud compute networks subnets describe consumer-psc-subnet --region=$region
Przykładowe dane wyjściowe
creationTimestamp: '2025-04-24T12:29:33.883-07:00' fingerprint: xxx gatewayAddress: 192.168.0.1 id: 'xxx' ipCidrRange: 192.168.0.0/28 kind: compute#subnetwork name: consumer-psc-subnet network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
Usuwanie równorzędnych połączeń VPC
Aktywność producenta
Z Cloud Shell
gcloud compute networks peerings delete producer-vpc-peering \ --network=producer-vpc
Aktywność klientów
Z Cloud Shell
gcloud compute networks peerings delete consumer-vpc-peering \ --network=consumer-vpc
Usuwanie „testowego” punktu końcowego PSC
Aktywność klienta
Z Cloud Shell
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
17. Ostatni test po porządkowaniu migracji (aktywność klienta)
Na tym etapie architektura State 4 (stan końcowy) została osiągnięta.
Ponownie przetestuj połączenie punktu końcowego PSC, aby upewnić się, że nie zaobserwowano żadnych negatywnych skutków czyszczenia migracji.
Z Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Z maszyny wirtualnej klienta klienta
curl service.example.com
Oczekiwane dane wyjściowe
I am a Producer Service.
Z maszyny wirtualnej klienta klienta
exit
UDAŁO SIĘ!
18. Procedura czyszczenia
Z Cloud Shell
gcloud compute forwarding-rules delete psc-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q gcloud dns record-sets delete service.example.com --zone="producer-service" --type=A -q gcloud dns managed-zones delete "producer-service" -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-psc-subnet --region=$region -q gcloud compute networks subnets delete consumer-vm-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete producer-sa --region=$region -q gcloud compute forwarding-rules delete psc-service-fr --region=$region -q gcloud compute addresses delete producer-psc-ip --region=$region -q gcloud compute backend-services delete producer-bes --region=$region -q gcloud compute health-checks delete producer-hc --region=$region -q gcloud compute instance-groups unmanaged delete prod-uig --zone=$zone -q gcloud compute instances delete producer-service-vm --zone=$zone --project=$projectid -q gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -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 $region-nat --router=$region-cr --region=$region -q gcloud compute routers delete $region-cr --region=$region -q gcloud compute networks subnets delete psc-nat-subnet --region=$region -q gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q gcloud compute networks subnets delete producer-service-subnet --region=$region -q gcloud compute networks delete producer-vpc -q
19. Gratulacje!
Gratulujemy ukończenia ćwiczenia.
Omówione zagadnienia
- Jak skonfigurować usługę opartą na połączeniach równorzędnych VPC
- Jak skonfigurować usługę opartą na PSC
- Użycie interfejsu Internal-Ranges API do przeprowadzenia migracji podsieci przez połączenie równorzędne VPC w celu przeprowadzenia migracji usługi równorzędnej VPC do usługi PSC.
- Wyjaśnienie, kiedy musi nastąpić przestój przed migracją usługi
- Kroki czyszczenia migracji