Private Service Connect: VPC Eşlemeden Private Service Connect'e Taşıma

1. Giriş

VPC eşleme, üreticilerin kullanıcılarına hizmet tüketimi sunmak için kullandığı yaygın bir yöntemdir. Ancak VPC eşlemesi kullanıldığında, geçişli olmayan VPC eşlemesi, büyük IP adresi tüketimi ve eşlenmiş bir VPC'deki kaynakların aşırı gösterilmesi gibi birçok yönlendirme karmaşıklığı ortaya çıkar.

Private Service Connect (PSC), üreticilerin bir hizmeti, tüketicinin iş yükü VPC'sinde sağladığı tek bir uç nokta üzerinden kullanıma sunmasına olanak tanıyan bir bağlantı yöntemidir. Bu, kullanıcıların VPC eşleme ile ilgili karşılaştığı birçok sorunu ortadan kaldırır. PSC ile birçok yeni hizmet oluşturulurken VPC eşleme hizmetleri olarak varlığını sürdüren birçok hizmet de vardır.

Google Cloud, VPC eşlemesi aracılığıyla oluşturduğunuz hizmetler için PSC tabanlı bir mimariye geçiş yapmanızı sağlayacak bir taşıma yolu sunmaktan heyecan duyuyor. Bu taşıma yöntemi kullanıldığında, VPC eşleme aracılığıyla kullanıma sunulan üretici hizmetinin IP adresi, PSC tabanlı mimari boyunca korunur. Bu nedenle, tüketici için minimum değişiklik yapılması gerekir. Bu taşıma işlemini gerçekleştirmenin teknik adımlarını öğrenmek için bu codelab'i takip edin.

NOT: Bu taşıma yolu yalnızca üreticinin ve tüketicinin aynı Google Cloud kuruluşunda bulunduğu hizmetler için geçerlidir. VPC eşlemesi kullanan tüm Google Cloud hizmetleri veya üçüncü taraf hizmetleri benzer bir taşıma yönteminden yararlanır ancak bu yöntem, hizmetin kendisine göre özelleştirilir. Bu tür hizmetlerin taşıma yolu hakkında bilgi edinmek için lütfen ilgili taraflarla iletişime geçin.

Neler öğreneceksiniz?

  • VPC eşlemeye dayalı hizmet oluşturma
  • PSC tabanlı hizmet oluşturma
  • VPC eşlemesi üzerinden alt ağ taşıma işlemi gerçekleştirerek VPC eşlemesinden PSC hizmetine taşıma işlemi yapmak için Internal-Ranges API'yi kullanma.
  • Hizmet taşıma için kapalı kalma süresinin ne zaman gerçekleşmesi gerektiğini anlama
  • Taşıma işleminden sonra temizleme adımları

Gerekenler

  • Sahip izinlerine sahip Google Cloud projesi

2. Codelab topolojisi

Bu codelab, kolaylık sağlamak için tüm kaynakları tek bir projede toplar. Üreticiler ve tüketiciler farklı projelerde yer alıyorsa üretici tarafında hangi işlemlerin, tüketici tarafında ise hangi işlemlerin yapılması gerektiği codelab'de belirtilir.

Bu codelab 4 aşamadan oluşur.

7dbf27cf215f9703.png

1. durum, VPC eşleme durumudur. Birlikte eşlenecek iki VPC (consumer-vpc ve producer-vpc) olacaktır. Producer-vpc, dahili bir ağ geçişli yük dengeleyici aracılığıyla kullanıma sunulan basit bir Apache hizmetine sahip olur. Consumer-vpc, test amacıyla tek bir consumer-vm'ye sahip olacaktır.

7f64427c0e59d417.png

2. durum, PSC test durumudur. Yeni bir yönlendirme kuralı oluşturup bu kuralı hizmet ekimizle ilişkilendirmek için kullanacağız. Ardından, PSC hizmetimizin beklendiği gibi çalıştığını test etmek için consumer-vpc'de bir test PSC uç noktası oluşturacağız.

98c324c59c1fbf68.png

3. durum, taşıma durumudur. VPC eşlemeye dayalı hizmetin dağıtıldığı üretici VPC'deki alt ağ aralığını, tüketici VPC'de kullanılmak üzere ayırırız. Ardından, producer-vpc'deki önceden var olan iletim kuralıyla aynı IP adresine sahip yeni bir PSC uç noktası oluştururuz.

a64ab7b69132c722.png

