1. Giriş
Private Service Connect, bir hizmet üreticisinin hizmet tüketicisine özel olarak hizmet sunmasına olanak tanır. Private Service Connect aşağıdaki avantajları sunar:
- Bir hizmet üreticisi VPC ağı birden fazla hizmet tüketicisini destekleyebilir.
- Her tüketici, tanımladığı bir dahili IP adresine bağlanır. Private Service Connect, isteği hizmet üreticisine yönlendirmek için ağ adresi çevrimi (NAT) gerçekleştirir.

Şekil 2. Private Service Connect, hizmet tüketicilerinin VPC ağından hizmet üreticinin VPC ağındaki hizmetlere trafik göndermesine olanak tanımak için uç noktaları ve hizmet eklerini kullanır (büyütmek için tıklayın).
Neler öğreneceksiniz?
- Private Service Connect'in avantajları
- Hizmet tüketicileri için temel kavramlar
- Hizmet üreticileri için temel kavramlar
- Üretici ortamı oluşturma
- Hizmeti (üretici ortamı) hizmet eki aracılığıyla kullanıma sunma
- Tüketici ortamı oluşturma
- Tüketici ağında yönlendirme kuralı oluşturma
- Tüketici erişimini doğrulama
- Politika erişim denetimini etkinleştirme
- Tüketici yönlendirme kuralına erişimi engellemek için çıkış güvenlik duvarı kuralı kullanma
Gerekenler
- GKE kümelerini ve hizmetlerini dağıtma bilgisi
- Dahili yük dengeleyiciler hakkında bilgi
- İki projede VPC oluşturabilme
- GKE kümesi oluşturma özelliği
2. Private Service Connect'in avantajları
PSC ile VPC eşlemeyi kullanmaya kıyasla çeşitli avantajlardan yararlanabilirsiniz:
Özel IP alanı üzerinde daha iyi kontrol
- Hizmet tüketicisi olarak, erişmek istediğiniz yönetilen hizmete bağlanmak için kullanılan özel IP adresini kontrol edebilirsiniz.
- Hizmet tüketicisi olarak, VPC'nizde kullanılan arka uç hizmetleri için özel IP adresi aralıkları ayırmanız gerekmez. Üretici hizmetlerine bağlanmak için kendi alt ağınızdan bir IP adresi seçmeniz yeterlidir.
- Bir hizmet üreticisi olarak, VPC'nizin birden fazla tüketici VPC'sine hizmet veren hizmetler içerdiği çok kiracılı bir model dağıtmayı seçebilirsiniz. Alt ağ aralıkları çakışan tüketiciler artık sorun teşkil etmiyor.
- Bir servis sağlayıcı olarak, daha fazla IP adresi için tüketicinizle iletişime geçmenize gerek kalmadan hizmetinizi gerektiği kadar sanal makine örneğine ölçeklendirebilirsiniz.
Geliştirilmiş güvenlik ve izolasyon
- Bir hizmet tüketicisi olarak, hizmet üreticisiyle iletişimi yalnızca siz başlatabilirsiniz. Bu tek yönlü bağlantı, güvenlik duvarı yapılandırmasını önemli ölçüde basitleştirir ancak hizmet üreticisinden gelen kötü amaçlı trafik riskini de azaltır.
- Hizmet üretici olarak, tüketicinin VPC'sindeki alt ağ aralıklarına göre güvenlik duvarı kurallarınızı değiştirmeniz gerekmez. Hizmetiniz için yapılandırılan NAT IP adresi aralığına yönelik güvenlik duvarı kurallarını kolayca oluşturabilirsiniz.
Daha iyi ölçeklenebilirlik
- PSC, binlerce tüketiciyi destekleyerek yüksek düzeyde ölçeklenebilir bir tasarım sağlar ve hizmet üreticilerin yüksek düzeyde ölçeklenebilir çok kiracılı veya tek kiracılı hizmetler sunmasına olanak tanır.
- Private Service Connect'i kullanan bir hizmet tüketicisi olarak VPC'nizde gerektiği kadar kaynak oluşturabilirsiniz. Bu ölçek, üretici VPC'sinde oluşturulan bu tür kaynakların sayısından etkilenmez.
3. Hizmet tüketicileri için temel kavramlar
VPC ağınızın dışındaki hizmetleri kullanmak için Private Service Connect uç noktalarını kullanabilirsiniz. Hizmet tüketicileri, hedef hizmete bağlanan Private Service Connect uç noktaları oluşturur.
Uç noktalar
Hedef hizmete bağlanmak için Private Service Connect uç noktalarını kullanıyorsunuz. Uç noktalar, VPC ağınızda dahili bir IP adresine sahiptir ve iletim kuralı kaynağına dayanır.
Trafiği, VPC ağınızın dışındaki hedeflere ileten uç noktaya gönderirsiniz.
Hedefler
Private Service Connect uç noktalarının, bağlanmak istediğiniz hizmet olan bir hedefi vardır:
- API paketi:
- Tüm API'ler: Çoğu Google API'si
- VPC-SC: VPC Hizmet Kontrolleri'nin desteklediği API'ler
- Başka bir VPC ağında yayınlanan hizmet. Bu hizmet, kendi kuruluşunuz veya bir üçüncü taraf tarafından yönetilebilir.
Yayınlanan hizmet
Uç noktanızı bir hizmet üreticisinin hizmetine bağlamak için hizmetin hizmet eki gerekir. Hizmet eki URI'si şu biçimdedir: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME
4. Hizmet üreticileri için temel kavramlar
Bir hizmeti tüketicilerin kullanımına sunmak için tüketici IP adreslerinin ağ adresi çevirisi (NAT) için kullanılacak bir veya daha fazla özel alt ağ oluşturursunuz. Ardından, bu alt ağlara başvuran bir hizmet eki oluşturursunuz.
Private Service Connect alt ağları
Bir hizmeti kullanıma sunmak için hizmet üreticisi önce Private Service Connect amaçlı bir veya daha fazla alt ağ oluşturur.
Bir tüketici VPC ağından istek gönderildiğinde, tüketicinin kaynak IP adresi, kaynak NAT (SNAT) kullanılarak Private Service Connect alt ağlarından birinden seçilen bir IP adresine çevrilir.
Tüketici bağlantısı IP adresi bilgilerini saklamak istiyorsanız Tüketici bağlantısı bilgilerini görüntüleme başlıklı makaleyi inceleyin.
Bu alt ağlar, sanal makine örnekleri veya yönlendirme kuralları gibi kaynaklar için kullanılamaz. Alt ağlar yalnızca gelen tüketici bağlantılarının SNAT'ı için IP adresleri sağlamak amacıyla kullanılır.
Private Service Connect alt ağı, her 63 tüketici sanal makinesi için en az bir IP adresi içermelidir. Böylece, ağ adresi çevirisi için her tüketici sanal makinesine 1.024 kaynak demeti ayrılır.
Private Service Connect alt ağı için minimum boyut /24'tür.
Hizmet ekleri
Hizmet üreticiler, hizmetlerini bir hizmet eki aracılığıyla kullanıma sunar.
- Bir hizmeti kullanıma sunmak için hizmet üretici, hizmetin yük dengeleyici iletme kuralına başvuran bir hizmet eki oluşturur.
- Bir hizmete erişmek için hizmet tüketicisi, hizmet ekine başvuran bir uç nokta oluşturur.
Bağlantı tercihleri
Hizmet oluştururken nasıl kullanılabilir hale getireceğinizi seçersiniz. İki seçeneğiniz vardır:
- Tüm projeler için bağlantıları otomatik olarak kabul etme: Herhangi bir hizmet tüketicisi, bir uç nokta yapılandırabilir ve hizmete otomatik olarak bağlanabilir.
- Seçili projeler için bağlantıları kabul etme: Hizmet tüketicileri, hizmete bağlanmak için bir uç nokta yapılandırır ve hizmet üreticisi, bağlantı isteklerini kabul eder veya reddeder.
Şartlar ve sınırlamalar
- Private Service Connect ile ilgili sınırlamalar geçerlidir.
- GKE 1.21.4-gke.300 ve sonraki sürümlerinde hizmet eki oluşturabilirsiniz.
- Aynı alt ağı birden fazla hizmet eki yapılandırmasında kullanamazsınız.
- Dahili TCP/UDP yük dengeleyici kullanan bir GKE hizmeti oluşturmanız gerekir.
5. Test Ortamı
Tüketici ağı, üreticinin hizmet ekine (yayınlanan hizmet) eşlenen hedef hizmet eki ile birlikte hizmet üreticiye istek göndermek için kullanılan statik bir IP adresinden oluşur.

