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.

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.

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.

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.

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



- 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_IDolarak 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.
- 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:

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:

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ı