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

Bu codelab hakkında
schedule74 dakika
subjectSon güncelleme 28 Nisan 2025
account_circleYazan: Lorin Price

VPC Eşleme, üreticilerin kullanıcılarına hizmet tüketimi sunmaları için yaygın olarak kullanılan bir yöntemdir. Ancak VPC eşlemenin kullanılmasıyla birlikte geçişli olmayan VPC eşleme, büyük IP adresi tüketimi ve eşleşen VPC'de kaynakların aşırı maruz kalması 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ını sağlayan bir bağlantı yöntemidir. Bu sayede, kullanıcıların VPC eşlemede karşılaştıkları birçok sorun ortadan kalkar. PSC ile birçok yeni hizmet oluşturulsa da VPC Eşleme hizmetleri olarak hâlâ birçok hizmet mevcuttur.

Google Cloud, PSC tabanlı bir mimariye geçiş yapmak üzere VPC Eşleme üzerinden oluşturduğunuz hizmetler için bir taşıma yolu sunmaktan heyecan duyuyor. Bu taşıma yöntemi kullanılarak, VPC eşleme üzerinden kullanıma sunulan üretici hizmetinin IP adresi, PSC tabanlı mimariyle korunur. Böylece tüketici için gereken minimum düzeyde değişiklik olur. Bu taşıma işlemini gerçekleştirmeyle ilgili teknik adımları öğrenmek için bu codelab'deki adımları uygulayın.

NOT: Bu taşıma yolu yalnızca üretici ve tüketicinin aynı Google Cloud kuruluşunda bulunduğu hizmetler içindir. VPC eşleme kullanan tüm Google Cloud hizmetleri veya üçüncü taraf hizmetleri için benzer bir taşıma yöntemi kullanılır ancak bu yöntem hizmetin kendisi için ö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şleme tabanlı hizmet ayarlama
  • PSC tabanlı bir hizmetin kurulumu
  • VPC Eşleme'den PSC'ye hizmet taşıma işlemi gerçekleştirmek üzere VPC Eşleme üzerinden alt ağ taşıma işlemi gerçekleştirmek için Internal-Ranges API'yi kullanma.
  • Hizmet taşıma işlemi için kapalı kalma süresinin ne zaman gerçekleşmesi gerektiğini anlama
  • Taşıma işleminde temizlik adımları

Gerekenler

  • Sahip izinleri olan Google Cloud projesi

2. Codelab topolojisi

Bu codelab, kolaylık sağlamak amacıyla tüm kaynakları tek bir projede topluyor. Bu, codelab'de, yapımcı tarafında hangi işlemlerin, yapımcıların ve tüketicilerin farklı projelerde olmaları durumunda ise tüketici tarafında gerçekleştirilmesi gereken eylemlerin belirtilmiştir.

Bu codelab'de 4 durum bulunur.

7dbf27cf215f9703.png

Durum 1, VPC Eşleme durumudur. Birlikte eşlenecek iki VPC (tüketici-vpc ve üretici-vpc) olacaktır. Producer-vpc, dahili bir Ağ Geçişi Yük Dengeleyicisi aracılığıyla kullanıma sunulan basit bir Apache hizmetine sahip olacaktır. Consumer-vpc, test amacıyla tek bir tüketici sanal makinesine sahip olacaktır.

7f64427c0e59d417.png

Durum 2, PSC test durumudur. Yeni bir iletim kuralı oluşturacağız ve bu kuralı hizmet ekimizle ilişkilendirmek için kullanacağız. Ardından, PSC hizmetimizin beklendiği gibi çalışıp çalışmadığını test etmek için consumer-vpc'de bir test PSC uç noktası oluştururuz.

98c324c59c1fbf68.png

Durum 3, taşımanın durumudur. VPC Eşlemeye dayalı hizmetin dağıtıldığı üretici-vpc'deki alt ağ aralığını, tüketici VPC'sinde kullanılmak üzere ayıracağız. Bunun ardından, Generative-vpc'de önceden var olan iletim kuralıyla aynı IP adresine sahip yeni bir PSC uç noktası oluşturacağız.

a64ab7b69132c722.png