Şimdi de üreticilerin ağına göz atalım. Üretici ağı ile tüketici ağı arasında eşleme olmadığını, bunun yerine üretici ağında, tüketici tarafından hizmetler için kullanılan bir hizmet eki (yayınlanmış hizmet) olduğunu unutmayın. Üreticinin hizmet eki, GKE kapsülleri ve ilişkili uygulamalarla iletişimi sağlayan bir GKE giriş L4 ILB (yayınlanmış hizmet) tarafından kullanıma sunulur.
Bir tüketici VPC ağından istek gönderildiğinde NAT alt ağı kullanılır. Tüketicinin kaynak IP adresi, kaynak NAT (SNAT) kullanılarak Private Service Connect alt ağlarından birinden seçilen bir IP adresine çevrilir.
Bu alt ağlar, sanal makine örnekleri veya yönlendirme kuralları gibi kaynaklar için kullanılamaz. Alt ağlar yalnızca gelen tüketici bağlantılarının SNAT'ı için IP adresleri sağlamak amacıyla kullanılır.
GKE Private Service Connect için L4ILB hakkında daha fazla bilgi edinmek ve bu laboratuvar referansını oluşturmak için kullanılan içeriğe doğrudan erişmek istiyorsanız aşağıdaki bilgileri inceleyin.
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 dizisidir ve istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı 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ğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Bu nedenle, beğenmezseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını görebilirsiniz. Proje oluşturulduktan sonra bu değer "dondurulur". - 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ırma ücreti alınmaması için kaynakları kapatmak üzere codelab'in sonunda bulunan "temizleme" talimatlarını uygulayın. Google Cloud'un yeni 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.
GCP 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 laboratuvardaki çalışmalarınızın tamamını yalnızca bir tarayıcı kullanarak yapabilirsiniz.
6. Başlamadan önce
Codelab için iki proje gerekir (PSC için gerekli olmasa da). Tek veya birden fazla projeyi destekleyen referanslara dikkat edin.
Tek Proje - Üretici ve tüketici ağını desteklemek için projeyi güncelleme
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Birden fazla proje: Projeyi üretici ağını destekleyecek şekilde güncelleme
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Aşağıdaki renklendirme kodu kuralına dikkat edin:

