Private Service Connect: Peering VPC ke Migrasi Service Connect Private

1. Pengantar

Peering VPC adalah metode umum bagi produsen untuk menawarkan konsumsi layanan kepada pengguna mereka. Namun, penggunaan peering VPC menimbulkan banyak kompleksitas perutean seperti peering VPC non-transitif, penggunaan alamat IP yang besar, dan eksposur berlebihan resource di VPC yang di-peering.

Private Service Connect (PSC) adalah metode konektivitas yang memungkinkan produsen mengekspos layanan melalui satu endpoint yang disediakan konsumen di VPC workload. Hal ini menghilangkan banyak masalah yang dihadapi pengguna dengan peering VPC. Meskipun banyak layanan baru yang dibuat dengan PSC, masih banyak layanan yang ada sebagai layanan VPC Peering.

Google Cloud dengan senang hati memperkenalkan jalur migrasi untuk layanan yang telah Anda buat melalui Peering VPC untuk beralih ke arsitektur berbasis PSC. Dengan metode migrasi ini, alamat IP untuk layanan produsen yang diekspos melalui peering VPC dipertahankan hingga arsitektur berbasis PSC sehingga hanya ada sedikit perubahan yang diperlukan untuk konsumen. Ikuti codelab ini untuk mempelajari langkah-langkah teknis dalam melakukan migrasi ini.

CATATAN: Jalur migrasi ini hanya untuk layanan yang produsen dan konsumennya berada dalam organisasi Google Cloud yang sama. Untuk layanan Google Cloud atau layanan pihak ketiga yang menggunakan peering VPC, layanan tersebut akan memanfaatkan metode migrasi serupa, tetapi akan disesuaikan untuk layanan itu sendiri. Hubungi pihak yang sesuai untuk menanyakan jalur migrasi untuk jenis layanan ini.

Yang akan Anda pelajari

  • Cara menyiapkan layanan berbasis peering VPC
  • Cara menyiapkan layanan berbasis PSC
  • Menggunakan Internal-Ranges API untuk melakukan migrasi subnet melalui Peering VPC guna mencapai migrasi layanan dari Peering VPC ke PSC.
  • Memahami kapan periode nonaktif harus terjadi untuk migrasi layanan
  • Langkah-langkah penghapusan migrasi

Yang Anda butuhkan

  • Project Google Cloud dengan izin Pemilik

2. Topologi codelab

Untuk mempermudah, codelab ini memusatkan semua resource dalam satu project. Dalam codelab, akan dicatat tindakan apa yang perlu dilakukan di sisi produsen dan tindakan apa yang perlu dilakukan di sisi konsumen jika produsen dan konsumen berada dalam project yang berbeda.

Codelab ini akan memiliki 4 status.

7dbf27cf215f9703.png

Status 1 adalah status Peering VPC. Akan ada dua VPC, consumer-vpc dan producer-vpc yang akan di-peering. Producer-vpc akan memiliki layanan Apache sederhana yang diekspos melalui Load Balancer Passthrough Jaringan internal. Consumer-vpc akan memiliki satu consumer-vm untuk tujuan pengujian.

7f64427c0e59d417.png

Status 2 adalah status pengujian PSC. Kita akan membuat aturan penerusan baru dan menggunakan aturan ini untuk dikaitkan dengan Lampiran Layanan. Kemudian, kita akan membuat endpoint PSC pengujian di consumer-vpc untuk menguji apakah layanan PSC kita berfungsi seperti yang diharapkan.

98c324c59c1fbf68.png

State 3 adalah status migrasi. Kami akan mencadangkan rentang subnet di producer-vpc tempat layanan berbasis VPC Peering di-deploy untuk digunakan di consumer-vpc. Kemudian, kita akan membuat endpoint PSC baru dengan alamat IP yang sama dengan aturan penerusan yang sudah ada di producer-vpc.

a64ab7b69132c722.png

Status 4 adalah status PSC akhir. Kita akan membersihkan endpoint PSC pengujian dan menghapus peering VPC antara consumer-vpc dan producer-vpc.

3. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

55efc1aaa7a4d3ad.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

7ffe5cbb04455448.png

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.

4. Sebelum memulai

Mengaktifkan API

Di dalam Cloud Shell, pastikan project Anda sudah disiapkan dan konfigurasi variabel.

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

Aktifkan semua layanan yang diperlukan

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

5. Buat Jaringan VPC Produsen (Aktivitas Produsen)

Jaringan VPC

Dari Cloud Shell

