Private Service Connect: Peering VPC ke Migrasi Service Connect Private

Tentang codelab ini
schedule74 menit
subjectTerakhir diperbarui 28 April 2025
account_circleDitulis oleh Lorin Price

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

Private Service Connect (PSC) adalah metode konektivitas yang memungkinkan produsen mengekspos layanan melalui endpoint tunggal yang disediakan konsumen di VPC beban kerja. Dengan demikian, berbagai masalah yang dihadapi pengguna akan terbebas dari peering VPC. Meskipun banyak layanan baru dibuat dengan PSC, masih banyak layanan yang tersedia sebagai layanan Peering VPC.

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 ke arsitektur berbasis PSC sehingga ada perubahan minimal yang diperlukan oleh konsumen. Ikuti codelab ini untuk mempelajari langkah-langkah teknis dalam melakukan migrasi ini.

CATATAN: Jalur migrasi ini hanya untuk layanan yang produsen dan konsumen 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 dengan layanan itu sendiri. Harap hubungi pihak yang sesuai untuk menanyakan tentang jalur migrasi bagi 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 Peering VPC ke migrasi layanan PSC.
  • Memahami kapan periode nonaktif perlu terjadi untuk migrasi layanan
  • Langkah-langkah pembersihan 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 ini, hal tersebut akan disebutkan dalam codelab tentang tindakan apa yang perlu dilakukan di sisi produser 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, yaitu vpc konsumen dan produsen-vpc yang akan di-peering bersama-sama. Producer-vpc akan memiliki layanan Apache sederhana yang diekspos melalui Load Balancer Passthrough Jaringan internal. VM konsumen akan memiliki satu VM konsumen untuk tujuan pengujian.

7f64427c0e59d417.pngS

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

98c324c59c1fbf68.pngS

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

a64ab7b69132c722.png

Status 4 adalah status PSC akhir. Kita akan membersihkan endpoint PSC pengujian dan menghapus peering VPC antara vpc konsumen dan produsen-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 dikonfigurasi 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. Membuat Jaringan VPC Produsen (Aktivitas Produsen)

Jaringan VPC

Dari Cloud Shell

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

Membuat 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 Producer Cloud Router dan Cloud NAT

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

Agar IAP dapat terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan 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

Kami juga akan membuat dua aturan lagi yang mengizinkan health check Load Balancer ke layanan, serta mengizinkan traffic jaringan dari VM yang akan terhubung dari vpc konsumen.

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 produser dengan satu VM yang menjalankan server web Apache yang akan ditambahkan ke Grup Instance yang Tidak Dikelola yang ditangani dengan Load Balancer Passthrough Jaringan Internal Regional.

Membuat VM dan Grup Instance yang Tidak Dikelola

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

Membuat 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 vpc konsumen.

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

Pastikan peering dibuat dengan memeriksa daftar rute di konsumen-vpc. Anda akan melihat rute untuk vpc konsumen dan produsen-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 Cloud DNS Private Zone untuk memanggil layanan produser melalui DNS, bukan melalui alamat IP pribadi untuk menampilkan contoh yang lebih realistis.

Kita akan menambahkan data A ke domain example.com yang mengarahkan service.example.com ke alamat IP Aturan Penerusan Load Balancer Jaringan yang kita buat sebelumnya. Alamat IP Aturan Penerusan itu 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 Peer VPC (Aktivitas Konsumen)

Pada tahap ini, arsitektur Status 1 telah dibuat.

Membuat VM klien-konsumen

Dari Cloud Shell

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

Menguji 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, sekarang kita akan mulai menyiapkan layanan VPC-Peered untuk migrasi ke Private Service Connect. Di bagian ini, kita akan membuat perubahan pada produs-vpc dengan mengonfigurasi layanan yang akan diekspos melalui Lampiran Layanan. Kita harus membuat subnet baru dan aturan penerusan baru dalam subnet tersebut agar dapat memigrasikan subnet yang ada ke vpc konsumen agar alamat IP layanan yang ada tetap utuh.

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

Membuat aturan penerusan load balancer baru. Aturan ini dikonfigurasi untuk menggunakan layanan backend dan health check yang sama dengan yang dikonfigurasi 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 Penafsiran Alamat Jaringan. Untuk kasus penggunaan produksi, subnet ini harus memiliki ukuran yang tepat untuk mendukung jumlah endpoint yang terpasang. Lihat dokumentasi pengukuran subnet NAT PSC untuk 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 traffic akan bersumber.

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

Arsitekturnya sekarang berada di Status 2.

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

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

Layanan target di bawah adalah URI Lampiran Layanan yang Anda catat di 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 "uji"

Dari Cloud Shell

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

Dari konsumen-klien

curl 10.0.1.3

Output yang Diinginkan

I am a Producer Service. 

Dari konsumen-klien

exit

13. Memigrasikan Subnet Aturan Penerusan Produsen yang Ada

Jika langkah-langkah ini dilakukan, penonaktifan layanan Producer berbasis Peering VPC live akan dimulai. Sekarang kita akan memigrasikan subnet aturan penerusan dari prod-vpc ke vpc konsumen menggunakan Internal Ranges API. Ini akan mengunci subnet agar tidak digunakan pada periode sementara saat kami menghapus subnet di produs-vpc dan menetapkannya hanya untuk tujuan migrasi untuk pembuatan di vpc konsumen.

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

Mencadangkan produser-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 di 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

Menghapus Aturan Penerusan dan Subnet berbasis Peering VPC

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 vpc konsumen dengan membuat subnet baru menggunakan rentang internal 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 di antara VPC yang di-peering. Dengan flag tujuan ini, subnet ini hanya dapat berisi alamat IP statis dan endpoint PSC yang dicadangkan.

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 Producer masih nonaktif. Subnet yang baru saja kita buat masih terkunci 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 oleh layanan produsen melalui Peer VPC.

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 "pengujian".

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 Status 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 layanan telah berakhir dan layanan telah diaktifkan kembali. Perhatikan bahwa kita tidak perlu membuat 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 kami lakukan. Kita harus menghapus dan membuka akses ke resource.

Membuka 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

Menghapus Peer VPC

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"

Aktivitas-Konsumen

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 Terakhir Setelah Pembersihan Migrasi (Aktivitas Konsumen)

Pada tahap ini, arsitektur Status 4 (status akhir) telah tercapai.

Uji lagi konektivitas PSC Endpoint untuk memastikan tidak ada efek merugikan yang teramati 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 Peering VPC ke migrasi layanan PSC.
  • Memahami kapan periode nonaktif perlu terjadi untuk migrasi layanan
  • Langkah-langkah pembersihan migrasi