7. Üreticiler VPC ağı oluşturma

VPC Ağı
Cloud Shell'den
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
GKE kümesi alt ağı oluşturma
Cloud Shell'den
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
GKE kümesi oluşturma
Cloud Shell'den
gcloud container clusters create gke-psc-l4 \
--release-channel=rapid \
--enable-ip-alias \
--zone=us-central1-a \
--network gke-producer-l4-vpc \
--num-nodes 1 \
--subnetwork node-subnet1 \
--cluster-secondary-range-name pod \
--services-secondary-range-name service
Private Service Connect için alt ağ oluşturma (NAT alt ağı)
Private Service Connect ile kullanılmak üzere bir veya daha fazla özel alt ağ oluşturmanız gerekir. Hizmet yayınlamak için Google Cloud Console'u kullanıyorsanız alt ağları bu işlem sırasında oluşturabilirsiniz.
Private Service Connect alt ağları hakkında bilgi için Private Service Connect alt ağları başlıklı makaleyi inceleyin.
Cloud Shell'den
gcloud beta compute networks subnets create gke-nat-subnet \
--project $prodproject \
--network gke-producer-l4-vpc \
--region us-central1 \
--range 100.100.10.0/24 \
--purpose PRIVATE_SERVICE_CONNECT
8. İş yükü ve hizmet dağıtma
Aşağıdaki manifest, örnek bir web uygulaması container görüntüsünü çalıştıran bir dağıtımı açıklamaktadır. Manifesti Cloud Shell'den my-deployment.yaml olarak kaydedin.
apiVersion: apps/v1
kind: Deployment
metadata:
name: psc-ilb
spec:
replicas: 3
selector:
matchLabels:
app: psc-ilb
template:
metadata:
labels:
app: psc-ilb
spec:
containers:
- name: whereami
image: gcr.io/google-samples/whereami:v1.2.1
ports:
- name: http
containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 1
Manifesti Cloud Shell'den kümenize uygulama
kubectl apply -f my-deployment.yaml
Hizmet oluşturma
Aşağıdaki manifest, TCP bağlantı noktası 8080'de dahili bir TCP/UDP yük dengeleyici oluşturan bir hizmeti açıklar. Manifesti Cloud Shell'den my-service.yaml olarak kaydedin.
apiVersion: v1
kind: Service
metadata:
name: gke-l4-psc
annotations:
networking.gke.io/load-balancer-type: "Internal"
spec:
type: LoadBalancer
selector:
app: psc-ilb
ports:
- port: 80
targetPort: 8080
protocol: TCP
Manifesti Cloud Shell'den kümenize uygulama
kubectl apply -f my-service.yaml
Create ServiceAttachment
Aşağıdaki bildirim, oluşturduğunuz hizmeti hizmet tüketicilerine sunan bir ServiceAttachment'ı açıklar. Manifesti Cloud Shell'den my-psc.yaml olarak kaydedin.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
Manifesti Cloud Shell'den kümenize uygulama
kubectl apply -f my-psc.yaml
ServiceAttachment'ta aşağıdaki alanlar bulunur:
- connectionPreference: Müşterilerin hizmete nasıl bağlanacağını belirleyen bağlantı tercihi. ACCEPT_AUTOMATIC ile otomatik proje onayı veya ACCEPT_MANUAL ile açık proje onayı kullanabilirsiniz. Daha fazla bilgi için Private Service Connect kullanarak hizmet yayınlama başlıklı makaleyi inceleyin.
- natSubnets: Hizmet eki için kullanılacak alt ağ kaynak adlarının listesi.
- proxyProtocol: Doğru olarak ayarlandığında, isteklerde tüketici kaynak IP'si ve Private Service Connect bağlantı kimliği kullanılabilir. Bu alan isteğe bağlıdır ve sağlanmazsa varsayılan olarak false değerine ayarlanır.
- consumerAllowList: ServiceAttachment'a bağlanmasına izin verilen tüketici projelerinin listesi. Bu alan yalnızca connectionPreference ACCEPT_MANUAL olduğunda kullanılabilir. Bu alan ve diğer seçenekler hakkında daha fazla bilgi için Private Service Connect kullanarak hizmet yayınlama başlıklı makaleyi inceleyin.
Üretici Doğrulaması
Hizmet eki ayrıntılarını görüntüleme
Cloud Shell'de aşağıdaki komutu kullanarak bir ServiceAttachment'ın ayrıntılarını görüntüleyebilirsiniz.
kubectl describe serviceattachment emoji-sa
GKE L4 ILB'yi görüntüleme
Cloud Console'da Ağ Hizmetleri → Yük Dengeleme → Ön Uçlar'a gidin.
Daha önce tanımlanan 192.168.10.0/24 düğüm alt ağına uygun olan ön uç IP adresini belirleyin. Aşağıdaki ekran görüntüsüne dikkat edin. IP adresiniz farklı olabilir.