4. durum, son PSC durumudur. Test PSC uç noktasını temizleyip consumer-vpc ile producer-vpc arasındaki VPC eşlemesini sileceğiz.

3. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

7ffe5cbb04455448.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

4. Başlamadan önce

API'leri etkinleştir

Cloud Shell'de projenizin ayarlandığından ve değişkenlerin yapılandırıldığından emin olun.

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

Gerekli tüm hizmetleri etkinleştirin

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

5. Üretici VPC Ağı Oluşturma (Üretici Etkinliği)

VPC Ağı

Cloud Shell'den

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

Alt Ağ Oluşturma

Cloud Shell'den

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

Üretici Cloud Router ve Cloud NAT oluşturma

Cloud Shell'den

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

Üretici Ağı Güvenlik Duvarı Politikası ve Güvenlik Duvarı Kuralları Oluşturma

Cloud Shell'den

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

IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdaki özellikleri içeren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişmek istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından gelen giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.

Cloud Shell'den

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

Ayrıca, yük dengeleyici durum denetimlerinin hizmete izin vermesinin yanı sıra consumer-vpc'den bağlanacak sanal makinelerden gelen ağ trafiğine de izin veren iki kural daha oluşturacağız.

Cloud Shell'den

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. Üretici hizmeti kurulumu (üretici etkinliği)

Bölgesel dahili ağ geçişli yük dengeleyici ile ön uçta bulunan yönetilmeyen örnek grubuna eklenecek, Apache web sunucusu çalıştıran tek bir sanal makineye sahip bir üretici hizmeti oluşturacağız.

Sanal makineyi ve yönetilmeyen örnek grubunu oluşturma

Cloud Shell'den

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'

Cloud Shell'den

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

Bölgesel dahili ağ geçişi yük dengeleyicisi oluşturma

Cloud Shell'den

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. Tüketici VPC Ağı Oluşturma (Tüketici Etkinliği)

VPC Ağı

Cloud Shell'den

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

Alt Ağ Oluştur

Cloud Shell'den

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

Tüketici Ağı Güvenlik Duvarı Politikası ve Güvenlik Duvarı Kuralları Oluşturma

consumer-vpc için başka bir ağ güvenlik duvarı politikası oluşturacağız.

Cloud Shell'den

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. VPC eşlemesi oluşturma

Üretici Etkinliği

Cloud Shell'den

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

Tüketici Etkinliği

Cloud Shell'den

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

Tüketici VPC'sindeki rotaların listesini kontrol ederek eşlemenin oluşturulduğunu onaylayın. Hem consumer-vpc hem de producer-vpc için rotaları görmeniz gerekir.

Tüketici Etkinliği

Cloud Shell'den

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

Beklenen Çıkış

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. DNS alt bölgesi oluşturma (tüketici etkinliği)

Daha gerçekçi bir örnek göstermek için üretici hizmetini özel bir IP adresi yerine DNS üzerinden çağırmak üzere bir Cloud DNS özel bölgesi oluşturacağız.

example.com alanına, service.example.com'u daha önce oluşturduğumuz Network Passthrough Load Balancer iletme kuralı IP adresine yönlendiren bir A kaydı ekleyeceğiz. İletim kuralı IP adresi 192.168.0.2'dir.

Cloud Shell'den

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. VPC eşlemesi üzerinden üretici hizmetini test etme (tüketici etkinliği)

Bu noktada, 1. durum mimarisi oluşturulmuştur.

Tüketici istemcisi sanal makinesi oluşturma

Cloud Shell'den

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

Bağlantıyı Test Etme

Cloud Shell'den

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

Tüketici istemci sanal makinesinden

curl service.example.com

Beklenen Çıkış

I am a Producer Service. 

Tüketici istemci sanal makinesinden

exit

11. Hizmeti Private Service Connect için hazırlama (üretici etkinliği)

İlk kurulum adımlarının tamamlanmasının ardından, VPC eşlemesi yapılan hizmeti Private Service Connect'e taşımaya hazırlamaya başlayacağız. Bu bölümde, hizmetin bir hizmet eki aracılığıyla kullanıma sunulacak şekilde yapılandırılmasıyla üretici VPC'sinde değişiklikler yapacağız. Hizmetin mevcut IP adresini korumak için mevcut alt ağı consumer-vpc'ye taşıyabilmemiz amacıyla yeni bir alt ağ ve bu alt ağda yeni bir yönlendirme kuralı oluşturmamız gerekir.