gcloud compute networks create producer-vpc \
    --subnet-mode=custom

Buat Subnet

Dari 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

Membuat Cloud Router dan Cloud NAT Produsen

Dari 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

Membuat Kebijakan Firewall Jaringan Produsen dan Aturan Firewall

Dari 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

Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang ingin Anda akses menggunakan IAP.
  • Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.

Dari 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

Kita juga akan membuat dua aturan lagi yang mengizinkan health check Load Balancer ke layanan serta mengizinkan traffic jaringan dari VM yang akan terhubung dari consumer-vpc.

Dari 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. Penyiapan Layanan Produsen (Aktivitas Produsen)

Kita akan membuat layanan produsen dengan satu VM yang menjalankan server web Apache yang akan ditambahkan ke Grup Instance Tidak Terkelola yang di-front-end dengan Load Balancer Passthrough Jaringan Internal Regional.

Buat VM dan Grup Instance Tidak Terkelola

Dari 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'

Dari 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

Buat Load Balancer Passthrough Jaringan Internal Regional

Dari 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. Membuat Jaringan VPC Konsumen (Aktivitas Konsumen)

Jaringan VPC

Dari Cloud Shell

gcloud compute networks create consumer-vpc \
    --subnet-mode=custom

Buat Subnet

Dari Cloud Shell

gcloud compute networks subnets create consumer-vm-subnet \
    --network=consumer-vpc \
    --range=10.0.1.0/28 \
    --region=$region

Membuat Kebijakan Firewall Jaringan Konsumen dan Aturan Firewall

Kita akan membuat Kebijakan Firewall Jaringan lain untuk consumer-vpc.

Dari 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. Buat Peer VPC

Aktivitas Produsen

Dari Cloud Shell

gcloud compute networks peerings create producer-vpc-peering \
    --network=producer-vpc \
    --peer-project=$projectid \
    --peer-network=consumer-vpc

Aktivitas Konsumen

Dari Cloud Shell

gcloud compute networks peerings create consumer-vpc-peering \
    --network=consumer-vpc \
    --peer-project=$projectid \
    --peer-network=producer-vpc

Konfirmasi bahwa peering telah dibuat dengan memeriksa daftar rute di consumer-vpc. Anda akan melihat rute untuk consumer-vpc dan producer-vpc.

Aktivitas Konsumen

Dari Cloud Shell

gcloud compute routes list --filter="network=consumer-vpc"

Output yang Diinginkan

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. Membuat Zona DNS (Aktivitas Konsumen)

Kita akan membuat Zona Pribadi Cloud DNS untuk memanggil layanan produsen melalui DNS, bukan melalui alamat IP pribadi, untuk menampilkan contoh yang lebih realistis.

Kita akan menambahkan data A ke layanan yang mengarah ke domain example.com, yaitu service.example.com, ke alamat IP Aturan Penerusan Network Passthrough Load Balancer yang kita buat sebelumnya. Alamat IP Aturan Penerusan tersebut adalah 192.168.0.2.

Dari 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. Menguji Layanan Produsen melalui Peering VPC (Aktivitas Konsumen)

Pada tahap ini, arsitektur State 1 telah dibuat.

Membuat VM consumer-client

Dari Cloud Shell

gcloud compute instances create consumer-client \
   --zone=$zone \
   --subnet=consumer-vm-subnet \
   --no-address

Uji Konektivitas

Dari Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

Dari VM klien konsumen

curl service.example.com

Output yang Diinginkan

I am a Producer Service. 

Dari VM klien konsumen

exit

11. Menyiapkan Layanan untuk Private Service Connect (Aktivitas Produsen)

Setelah menyelesaikan semua langkah penyiapan awal, kita akan mulai menyiapkan layanan yang di-peering VPC untuk migrasi ke Private Service Connect. Di bagian ini, kita akan membuat perubahan pada producer-vpc dengan mengonfigurasi layanan agar diekspos melalui Lampiran Layanan. Kita perlu membuat subnet baru dan aturan penerusan baru dalam subnet tersebut agar dapat memigrasikan subnet yang ada ke consumer-vpc untuk mempertahankan alamat IP layanan yang ada.

Buat subnet tempat IP aturan penerusan load balancer baru akan dihosting.

Dari Cloud Shell

gcloud compute networks subnets create producer-psc-fr-subnet \
    --network=producer-vpc \
    --range=10.0.2.64/28 \
    --region=$region

Buat alamat IP internal aturan penerusan load balancer.

Dari Cloud Shell