Yayınlanan Hizmeti Görüntüleme
Cloud Console'da Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmetler'e gidin.
Laboratuvarda kullanılan ağ ile hizmeti tanımlayın (gke-producer-l4-vpc,). Hizmet ve hedef değerleriniz farklılık gösterebilir ancak aşağıdaki ekran görüntüsüne dikkat edin.

Sizi aşağıdaki ekrana yönlendiren hizmet adını tıklayın, Temel Bilgiler'de doldurulan hizmet eki ayrıntılarını not edin. Ayrıca, tüketici henüz hizmete kaydolmadığı için "Bağlı Projeler"in boş olduğunu unutmayın. Bağlantı tercihi, "ACCEPT_AUTOMATICALLY" olarak ayarlandığından KABUL ET ve REDDET seçenekleri devre dışı kalır. Bu seçenek, hizmet eki yaml'si (my-psc.yaml) değiştirilerek "ACCEPT_MANUAL" olarak ayarlanabilir.


9. Tüketiciler VPC ağı oluşturma

Aşağıdaki bölümde tüketici VPC'si ayrı bir projede yapılandırılmıştır. Tüketici ile üretici ağı arasındaki iletişim, tüketici ağında tanımlanan hizmet eki aracılığıyla gerçekleştirilir.
Codelab için iki proje gerekir (PSC için gerekli olmasa da). Tek veya birden fazla projeyi destekleyen referanslara dikkat edin.
Tek Proje - Üretici ve tüketici ağını desteklemek için projeyi güncelleme
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Birden fazla proje: Projeyi, tüketici ağını destekleyecek şekilde güncelleme
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
VPC Ağı
Cloud Shell'den
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
PSC için alt ağ oluşturma
Cloud Shell'den
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
Sanal makine örnekleri için alt ağ oluşturma
Cloud Shell'den
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
Yayınlanan hizmete erişmek için statik IP adresi oluşturma
Cloud Shell'den
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
Güvenlik Duvarı Kuralları Oluşturma
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 firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
PSC oluşturmak için gerekli olmasa da üreticinin hizmet ekine yönelik tüketici PSC trafiğini izlemek için bir çıkış güvenlik duvarı kuralı oluşturun.
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. 1. tüketici test örneğini oluşturun
Cloud Shell'den
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. 2. tüketici testi örneğini oluşturma
Cloud Shell'den
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. Hizmet eki oluşturma
Önceki adımda, Producer Service Attachment dizesini güvenli bir yere kopyalamıştınız. Şimdi, depolanan değeri "target-service-attachment" alanına ekleyelim.