Durum 4, son PSC durumudur. Test PSC uç noktasını temizleyeceğiz ve tüketici-vpc ile üretici-vpc arasındaki VPC eşlemesini sileceğiz.

3. Kurulum ve Gereksinimler

Kendine ait tempoda ortam oluşturma

  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ının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu değerlerin üçü hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programına uygundur.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu kod laboratuvarında, 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 sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:

7ffe5cbb04455448.png

Bu sanal makinede ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Hiçbir şey yüklemeniz gerekmez.

4. Başlamadan önce

API'leri etkinleştir

Cloud Shell'de projenizin kurulduğundan emin olun ve değişkenleri yapılandırın.

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ğı (Üretici Etkinliği) oluşturma

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

Producer 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

Yapımcı 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 şartları yerine getiren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından 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 hizmete yük dengeleyici durum denetimlerine izin veren ve tüketici-vpc'den bağlanacak sanal makinelerden gelen ağ trafiğine 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. Yapımcı Hizmeti Kurulumu (Üretici Etkinliği)

Apache web sunucusu çalıştıran tek bir sanal makineye sahip bir üretici hizmeti oluşturacağız. Bu üretici hizmeti, önünde Bölgesel Dahili Ağ Geçişi Yük Dengeleyici bulunan bir Yönetilmeyen Örnek Grubu'na eklenecek.

Sanal Makine ve Yönetilmeyen Örnek Grubu 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 Dengeleyicisini 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ğı (Tüketici Etkinliği) Oluşturma

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şi Oluştur

Yapımcı 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 rota listesini kontrol ederek eşlemenin oluşturulduğunu onaylayın. Hem consumer-vpc hem de Generative-vpc rotalarını göreceksiniz.

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 Bölgesi (Tüketici Etkinliği) Oluşturma

Daha gerçekçi bir örnek göstermek amacıyla özel IP adresi yerine DNS aracılığıyla üretici hizmetini çağırmak için bir Cloud DNS Özel Alt Bölgesi oluşturacağız.

Daha önce oluşturduğumuz Ağ Geçişi Yük Dengeleyici Yönlendirme Kuralı IP adresine, example.com alan adı işaretleme hizmeti.example.com'a bir A kaydı ekleyeceğiz. Yönlendirme 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şi Üzerinden Test Üretici Hizmeti (Tüketici Etkinliği)

Bu noktada State 1 mimarisi oluşturulmuştur.

Tüketici-istemci 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 Et

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. Private Service Connect için Hizmet Hazırlama (Yapımcı Etkinliği)

İlk kurulum adımlarını tamamladığımıza göre artık VPC Eşleşen Hizmetini Private Service Connect'e geçiş için hazırlamaya başlayacağız. Bu bölümde, hizmeti bir Hizmet Eki aracılığıyla kullanıma sunulacak şekilde yapılandırarak Generative-vpc üzerinde değişiklikler yapacağız. Hizmetin mevcut IP adresini değişmeden tutacak şekilde mevcut alt ağı tüketici VPC'sine taşıyabilmemiz için bu alt ağ içinde yeni bir alt ağ ve yeni bir iletim kuralı oluşturmamız gerekir.

Yeni yük dengeleyici iletim 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 aynı arka uç hizmetini ve durum denetimlerini kullanacak şekilde yapılandırılmıştı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 için PSC Hizmet Eki ile ilişkilendirilir. Üretim kullanım alanları için bu alt ağın, ekli uç nokta sayısını destekleyecek şekilde uygun şekilde boyutlandırılması gerekir. 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 alt ağından gelen trafiğe izin vermek için Network Firewall Policy'ye ek bir güvenlik duvarı kuralı eklememiz gerekiyor. Hizmete PSC üzerinden erişilirken trafiğin kaynağı psc-nat-subnet olur.

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 eki oluşturun ve 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" Tüketici PSC Uç Noktasını Üretici Hizmetine ve Testine (Tüketici Etkinliği) bağlama

Mimari artık Durum 2'dir.