gcloud compute addresses create producer-psc-ip \
  --region $region \
  --subnet producer-psc-fr-subnet \
  --addresses 10.0.2.66

Buat aturan penerusan load balancer baru. Aturan ini dikonfigurasi untuk menggunakan layanan backend dan health check yang sama dengan yang kita konfigurasi sebelumnya.

Dari 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

psc-nat-subnet akan dikaitkan dengan Lampiran Layanan PSC untuk tujuan Network Address Translation. Untuk kasus penggunaan produksi, subnet ini harus disesuaikan ukurannya dengan tepat untuk mendukung jumlah endpoint yang terlampir. Lihat dokumentasi penetapan ukuran subnet NAT PSC untuk mengetahui informasi selengkapnya.

Dari 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

Kita harus menambahkan aturan firewall tambahan ke Kebijakan Firewall Jaringan untuk mengizinkan traffic dari psc-nat-subnet. Saat mengakses layanan melalui PSC, psc-nat-subnet adalah tempat asal traffic.

Dari 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

Buat lampiran layanan dan catat URI lampiran layanan untuk mengonfigurasi endpoint PSC di bagian berikutnya.

Dari 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

Dari Cloud Shell

gcloud compute service-attachments describe producer-sa --region=$region

Contoh Output

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. Hubungkan Endpoint PSC Konsumen "test" ke Layanan Produsen dan Uji (Aktivitas Konsumen)

Arsitektur kini berada di State 2.

Pada tahap ini, layanan produsen yang ada yang diekspos melalui VPC Peering masih aktif dan berfungsi dengan baik dalam skenario Produksi. Kita akan membuat endpoint PSC "test" untuk memastikan bahwa Lampiran Layanan yang diekspos berfungsi dengan baik sebelum kita memulai periode gangguan untuk memigrasikan subnet Peering VPC saat ini ke VPC konsumen. Konektivitas status akhir kita akan berupa endpoint PSC dengan alamat IP yang sama dengan aturan penerusan saat ini untuk layanan berbasis VPC Peering.

Buat Endpoint PSC

Dari Cloud Shell

gcloud compute addresses create test-psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-vm-subnet \
    --addresses 10.0.1.3

Target layanan di bawah akan menjadi URI Lampiran Layanan yang Anda catat pada langkah terakhir.

Dari 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

Menguji Endpoint PSC "test"

Dari Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

Dari klien konsumen

curl 10.0.1.3

Output yang Diinginkan

I am a Producer Service. 

Dari klien konsumen

exit

13. Memigrasikan Subnet Aturan Penerusan Produsen yang Ada

Melakukan langkah-langkah ini akan menyebabkan gangguan pada layanan Produsen berbasis VPC Peering aktif. Sekarang kita akan memigrasikan subnet aturan penerusan dari producer-vpc ke consumer-vpc menggunakan Internal Ranges API. Tindakan ini akan mengunci subnet agar tidak digunakan dalam jangka waktu sementara saat kita menghapus subnet di producer-vpc dan menetapkannya hanya untuk tujuan migrasi untuk pembuatan di consumer-vpc.

Internal Range API mengharuskan Anda mencadangkan subnet aturan penerusan peering VPC yang ada (producer-fr-subnet, 192.168.0.0/28) dan menetapkan nama subnet target di consumer-vpc (consumer-psc-subnet). Kita akan membuat subnet baru di consumer-vpc dengan nama ini dalam beberapa langkah.

Mereservasi producer-fr-subnet untuk migrasi

Aktivitas Produsen

Dari 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

Jalankan deskripsi pada rentang internal yang kita buat untuk melihat status subnet.

Aktivitas Produsen

Dari Cloud Shell

gcloud network-connectivity internal-ranges describe producer-peering-internal-range

Contoh Output

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

Hapus Aturan Penerusan dan Subnet berbasis VPC Peering

Aktivitas Produsen

Dari 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

Memigrasikan Subnet

Migrasikan subnet ke consumer-vpc dengan membuat subnet baru menggunakan internal-range yang kita buat sebelumnya. Nama subnet ini harus sama dengan nama yang kita targetkan sebelumnya (consumer-psc-subnet). Tujuan khusus PEER_MIGRATION mencatat bahwa subnet dicadangkan untuk migrasi subnet antara VPC yang di-peering. Dengan tanda tujuan ini, subnet ini hanya dapat berisi alamat IP statis yang dicadangkan dan endpoint PSC.

Aktivitas Konsumen