Cloud Shell'den
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. Doğrulama - Tüketici
Tüketici ve üretici iletişimini doğrulamak için CURL ve güvenlik duvarı günlüklerini kullanırız.
Tüketicinin projesinde, statik IP adresleri Üretici ile iletişimi başlatmak için kullanılır. Statik IP adresinin tüketici iletim kuralıyla eşlenmesi, aşağıdaki söz dizimi uygulanarak doğrulanır.

Tüketici VPC'lerinden Cloud kullanım kabuğunda yönlendirme kuralını ve statik IP'yi tanımlayın.
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Aşağıdaki çıkışta, sonraki bir adımda üreticiye ulaşmak için 10.0.60.100 adresini kullanacağız.
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
Bağlı Hizmeti Görüntüleme
Bulut konsolunda Ağ Hizmetleri → Private Service Connect → Bağlı Uç Noktalar'a gidin ve yeni oluşturulan uç noktayı görüntüleyin.

consumer-instance-1'e giriş yapalım ve üretici tarafından yayınlanan hizmete erişimi test edelim.
Cloud Shell'de + işaretini tıklayarak yeni bir sekme açın.

Cloud Shell'de aşağıdakileri yapın:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
consumer-instance-1 örneğine giriş yaptıktan sonra iletme kuralı IP adresi 10.0.60.100'e karşı bir curl işlemi gerçekleştirin.
Cloud Shell'de aşağıdakileri yapın:
user@consumer-instance-1:~$ curl 10.0.60.100
Örnek çıkış
user@consumer-instance-1:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal",
"pod_name": "psc-ilb-588887dfdb-w7tbr",
"pod_name_emoji": "🤷",
"project_id": "prodorijectid",
"timestamp": "2021-10-01T17:43:37",
"zone": "us-central1-a"
consumer-instance-2'ye giriş yapalım ve Producer Published Service'e erişimi test edelim.
Cloud Shell'de + işaretini tıklayarak yeni bir sekme açın.

