GKE ile hizmetleri yayınlamak ve kullanmak için Private Service Connect'i kullanma

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.

45b90d50690dd111.png

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

1ce5607c0c56d77d.jpeg

Ş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

  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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter 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_ID olarak 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.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandı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:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu 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:

f251ebb137e37136.png

7. Üreticiler VPC ağı oluşturma

afe738fc869f0d6e.png

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.

ed7a25ed4774977b.png

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.

5a00836ee514b918.png

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.

497f5f43920018c0.png

e246063a23771273.png

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

1f3c90f1e139e906.png

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.

7abaccc4e24f1ef7.png

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.

1f3c90f1e139e906.png

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.

206bc00297aaa260.png

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.

81f3210b29faebd3.png

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.

81f3210b29faebd3.png

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.

  1. Cloud Console'da İşlemler Günlüğü → Günlük Gezgini'ni seçin.
  2. 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")

  1. Sorgu sonuçları, sağlanan ekran görüntüsü başına aşağıdakileri sağlar:

23e427b3060473.png

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

2669743fd1f1cb0d.png

15. Doğrulama - Yapımcı

afe738fc869f0d6e.png

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

89ded87a63888f60.png

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

15966d47423ebc5f.png

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

1f3c90f1e139e906.png

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

7fa2cda1dfec33a.png

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

  1. Cloud Console'da İşlemler Günlüğü → Günlük Gezgini'ni seçin.
  2. 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")

  1. Sorgu sonuçları, sağlanan ekran görüntüsü başına aşağıdakileri sağlar:

83b4fc7348ac93cd.png

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

a344f75f67590655.png

17. Temizleme adımları

Üretici ağı temizleme adımları

afe738fc869f0d6e.png

Ü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

1f3c90f1e139e906.png

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