Yeni yük dengeleyici iletme kuralı IP'sinin barındırılacağı alt ağı oluşturun.

Cloud Shell'den

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

Yük dengeleyici iletim kuralı dahili IP adresini oluşturun.

Cloud Shell'den

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

Yeni yük dengeleyici iletim kuralını oluşturun. Bu kural, daha önce yapılandırdığımız arka uç hizmetini ve durum denetimlerini kullanacak şekilde yapılandırılır.

Cloud Shell'den

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, Ağ Adresi Çevrimi amacıyla PSC hizmet ekiyle ilişkilendirilir. Üretim kullanım alanlarında bu alt ağ, eklenen uç nokta sayısını destekleyecek şekilde uygun boyutta olmalıdır. Daha fazla bilgi için PSC NAT alt ağ boyutlandırma belgelerine bakın.

Cloud Shell'den

gcloud compute networks subnets create psc-nat-subnet \
    --network=producer-vpc \
    --range=10.100.100.0/28 \
    --region=$region \
    --purpose=PRIVATE_SERVICE_CONNECT

Artık psc-nat-subnet'ten gelen trafiğe izin vermek için Ağ Güvenlik Duvarı Politikası'na ek bir güvenlik duvarı kuralı eklememiz gerekiyor. Hizmete PSC üzerinden erişildiğinde trafik, psc-nat-subnet'ten alınır.

Cloud Shell'den

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

Hizmet ekini oluşturun ve bir sonraki bölümde PSC uç noktasını yapılandırmak için hizmet eki URI'sini not edin.

Cloud Shell'den

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

Cloud Shell'den

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

Örnek Çıkış

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. "test" adlı tüketici PSC uç noktasını üretici hizmetine bağlama ve test etme (tüketici etkinliği)

Mimari artık 2. durumda.

Bu noktada, VPC eşleme üzerinden kullanıma sunulan mevcut üretici hizmeti hâlâ yayında ve üretim senaryosunda düzgün şekilde çalışıyor. Mevcut VPC eşleme alt ağını tüketici VPC'sine taşımak için kesinti dönemi başlatmadan önce, kullanıma sunulan hizmet eklerinin düzgün şekilde çalıştığından emin olmak için bir "test" PSC uç noktası oluşturacağız. Son durum bağlantımız, VPC eşleme tabanlı hizmet için geçerli yönlendirme kuralıyla aynı IP adresine sahip bir PSC uç noktası olacaktır.

PSC uç noktası oluşturma

Cloud Shell'den

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

Aşağıdaki hedef hizmet, son adımda not aldığınız hizmet eki URI'si olacaktır.

Cloud Shell'den

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

"Test" PSC uç noktasını test etme

Cloud Shell'den

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

Tüketici-müşteriden

curl 10.0.1.3

Beklenen Çıkış

I am a Producer Service. 

Tüketici-müşteriden

exit

13. Mevcut üretici yönlendirme kuralı alt ağını taşıma

Bu adımların uygulanması, canlı VPC eşleme tabanlı üretici hizmetinde kesintiye neden olur. Şimdi Internal Ranges API'yi kullanarak yönlendirme kuralı alt ağını üretici VPC'den tüketici VPC'ye taşıyacağız. Bu işlem, üretici VPC'sindeki alt ağı silip tüketici VPC'sinde oluşturma amacıyla yalnızca taşıma için belirlediğimiz süre boyunca alt ağın kullanılmasını engeller.

Dahili aralık API'si, mevcut VPC eşleme yönlendirme kuralı alt ağını (producer-fr-subnet, 192.168.0.0/28) ayırmanızı ve tüketici VPC'sinde (consumer-psc-subnet) bir hedef alt ağ adı belirtmenizi gerektirir. Birkaç adımda consumer-vpc'de bu ada sahip yeni bir alt ağ oluştururuz.

Taşıma için producer-fr-subnet'i ayırtın

Üretici Etkinliği

Cloud Shell'den

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

Alt ağın durumunu görüntülemek için oluşturduğumuz internal-range üzerinde bir açıklama çalıştırın.

Üretici Etkinliği

Cloud Shell'den

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

Örnek Çıkış

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

VPC eşlemeye dayalı iletim kuralını ve alt ağı silme

Üretici Etkinliği

Cloud Shell'den

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

Alt ağı taşıma

