Private Service Connect: migracja połączeń równorzędnych VPC z Private Service Connect

Informacje o tym ćwiczeniu (w Codelabs)
schedule74 minuty
subjectOstatnia aktualizacja: 28 kwietnia 2025
account_circleAutorzy: Lorin Price

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.

7dbf27cf215f9703.png

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,

7f64427c0e59d417.png

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.

98c324c59c1fbf68.png

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.

a64ab7b69132c722.png

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

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:

7ffe5cbb04455448.png

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