Cloud Shell'de aşağıdakileri yapın:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Cloud Shell'de aşağıdakileri yapın:
user@consumer-instance-2:~$ curl 10.0.60.100
Örnek çıkış
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100
{
"cluster_name": "gke-psc-l4",
"host_header": "10.0.60.100",
"node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal",
"pod_name": "psc-ilb-588887dfdb-4jdql",
"pod_name_emoji": "🧑🏿",
"project_id": "prodproject",
"timestamp": "2021-10-01T17:49:51",
"zone": "us-central1-a"
14. Güvenlik duvarı günlük kaydı - Ayrılmış doğrulama
Günlük Gezgini'ni kullanarak"vpc-consumner-psc" güvenlik duvarı kuralının, sanal makinenin örneği ile statik IP arasındaki akışı yakaladığını doğrulayın.
- Cloud Console'da İşlemler Günlüğü → Günlük Gezgini'ni seçin.
- Sorgu alanında aşağıdaki girişi yourconsumerproject ile güncelleyin ve "Sorguyu Çalıştır"ı seçin.
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Sorgu sonuçları, sağlanan ekran görüntüsü başına aşağıdakileri sağlar:

- Günlüğü (jsonPayload → Connection) genişletin ve aşağıda verilen çıkışı belirleyin. dest_ip: 10.0.60.100, Üretici Hizmeti'ne erişmek için kullanılan STATİK TCP IP'sidir ve src_ip: 10.0.70.10 veya 10.0.70.20, sanal makine örneği IP adresleridir. Disposition is Allowed.

15. Doğrulama - Yapımcı

Üreticiler projesinde hizmet eklerinin başarıyla bağlandığını doğrulayın. Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmetler'e gidin.

Hizmeti tıkladığınızda, bağlı tüketici projeniz ve durumu aşağıdaki resimde gösterildiği gibi görünür.

16. Yayınlanmış bir hizmete erişimi kısıtlama

Şimdiye kadar her iki örneğin de Yayınlanan Hizmetler'e erişimi olduğunu doğruladık. consumer-instance-2'nin Yayınlanan Hizmet'e erişimini reddetmek için bir çıkış güvenlik duvarı kuralı oluşturalım.
GCP, varsayılan olarak tüm çıkışlara izin verir ancak tüm giriş trafiğini reddeder. Aşağıdaki adımlarda, Published Service'e erişimi reddetmek için consumer-instance-2 oluşturulurken kullanılan, daha önce tanımlanmış "google2" adlı bir ağ etiketine dayalı güvenlik duvarı kuralı oluşturacağız.

+ simgesini tıklayarak yeni bir Cloud Shell sekmesi açın ve Cloud Shell'de aşağıdaki güvenlik duvarı kuralını çalıştırın.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
Şimdi consumer-instance-2'nin yayınlanan hizmete erişip erişemediğini test edelim. Oturumunuzun süresi dolduysa yeni bir Cloud Shell + açmanız ve aşağıda ayrıntılı olarak açıklandığı şekilde sanal makineye giriş yapmanız gerekir.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
Cloud Shell'de aşağıdakileri yapın:
user@consumer-instance-2:~$ curl 10.0.60.100
Örnek çıkış
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
Güvenlik duvarı günlük kaydı - Doğrulama reddedildi
Günlük Gezgini'ni kullanarak "psc-endpoint-deny-egress" güvenlik duvarı kuralının, sanal makine örneği ile statik IP arasındaki akışı yakaladığını doğrulayın.
- Cloud Console'da İşlemler Günlüğü → Günlük Gezgini'ni seçin.
- Sorgu alanında aşağıdaki girişi consumerproject ile güncelleyin ve "Sorguyu Çalıştır"ı seçin.
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Sorgu sonuçları, sağlanan ekran görüntüsü başına aşağıdakileri sağlar:

- Günlüğü genişletin ve aşağıda verilen çıkışı belirleyin. dest_ip: 10.0.60.100, STATİK TCP IP'si ve src_ip: 10.0.70.10 veya 10.0.70.20, sanal makine örneği IP adresleridir. Disposition is Denied.

17. Temizleme adımları
Üretici ağı temizleme adımları

Üretici projesi terminalindeki tek bir Cloud Shell'den laboratuvar bileşenlerini silme
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet

Tüketici ağı temizleme adımları
Tüketici projesi terminalindeki tek bir Cloud Shell'den laboratuvar bileşenlerini silme
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Private Service Connect'in avantajları
- Hizmet tüketicileri için temel kavramlar
- Hizmet üreticileri için temel kavramlar
- Üretici ortamı oluşturma
- Hizmeti (üretici ortamı) hizmet eki aracılığıyla kullanıma sunma
- Tüketici ortamı oluşturma
- Tüketici ağında yönlendirme kuralı oluşturma
- Tüketici erişimini doğrulama
- Politika erişim denetimini etkinleştirme
- Tüketici yönlendirme kuralına erişimi engellemek için çıkış güvenlik duvarı kuralı kullanıldıysa