1. Giriş
Private Service Connect arayüzü, üretici Sanal Özel Bulut (VPC) ağının tüketici VPC ağındaki çeşitli hedeflere bağlantı başlatmasına olanak tanıyan bir kaynaktır. Üretici ve tüketici ağları farklı projelerde ve kuruluşlarda olabilir.
Bir ağ eki, Private Service Connect arayüzünden gelen bağlantıyı kabul ederse Google Cloud, arayüze ağ eki tarafından belirtilen bir tüketici alt ağından IP adresi atar. Tüketici ve üretici ağları bağlıdır ve dahili IP adreslerini kullanarak iletişim kurabilir.
Ağ eki ile Private Service Connect arayüzü arasındaki bağlantı, Private Service Connect uç noktası ile hizmet eki arasındaki bağlantıya benzer ancak iki temel farkı vardır:
- Ağ eki, üretici ağının tüketici ağına bağlantı başlatmasına (yönetilen hizmet çıkışı) olanak tanırken uç nokta, tüketici ağının üretici ağına bağlantı başlatmasına (yönetilen hizmet girişi) olanak tanır.
- Private Service Connect arayüz bağlantısı geçişlidir. Bu, bir yapımcı ağının, tüketici ağına bağlı diğer ağlarla iletişim kurabileceği anlamına gelir.
Vertex AI PSC arayüzü erişilebilirliğiyle ilgili dikkat edilmesi gereken noktalar
- PSC-Interface, trafiği RFC1918 adres bloğundaki VPC veya şirket içi tabanlı hedeflere yönlendirebilir.
- RFC-1918 olmayan adres bloklarını hedefleyen PSC arayüzü, tüketicinin VPC'sinde RFC-1918 adresiyle açık bir proxy dağıtılmasını gerektirir. Vertex AI dağıtımında proxy, hedef uç noktanın tam alan adı ile birlikte tanımlanmalıdır.
- Dağıtımınızı yalnızca bir PSC arayüzüyle yapılandırdığınızda varsayılan internet erişimi korunur. Bu giden trafik, doğrudan güvenli ve Google tarafından yönetilen kiracı ağından çıkar.
Vertex AI PSC arayüzü VPC-SC ile ilgili dikkat edilmesi gereken noktalar
- Projeniz bir VPC Hizmet Kontrolleri çevresinin parçası olduğunda, Google tarafından yönetilen kiracıların varsayılan internet erişimi, veri hırsızlığını önlemek için çevre tarafından engellenir.
- Bu senaryoda dağıtımın herkese açık internete erişmesine izin vermek için trafiği VPC'niz üzerinden yönlendiren güvenli bir çıkış yolu açıkça yapılandırmanız gerekir.
- Bunu yapmanın önerilen yolu, VPC sınırınızın içinde RFC1918 adresiyle bir proxy sunucusu oluşturmak ve proxy VM'nin internete erişmesine izin vermek için bir Cloud NAT ağ geçidi oluşturmaktır.
Daha fazla bilgi için aşağıdaki kaynaklara bakın:
Aracı dağıtma | Vertex AI'da üretken yapay zeka | Google Cloud
Vertex AI kaynakları için Private Service Connect arayüzü oluşturma | Google Cloud
Ne oluşturacaksınız?
Bu eğitimde, tüketicinin VPC'sinde RFC1918 adresiyle dağıtılan bir proxy VM aracılığıyla herkese açık bir siteye (https://api.frankfurter.app/) bağlantı sağlamak için Private Service Connect (PSC) arayüzüyle dağıtılan kapsamlı bir Agent Engine oluşturacaksınız. Örnek dağıtım, VPC-SC'nin etkin olduğu bir projede veya kiracı VPC yerine müşterilerin ağı üzerinden internet çıkışı gerektiren yöneticiler için geçerlidir.
Şekil 1