Dari 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. Membuat Endpoint PSC Status Akhir (Aktivitas Konsumen)

Pada tahap ini, layanan Produser masih tidak berfungsi. Subnet yang baru saja kita buat masih dikunci dan hanya dapat digunakan untuk tujuan migrasi tertentu. Anda dapat mengujinya dengan mencoba membuat VM di subnet ini. Pembuatan VM akan gagal.

Dari Cloud Shell

gcloud compute instances create test-consumer-vm \
    --zone=$zone \
    --subnet=consumer-psc-subnet \
    --no-address

Output yang Diinginkan

ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - Subnetwork must have purpose=PRIVATE.

Kita hanya dapat menggunakan subnet ini untuk membuat endpoint PSC. Perhatikan bahwa alamat IP yang kita buat menggunakan IP yang sama dengan aturan penerusan yang digunakan layanan produsen kita melalui VPC Peer.

Dari Cloud Shell

gcloud compute addresses create psc-endpoint-ip \
    --region=$region \
    --subnet=consumer-psc-subnet \
    --addresses 192.168.0.2

Sekali lagi, Anda harus menggunakan URI Lampiran Layanan yang sama dengan yang Anda catat sebelumnya dan yang juga digunakan untuk membuat Endpoint PSC "test".

Dari 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. Menguji Endpoint PSC Status Akhir (Aktivitas Konsumen)

Pada tahap ini, Anda berada di arsitektur State 3.

Dari Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

Dari VM klien konsumen

curl service.example.com

Output yang Diinginkan

I am a Producer Service. 

Dari VM klien konsumen

exit

Pada tahap ini, pemadaman telah berakhir dan layanan sudah aktif kembali. Perhatikan bahwa kami tidak perlu melakukan perubahan apa pun pada DNS yang ada. Tidak ada perubahan klien sisi konsumen yang perlu dilakukan. Aplikasi dapat melanjutkan operasi ke layanan yang dimigrasikan.

16. Pembersihan Migrasi

Untuk menyelesaikan migrasi, ada beberapa langkah pembersihan yang perlu kita lakukan. Kita harus menghapus dan membuka kunci resource.

Membuka kunci subnet Rentang Internal

Tindakan ini akan membuka kunci subnet yang dimigrasikan sehingga tujuannya dapat diubah dari "PEER_MIGRATION" menjadi "PRIVATE".

Aktivitas Produsen

Dari Cloud Shell

gcloud network-connectivity internal-ranges delete producer-peering-internal-range

Aktivitas Konsumen

Dari Cloud Shell

gcloud compute networks subnets update consumer-psc-subnet \
    --region=$region \
    --purpose=PRIVATE

gcloud compute networks subnets describe consumer-psc-subnet --region=$region

Contoh Output

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

Hapus VPC Peer

Aktivitas Produsen

Dari Cloud Shell

gcloud compute networks peerings delete producer-vpc-peering \
    --network=producer-vpc

Aktivitas Konsumen

Dari Cloud Shell

gcloud compute networks peerings delete consumer-vpc-peering \
        --network=consumer-vpc

Menghapus Endpoint PSC "test"

Consumer-Activity

Dari Cloud Shell

gcloud compute forwarding-rules delete test-psc-endpoint --region=$region
gcloud compute addresses delete test-psc-endpoint-ip --region=$region

17. Pengujian Akhir Setelah Pembersihan Migrasi (Aktivitas Konsumen)

Pada titik ini, arsitektur State 4 (status akhir) telah tercapai.

Uji konektivitas Endpoint PSC lagi untuk memastikan tidak ada efek samping yang diamati dari pembersihan migrasi.

Dari Cloud Shell

gcloud compute ssh \
    --zone "$zone" "consumer-client" \
    --tunnel-through-iap \
    --project $projectid

Dari VM klien konsumen

curl service.example.com

Output yang Diinginkan

I am a Producer Service. 

Dari VM klien konsumen

exit

BERHASIL!

18. Langkah-langkah pembersihan

Dari 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. Selamat!

Selamat, Anda telah menyelesaikan codelab.

Yang telah kita bahas

  • Cara menyiapkan layanan berbasis peering VPC
  • Cara menyiapkan layanan berbasis PSC
  • Menggunakan Internal-Ranges API untuk melakukan migrasi subnet melalui Peering VPC guna mencapai migrasi layanan dari Peering VPC ke PSC.
  • Memahami kapan periode nonaktif harus terjadi untuk migrasi layanan
  • Langkah-langkah penghapusan migrasi