Daha önce oluşturduğumuz internal-range kullanarak yeni bir alt ağ oluşturarak alt ağı consumer-vpc'ye taşıyın. Bu alt ağın adı, daha önce hedeflediğimiz adla (consumer-psc-subnet) aynı olmalıdır. PEER_MIGRATION notunun asıl amacı, alt ağın eşlenmiş VPC'ler arasında alt ağ taşıma için ayrıldığını belirtmektir. Bu amaç işaretiyle, bu alt ağ yalnızca ayrılmış statik IP adresleri ve PSC uç noktaları içerebilir.

Tüketici Etkinliği

Cloud Shell'den

gcloud compute networks subnets create consumer-psc-subnet \
  --purpose=PEER_MIGRATION \
  --network=consumer-vpc \
  --range=192.168.0.0/28 \
  --region=$region

14. Son durum PSC uç noktasını oluşturma (tüketici etkinliği)

Bu noktada Producer hizmeti hâlâ kapalıdır. Yeni oluşturduğumuz alt ağ hâlâ kilitli ve yalnızca taşıma amacıyla kullanılabilir. Bu alt ağda sanal makine oluşturmayı deneyerek bunu test edebilirsiniz. Sanal makine oluşturma işlemi başarısız olur.

Cloud Shell'den

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

Beklenen Çıkış

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

Bu alt ağı yalnızca bir PSC uç noktası oluşturmak için kullanabiliriz. Oluşturduğumuz IP adresinin, üretici hizmetimizin VPC eşlemesi üzerinden kullandığı yönlendirme kuralıyla aynı IP'yi kullandığını unutmayın.

Cloud Shell'den

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

Yine, daha önce not aldığınız ve "test" PSC uç noktasını oluşturmak için de kullanılan aynı hizmet ekleme URI'sini kullanmanız gerekir.

Cloud Shell'den

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. Son durum PSC uç noktasını test etme (tüketici etkinliği)

Bu noktada, 3. durum mimarisindesiniz.

Cloud Shell'den

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

Tüketici istemci sanal makinesinden

curl service.example.com

Beklenen Çıkış

I am a Producer Service. 

Tüketici istemci sanal makinesinden

exit

Bu noktada kesinti sona erer ve hizmet yeniden kullanılabilir. Mevcut DNS'de herhangi bir değişiklik yapmamız gerekmediğini belirtmek isteriz. Tüketici tarafında herhangi bir istemci değişikliği yapılması gerekmez. Uygulamalar, işlemleri taşınan hizmette devam ettirebilir.

16. Taşıma İşlemi Temizliği

Taşıma işlemini tamamlamak için birkaç temizleme adımı uygulamamız gerekir. Kaynakları silip kilidini açmamız gerekir.

Dahili aralık alt ağının kilidini açma

Bu işlem, taşınan alt ağın amacının "PEER_MIGRATION"dan "PRIVATE" olarak değiştirilebilmesi için alt ağın kilidini açar.

Üretici Etkinliği

Cloud Shell'den

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

Tüketici Etkinliği

Cloud Shell'den

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

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

Örnek Çıkış

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

VPC eşlerini silme

Üretici Etkinliği

Cloud Shell'den

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

Tüketici Etkinliği

Cloud Shell'den

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

"test" adlı PSC uç noktasını silme

Consumer-Activity

Cloud Shell'den

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

17. Taşıma işleminden sonraki son test (tüketici etkinliği)

Bu noktada, 4. durum mimarisine (son durum) ulaşılmıştır.

Taşıma temizliğinden olumsuz etkiler gözlemlenmediğinden emin olmak için PSC uç nokta bağlantısını tekrar test edin.

Cloud Shell'den

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

Tüketici istemci sanal makinesinden

curl service.example.com

Beklenen Çıkış

I am a Producer Service. 

Tüketici istemci sanal makinesinden

exit

BAŞARILI!

18. Temizleme adımları

Cloud Shell'den

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. Tebrikler!

Codelab'i tamamladığınız için tebrik ederiz.

İşlediğimiz konular

  • VPC eşlemeye dayalı hizmet oluşturma
  • PSC tabanlı hizmet oluşturma
  • VPC eşlemesi üzerinden alt ağ taşıma işlemi gerçekleştirerek VPC eşlemesinden PSC hizmetine taşıma işlemi yapmak için Internal-Ranges API'yi kullanma.
  • Hizmet taşıma için kapalı kalma süresinin ne zaman gerçekleşmesi gerektiğini anlama
  • Taşıma işleminden sonra temizleme adımları