Kiracı projesinde Agent Engine'i barındıran tüketici ağı proxy-vm'sini çözümlemek için DNS eşlemesinden yararlanarak tüketici VPC'sinde tek bir psc-network-attachment oluşturursunuz. Bu işlem aşağıdaki kullanım alanlarını sağlar:
Agent Engine'i dağıtma ve açık proxy olarak hareket edecek bir proxy sanal makinesi yapılandırma. Bu sayede, https://api.frankfurter.app gibi herkese açık bir URL'ye ulaşılabilir.
Neler öğreneceksiniz?
- Ağ eki oluşturma
- Üreticinin PSC arayüzü oluşturmak için ağ eki nasıl kullanabileceği
- DNS eşleme kullanarak üreticiden tüketiciye iletişimi nasıl kurabilirsiniz?
- İnternet çıkışı için proxy sanal makinesi dağıtma ve kullanma
Gerekenler
Google Cloud projesi
IAM İzinleri
- Compute Ağ Yöneticisi (roles/compute.networkAdmin)
- Compute Örnek Yöneticisi (roles/compute.instanceAdmin)
- Compute Güvenliği Yöneticisi (roles/compute.securityAdmin)
- DNS Yöneticisi (roles/dns.admin)
- IAP Güvenli Tünel Kullanıcısı (roles/iap.tunnelResourceAccessor)
- Logging Yöneticisi (roles/logging.admin)
- Notebooks Admin (roles/notebooks.admin)
- Project IAM Admin (Proje IAM Yöneticisi) (roles/resourcemanager.projectIamAdmin)
- Hizmet Hesabı Yöneticisi (roles/iam.serviceAccountAdmin)
- Hizmet Kullanımı Yöneticisi (roles/serviceusage.serviceUsageAdmin)
2. Başlamadan önce
Projeyi, eğitimi destekleyecek şekilde güncelleme
Bu eğitimde, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $değişkenleri kullanılır.
Cloud Shell'de aşağıdakileri yapın:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
API Etkinleştirme
Cloud Shell'de aşağıdakileri yapın:
gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "dns.googleapis.com"
gcloud services enable "notebooks.googleapis.com"
gcloud services enable "storage.googleapis.com"
gcloud services enable "iap.googleapis.com"
API'lerin başarıyla etkinleştirildiğini doğrulama
gcloud services list --enabled
3. Tüketici Kurulumu
Tüketici VPC'sini oluşturma
Bu VPC, bir müşteri projesinde bulunur. Bu VPC'de aşağıdaki kaynaklar oluşturulur:
- Tüketici Alt Ağı
- Ağa Bağlı Alt Ağ
- Cloud Router (Cloud NAT için gereklidir)
- Cloud NAT
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom
Tüketici alt ağlarını oluşturma
Cloud Shell'de Proxy VM için alt ağı oluşturun:
gcloud compute networks subnets create rfc1918-subnet1 --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=us-central1
Private Service Connect ağ eki alt ağını oluşturma
Cloud Shell'de PSC ağ eki için alt ağı oluşturun:
gcloud compute networks subnets create intf-subnet --project=$projectid --range=192.168.10.0/28 --network=consumer-vpc --region=us-central1
Cloud Router ve NAT yapılandırması
Bu eğitimde, genel IP adresi olmayan proxy VM'ye internet erişimi sağlamak için Cloud NAT kullanılır. Cloud NAT, yalnızca özel IP adreslerine sahip sanal makinelerin internete bağlanmasını sağlayarak yazılım paketleri yükleme gibi görevleri gerçekleştirmelerine olanak tanır.
Cloud Shell'de Cloud Router'ı oluşturun.
gcloud compute routers create cloud-router-for-nat --network consumer-vpc --region us-central1
Cloud Shell'de, günlük kaydı etkinleştirilmiş NAT ağ geçidini oluşturun. Frankfurter API'ye (https://api.frankfurter.app/) herkese açık IP üzerinden erişimi doğrulamak için günlük kaydını kullanırız.
gcloud compute routers nats create cloud-nat-us-central1 --router=cloud-router-for-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1 --enable-logging --log-filter=ALL
4. IAP'yi etkinleştirme
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'de IAP güvenlik duvarı kuralını oluşturun.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
5. Tüketici sanal makine örnekleri oluşturma
Cloud Shell'de, Agent Engine için açık proxy görevi görecek olan tüketici sanal makine örneği proxy-vm'yi oluşturun. HTTP trafiğini proxy'lemek için tinyproxy uygulamasını kullanacağız.
gcloud compute instances create proxy-vm \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--can-ip-forward \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=rfc1918-subnet1 \
--shielded-secure-boot \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump
sudo apt-get install tinyproxy -y
sudo apt-get install apache2 -y
sudo service apache2 restart
echo 'proxy server !!' | tee /var/www/html/index.html
EOF"
6. Private Service Connect ağ eki
Ağ ekleri, Private Service Connect arayüzünün tüketici tarafını temsil eden bölgesel kaynaklardır. Bir ağ ekiyle tek bir alt ağ ilişkilendirirsiniz ve üretici, bu alt ağdan Private Service Connect arayüzüne IP'ler atar. Alt ağ, ağ ekiyle aynı bölgede olmalıdır. Ağ eki, üretici hizmetiyle aynı bölgede olmalıdır.
Ağ eki oluşturma
Cloud Shell'de ağ ekini oluşturun.
gcloud compute network-attachments create psc-network-attachment \
--region=us-central1 \
--connection-preference=ACCEPT_AUTOMATIC \
--subnets=intf-subnet
Ağ eklerini listeleme
Cloud Shell'de ağ ekini listeleyin.
gcloud compute network-attachments list
Ağ eklerini açıklama
Cloud Shell'de ağ ekini açıklayın.
gcloud compute network-attachments describe psc-network-attachment --region=us-central1
Üretici, Private Service Connect arayüzünü oluştururken kullanılacak PSC ağ eki adını (psc-network-attachment) not edin.
PSC ağ eki URL'sini Cloud Console'da görüntülemek için şuraya gidin:
Ağ Hizmetleri → Private Service Connect → Ağ Eki → psc-network-attachment

7. Özel DNS bölgesi
demo.com için bir Cloud DNS bölgesi oluşturacak ve bu bölgeyi proxy-vm'nizin IP adreslerini gösteren bir A kaydıyla dolduracaksınız. Daha sonra, DNS eşleme Agent Engine'de dağıtılacak ve tüketicinin DNS kayıtlarına erişime izin verecek.
Cloud Shell'de, demo.com DNS adını oluşturan aşağıdaki işlemi yapın.
gcloud dns --project=$projectid managed-zones create private-dns-codelab --description="" --dns-name="demo.com." --visibility="private" --networks="https://compute.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc"
DNS A kayıtları için kullanılan örneklerin IP adreslerini alın ve saklayın.
Cloud Shell'de sanal makine örneklerine karşı bir açıklama işlemi gerçekleştirin.
gcloud compute instances describe proxy-vm --zone=us-central1-a | grep networkIP:
Cloud Shell'de sanal makine için kayıt kümesini (proxy-vm.demo.com) oluşturun. Ortamınızın çıkışına göre IP adresini güncellediğinizden emin olun.
gcloud dns --project=$projectid record-sets create proxy-vm.demo.com. --zone="private-dns-codelab" --type="A" --ttl="300" --rrdatas="10.10.10.2"
PSC arayüzünden erişime izin verecek bir Cloud Firewall kuralı oluşturun
Aşağıdaki bölümde, PSC Ağ Eki'nden kaynaklanan trafiğin Consumer VPC'deki proxy-vm'ye erişmesine izin veren bir güvenlik duvarı kuralı oluşturun.
Cloud Shell'de giriş güvenlik duvarı kuralını oluşturun.
gcloud compute firewall-rules create allow-access-to-compute \
--network=consumer-vpc \
--action=ALLOW \
--rules=ALL \
--direction=INGRESS \
--priority=1000 \
--source-ranges="192.168.10.0/28" \
--destination-ranges="10.10.10.0/28" \
--enable-logging
8. Jupyter Notebook oluşturma
Aşağıdaki bölümde, Jupyter Notebook oluşturma konusunda size yol gösterilir. Bu not defteri, internet çıkışı için açık bir proxy'yi hedefleyen Agent Engine'i dağıtmak için kullanılır.
Kullanıcı tarafından yönetilen hizmet hesabı oluşturma
Aşağıdaki bölümde, eğitimde kullanılan Vertex AI Workbench örneğiyle ilişkilendirilecek bir hizmet hesabı oluşturacaksınız.
Eğitimde, hizmet hesabına aşağıdaki roller uygulanır:
Cloud Shell'de hizmet hesabını oluşturun.
gcloud iam service-accounts create notebook-sa \
--display-name="notebook-sa"
Cloud Shell'de hizmet hesabını Storage Admin rolüyle güncelleyin.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/storage.admin"
Cloud Shell'de hizmet hesabını Vertex AI Kullanıcısı rolüyle güncelleyin.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/aiplatform.user"
Cloud Shell'de hizmet hesabını Artifact Registry Yöneticisi rolüyle güncelleyin.
gcloud projects add-iam-policy-binding $projectid --member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" --role="roles/artifactregistry.admin"
Cloud Shell'de, not defteri hizmet hesabının varsayılan Compute Engine hizmet hesabını kullanmasına izin verin.
gcloud iam service-accounts add-iam-policy-binding \
$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')-compute@developer.gserviceaccount.com \
--member="serviceAccount:notebook-sa@$projectid.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
9. Açık proxy'yi güncelleme
Aşağıdaki bölümde, açık proxy'ye SSH ile bağlanmanız ve tinyproxy.conf yapılandırma dosyasını güncelleyip sıfırlama işlemi yapmanız gerekir.
Cloud Shell'den
gcloud compute ssh --zone us-central1-a "proxy-vm" --tunnel-through-iap --project $projectid
tinyproxy yapılandırma dosyasını açın ve tercih ettiğiniz düzenleyiciyi kullanarak güncelleyin. Aşağıda VIM'in kullanıldığı bir örnek verilmiştir.
sudo vim /etc/tinyproxy/tinyproxy.conf
# Locate the "Listen" configuration line to restrict listening to only its private IP address of the Proxy-VM, rather than all interfaces.
Listen 10.10.10.2
# Locate the "Allow" configuration line to allow requests ONLY from the PSC Network Attachment Subnet
Allow 192.168.10.0/24
Save