Bu noktada, VPC Eşleme üzerinden kullanıma sunulan mevcut üretici hizmeti hâlâ yayında ve Üretim senaryosunda düzgün bir şekilde çalışıyor. Mevcut VPC Eşleme alt ağını tüketici VPC'sine taşımak için bir kesinti süresi başlatmadan önce, açığa çıkan Hizmet Eki'nin düzgün bir şekilde çalıştığından emin olmak amacıyla bir "test" PSC uç noktası oluşturacağız. Son durum bağlantımız, VPC Eşleme tabanlı hizmetin mevcut iletim 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 ettiğiniz 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şı

Bu adımların uygulanması, canlı VPC Eşleme tabanlı Üretici hizmetinde bir kesinti başlatır. Şimdi iletim kuralı alt ağını, Internal Ranges API'yi kullanarak generative-vpc'den tüketici VPC'sine taşıyacağız. Bu işlem, generative-vpc'de alt ağı sildiğimiz ara dönemde alt ağın kullanımını kilitler ve alt ağı, yalnızca tüketici VPC'sinde oluşturma işlemi için taşıma amacıyla belirler.

Dahili aralık API'si, mevcut VPC eşleme iletim kuralı alt ağını (üretici-fr-alt ağı, 192.168.0.0/28) ayırmanızı ve tüketici-vpc'de (tüketici-psc-alt ağı) bir hedef alt ağ adı atamanızı gerektirir. Birkaç adımda consumer-vpc'de bu adla yeni bir alt ağ oluştururuz.

Generative-fr-alt ağını taşıma için ayırma

Yapımcı 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 dahili aralıkta bir açıklama çalıştırın.

Yapımcı 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şleme tabanlı Yönlendirme Kuralını ve Alt Ağı silin

Yapımcı 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 dahili aralığı 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 (tüketici-psc-alt ağı) aynı olmalıdır. PEER_MIGRATION işlevinin özel amacı, alt ağın eşleşen VPC'ler arasında alt ağ taşıma için ayrıldığını belirtir. 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. Bitiş Durumu PSC Uç Noktasını (Tüketici Etkinliği) oluşturma

Bu noktada Üretici hizmeti hâlâ kapalıdır. Az önce oluşturduğumuz alt ağ hâlâ kilitli ve yalnızca taşıma işlemi için kullanılabilir. Bu alt ağda bir sanal makine oluşturmayı deneyerek bunu test edebilirsiniz. Sanal makine oluşturma işlemi başarısız olacak.

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 PSC uç noktası oluşturmak için kullanabiliriz. Oluşturduğumuz IP adresinin, üretici hizmetimizin VPC Eş üzerinden kullandığı iletim 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

Daha önce not ettiğiniz ve "test" PSC uç noktasını oluşturmak için kullanılan aynı Hizmet Eki 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ı (Tüketici Etkinliği) test etme

Şu anda State 3 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 ermiş ve hizmet yeniden etkinleştirilmiştir. Mevcut DNS'de herhangi bir değişiklik yapmamızın gerekmediğini unutmayın. Tüketici tarafı istemci değişikliği yapılması gerekmez. Uygulamalar yalnızca taşınan hizmetteki işlemleri devam ettirebilir.

16. Taşıma Temizleme

Taşıma işlemini tamamlamak için birkaç temizleme adımı gerçekleştirmemiz gerekiyor. Kaynakları silmemiz ve kilitlerini açmamız gerekir.

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

Bu işlem, taşınan alt ağın kilidini açarak amacının "PEER_MIGRATION" değerinden "PRIVATE" olarak değiştirilmesini sağlar.

Yapımcı 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

Yapımcı 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" PSC Uç Noktasını silme

Tüketici Etkinliği

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 İşlemi Sonrasında Son Test (Tüketici Etkinliği)

Bu noktada, State 4 mimarisi (son durum) elde edilmiştir.

Taşıma işleminin olumsuz etkilenmediğ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 tebrikler.

Ele aldığımız konular

  • VPC eşleme tabanlı hizmet ayarlama
  • PSC tabanlı bir hizmetin kurulumu
  • VPC Eşleme'den PSC'ye hizmet taşıma işlemi gerçekleştirmek üzere VPC Eşleme üzerinden alt ağ taşıma işlemi gerçekleştirmek için Internal-Ranges API'yi kullanma.
  • Hizmet taşıma işlemi için kapalı kalma süresinin ne zaman gerçekleşmesi gerektiğini anlama
  • Taşıma işleminde temizlik adımları