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

1. Giriş

Private Service Connect, bir hizmet üreticisinin hizmet tüketicilerine özel olarak hizmet sunmasına olanak tanır. Private Service Connect aşağıdaki avantajları sunar:

  • Hizmet üreticisi VPC ağı, birden fazla hizmet tüketicisini destekleyebilir.
  • Her tüketici, tanımladığı dahili bir IP adresine bağlanır. Private Service Connect, isteği hizmet üreticisine yönlendirmek için ağ adresi çevirisi (NAT) gerçekleştirir.

45b90d50690dd111.png

Şekil 2. Private Service Connect, hizmet tüketicilerinin tüketicinin VPC ağından hizmet üreticisinin VPC ağındaki hizmetlere trafik göndermesini sağlamak için uç noktaları ve hizmet eklerini kullanır (büyütmek için tıklayın).

Neler öğreneceksiniz?

  • Private Service Connect avantajları
  • Hizmet tüketicileri için temel kavramlar
  • Hizmet üreticiler için temel kavramlar
  • Üretici ortamı oluşturma
  • Bir hizmet eki aracılığıyla hizmeti (üretici ortamı) kullanıma sunma
  • Tüketici ortamı oluşturma
  • Tüketici ağında iletim kuralı oluşturma
  • Tüketici erişimini doğrulayın
  • Politika erişim denetimini etkinleştir
  • Tüketici iletim kuralına erişimi engellemek için çıkış güvenlik duvarı kuralı kullanma

Gerekenler

  • GKE kümelerini ve hizmetlerini dağıtma hakkında bilgi
  • Dahili yük dengeleyiciler hakkında bilgi
  • İki projede VPC oluşturabilme
  • GKE Kümesi oluşturma yetkisi

2. Private Service Connect avantajları

PSC ile, VPC Eşleme kullanmaya kıyasla çeşitli avantajlara sahip olursunuz:

Özel IP alanını daha iyi kontrol etme

  • Hizmet tüketicisi olarak, erişmek istediğiniz yönetilen hizmete bağlanmak için kullanılan özel IP adresini denetleyebilirsiniz.
  • Hizmet tüketicisi olarak VPC'nizde tüketilen arka uç hizmetleri için özel IP adresi aralıklarını ayırma konusunda endişelenmenize gerek yoktur. Üretici hizmetlerine bağlanmak için yalnızca kendi alt ağınızdan bir IP adresi seçmeniz gerekir.
  • Hizmet üreticisi olarak, VPC'nizin birden fazla tüketici VPC'sine hizmet veren hizmetler içerdiği çok kiracılı bir modeli dağıtmayı seçebilirsiniz. Alt ağ aralıklarının çakıştığı tüketiciler artık sorun yaşanmamaktadır.
  • 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.

Daha fazla güvenlik ve yalıtım

  • 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ı büyük ölçüde basitleştirir ve hizmet üreticisinden gelen yetkisiz trafik riskini de azaltır.
  • Hizmet üreticisi olarak, güvenlik duvarı kurallarınızı tüketicinin VPC'sindeki alt ağ aralıklarına göre değiştirmeniz gerekmez. Hizmetiniz için yapılandırılan NAT IP adresi aralığı için güvenlik duvarı kuralları oluşturabilirsiniz.

Daha iyi ölçeklenebilirlik

  • PSC, binlerce tüketiciyi destekleyerek yüksek düzeyde ölçeklenebilir tasarıma olanak tanır ve Hizmet Üreticilerin yüksek düzeyde ölçeklenebilir çok kiracılı veya tek kiracılı hizmetler sunmasına olanak tanır.
  • Özel hizmet bağlantısını kullanan bir hizmet tüketicisi olarak, VPC'nizde gereken şekilde kaynak oluşturabilirsiniz. Bunun ölçeği, ü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, bir hedef hizmete bağlanan Private Service Connect uç noktaları oluşturur.

Uç noktalar

Bir hedef hizmete bağlanmak için Private Service Connect uç noktaları kullanılır. Uç noktaların VPC ağınızda dahili bir IP adresi vardır ve iletim kuralı kaynağını temel alırlar.

Uç noktaya trafik gönderirsiniz, bu da trafiği VPC ağınızın dışındaki hedeflere yönlendirir.

Hedefler

Private Service Connect uç noktalarının bağlanmak istediğiniz hizmet olan bir hedef vardır:

  • Bir 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 bir hizmet. Bu hizmet kendi kuruluşunuz veya üçüncü bir taraf tarafından yönetilebilir.

Yayınlanan hizmet

Uç noktanızı bir hizmet üreticisinin hizmetine bağlamak için hizmetin hizmet ekine ihtiyacınız vardır. Hizmet eki URI'si şu biçimdedir: projects/SERVICE_PROJECT/regions/REGION/serviceAttachs/SERVICE_NAME

4. Hizmet üreticiler için temel kavramlar

Bir hizmeti tüketicilerin kullanımına sunmak için tüketici IP adreslerinin ağ adresi çevirisinde (NAT) kullanılacak bir veya daha fazla özel alt ağ oluşturursunuz. Ardından, bu alt ağları ifade eden bir hizmet eki oluşturursunuz.

Private Service Connect alt ağları

Bir hizmeti kullanıma sunmak için hizmet üreticisi önce Private Service Connect amacına sahip bir veya daha fazla alt ağ oluşturur.

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ının birinden seçilen bir IP adresine dönüştürülür.

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 iletim kuralları gibi kaynaklar için kullanılamaz. Alt ağlar yalnızca gelen tüketici bağlantılarının SNAT'sine IP adreslerini sağlamak için kullanılır.

Private Service Connect alt ağı, her 63 tüketici sanal makinesi için en az bir IP adresi içermelidir. Bu sayede her tüketici sanal makinesine, ağ adresi çevirisi için 1.024 kaynak demet tahsis edilir.

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 üreticisi, hizmetin yük dengeleyici iletim kuralına başvuruda bulunan bir hizmet eki oluşturur.
  • Hizmet tüketicileri, bir hizmete erişmek için hizmet ekini belirten bir uç nokta oluşturur.

Bağlantı tercihleri

Bir hizmet oluşturduğunuzda, nasıl kullanılabilir hale getireceğinizi siz seçersiniz. İki seçeneğiniz vardır:

  • Tüm projeler için bağlantıları otomatik olarak kabul edin. Tüm hizmet tüketicileri uç nokta yapılandırabilir ve hizmete otomatik olarak bağlanabilir.
  • Seçilen projeler için bağlantıları kabul edin: 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 sınırlamaları geçerlidir.
  • GKE 1.21.4-gke.300 ve sonraki sürümlerinde hizmet eki oluşturabilirsiniz.
  • Birden fazla hizmet eki yapılandırmasında aynı alt ağı kullanamazsınız.
  • Dahili TCP/UDP yük dengeleyici kullanan bir GKE hizmeti oluşturmanız gerekir.

5. Test Ortamı

Tüketici ağı, hizmet üreticisine istek göndermek için kullanılan statik bir IP adresinden ve üreticinin hizmet ekiyle (yayınlanan hizmet) eşlenen hedef hizmet ekinden oluşur.

1ce5607c0c56d77d.jpeg

Şimdi, yapımcı ağına bakalım. Üretici ağının tüketici ağına yönelik bir eşlemesine sahip olmadığına dikkat edin. Bunun yerine, üretici ağı, tüketici tarafından hizmetler için kullanılan bir hizmet eki (yayınlanan hizmet) içerir. Üreticinin hizmet eki, GKE Kapsüllerine ve izin verir.

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ının birinden seçilen bir IP adresine çevrilir.

Bu alt ağlar, sanal makine örnekleri veya iletim kuralları gibi kaynaklar için kullanılamaz. Alt ağlar yalnızca gelen tüketici bağlantılarının SNAT'sine IP adreslerini sağlamak için kullanılır.

GKE Private Service Connect için L4ILB hakkında daha fazla bilgi edinmek ve bu laboratuvarda kullanılan içeriklere doğrudan erişim izni almak için aşağıdaki bilgilere göz atın.

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp 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 dizesidir ve bunu istediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle PROJECT_ID olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir.
  • Bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü 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 çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de 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 yer alan Cloud Shell simgesini tıklayın:

bce75f34b2c53987.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

f6ef2b5f13479f3a.png

İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla yapabilirsiniz.

6. Başlamadan önce

Codelab, PSC için zorunlu olmasa da iki proje gerektirir. Bir veya daha fazla projeyi destekleyen referansları not 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 çok proje: Projeyi, üretici ağını destekleyecek şekilde güncelleyin

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ını unutmayın:

f251ebb137e37136.png

7. Producer 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 (NAT Alt Ağı) için alt ağ oluşturun

Private Service Connect ile kullanılacak bir veya daha fazla özel alt ağ oluşturmanız gerekir. Bir hizmet yayınlamak için Google Cloud Console'u kullanıyorsanız alt ağları bu prosedür sırasında oluşturabilirsiniz.

Private Service Connect alt ağları hakkında bilgi için Private Service Connect alt ağları sayfasına bakın.

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'te, örnek bir web uygulaması container görüntüsü çalıştıran bir Dağıtım açıklanmaktadır. Manifest'i 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

Manifest'i kümenize Cloud Shell'den uygulayın

kubectl apply -f my-deployment.yaml

Hizmet oluşturma

Aşağıdaki manifest'te, TCP bağlantı noktası 8080'de dahili TCP/UDP yük dengeleyici oluşturan bir hizmet açıklanmaktadır. Manifest'i, 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

Manifest'i kümenize Cloud Shell'den uygulayın

kubectl apply -f my-service.yaml

ServiceAttach (Hizmet Eki Oluşturma)

Aşağıdaki manifest'te, oluşturduğunuz hizmeti hizmet tüketicilerine sunan bir ServiceAttach açıklanmaktadır. Manifest dosyasını 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

Manifest'i kümenize Cloud Shell'den uygulayın

kubectl apply -f my-psc.yaml

ServiceAttachment alanında aşağıdaki alanlar bulunur:

  • connectionPreference: Müşterilerin hizmete nasıl bağlanacağını belirleyen bağlantı tercihi. ACCEPT_AUTOMATIC işleviyle otomatik proje onayını veya ACCEPT_AUTOMATIC etiketini kullanarak açık proje onayını kullanabilirsiniz. Daha fazla bilgi için Private Service Connect'i kullanarak yayınlama hizmetleri başlıklı makaleyi inceleyin.
  • natSubnets: Hizmet eki için kullanılacak alt ağ kaynağı adlarının listesi.
  • proxyProtocol::Doğru değerine ayarlandığında tüketici kaynak IP'si ve Private Service Connect bağlantı kimliği isteklerde kullanılabilir. Bu alan isteğe bağlıdır ve sağlanmazsa varsayılan olarak "yanlış" değerini alır.
  • consumerAllowList: ServiceAttach'e bağlanmasına izin verilen tüketici projelerinin listesi. Bu alan yalnızca connectionPreference (Bağlantı Tercihi) connectionPreference olduğunda kullanılabilir. Bu alan ve diğer seçenekler hakkında daha fazla bilgi edinmek için Private Service Connect kullanarak yayınlama hizmetleri 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 ServiceAttach ayrıntılarını görüntüleyebilirsiniz

kubectl describe serviceattachment emoji-sa

GKE L4 ILB'yi görüntüleme

Cloud Console'dan Ağ Hizmetleri → Yük Dengeleme → Ön Uçlar'a gidin

Önceden tanımlanmış düğüm alt ağı 192.168.10.0/24 ile eşleşen ön uç IP adresini tanımlayın. Aşağıdaki ekran görüntüsünü inceleyin. IP Adresiniz farklı olabilir.

ed7a25ed4774977b.png

Yayınlanan Hizmeti Göster

Cloud Console'dan Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmetler'e gidin

Laboratuvarda kullanılan ağla (gke-producer-l4-vpc,) hizmeti tanımlayın. Hizmet ve Hedef değerleriniz farklı olsa da 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 bölümünde doldurulan hizmet eki ayrıntılarını not edin. Ayrıca "Bağlı Projeler"e de dikkat edin. değeri, tüketici henüz hizmete kaydolmadığı için boştur. KABUL ET ve REDDET seçeneği devre dışı durumda kalır. Bağlantı tercihi "KABUL_OTOMATİK OLARAK" olarak ayarlandığından bu seçenek, hizmet eki olan yaml (my-psc.yaml) dosyası değiştirilerek dilediğiniz zaman "KABUL_MANUAL" olarak değiştirilebilir.

497f5f43920018c0.png

e246063a23771273.png

9. Tüketicilerin 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 ve üretici ağı arasındaki iletişim, tüketici ağında tanımlanan hizmet eki aracılığıyla gerçekleşir.

Codelab, PSC için zorunlu olmasa da iki proje gerektirir. Bir veya daha fazla projeyi destekleyen referansları not 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 çok proje - Tüketicilerin ağ kullanımı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
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 ş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 firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging

PSC için gerekli olmamakla birlikte, üretici hizmet ekine giden 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. Tüketici testi örneği 1 oluşturma

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. Tüketici testi örneği 2 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 Üretici Hizmet Eki dizesini güvenli bir yere kopyaladınız. Saklanan değeri "target-service-attachment" öğesine ekleyelim. girin.

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

CURL ve güvenlik duvarı günlüklerini kullanır.

Tüketici projesinde statik IP adresleri, Yapımcı ile iletişim kurmak için kullanılır. Statik IP adresinin Tüketici yönlendirme kuralıyla olan bu eşlemesi aşağıdaki söz dizimi uygulanarak doğrulanır.

1f3c90f1e139e906.png

Tüketici VPC'lerinden kabuk kullanarak iletim 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ış, sonraki bir adımda üreticiye ulaşmak için 10.0.60.100'u 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öster

Cloud Console'dan Ağ Hizmetleri → Private Service Connect → Bağlı Uç Noktalar ve Yeni oluşturulan uç noktayı görüntüle

206bc00297aaa260.png

consumer-instance-1'e giriş yapıp Producer Yayınlanan Hizmet'e erişimi test edelim

Cloud Shell'de + simgesini tıklayarak yeni bir sekme açın.

81f3210b29faebd3.png

Cloud Shell'den şunları gerçekleştirin:

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, 10.0.60.100 iletim kuralı IP adresine göre bir curl işlemi yapın.

Cloud Shell'den şunları gerçekleştirin:

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ş yapıp Producer Yayınlanan Hizmet'e erişimi test edelim

Cloud Shell'de + simgesini tıklayarak yeni bir sekme açın.

81f3210b29faebd3.png

Cloud Shell'den şunları gerçekleştirin:

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'den şunları gerçekleştirin:

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ılan Doğrulama

Günlük Gezgini'ni kullanarak "vpc-consumner-psc" güvenlik duvarı kuralını doğrulayın sanal makinenin örneği ile statik IP arasındaki akışı yakalıyor

  1. Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
  2. Query (Sorgu) alanında aşağıdaki girişi yourconsumerproject olarak güncelleyin ve "Sorgu Ç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üne göre aşağıdakileri sağlar

23e427b3060473.png

  1. Günlüğü genişletin (jsonPayload → Connection) ve aşağıda sağlanan çıkışı bulun. dest_ip değerini not edin: 10.0.60.100, Üretici Hizmetine erişmek için kullanılan STATIC TCP IP'sidir; src_ip: 10.0.70.10 veya 10.0.70.20 ise sanal makine örneği IP adresleridir. Elden Almaya İzin Veriliyor.

2669743fd1f1cb0d.png

15. Doğrulama - Üretici

afe738fc869f0d6e.png

Producers projesinde, hizmet ekinin 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 aşağıda gösterildiği gibi durum gösterilir.

15966d47423ebc5f.png

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

1f3c90f1e139e906.png

Şu ana kadar her iki örneğin de Yayınlanan Hizmetler'e erişimi olduğunu onayladık. Şimdi de Yayınlanan Hizmet'e consumer-instance-2 erişimini reddetmek için bir Çıkış Güvenlik Duvarı Kuralı oluşturalım.

Varsayılan olarak GCP tüm Çıkışlara izin verir ancak tüm Giriş trafiğini reddeder. Aşağıdaki adımlarda, önceden tanımlanmış olan "google2" ağ etiketine dayalı bir güvenlik duvarı kuralı oluşturacağız Yayınlanan Hizmet'e erişimi reddetmek için consumer-instance-2 oluştururken kullanılır.

7fa2cda1dfec33a.png

Cloud Shell'de + simgesini tıklayarak yeni bir Cloud Shell sekmesi açı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 örneğinin Yayınlanan Hizmet'e erişip erişemediğini test edelim. Oturumunuz zaman aşımına uğradıysa yeni bir Cloud Shell + açıp sanal makineye aşağıda açıklanan şekilde 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'den şunları gerçekleştirin:

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ı - Reddedilen Doğrulama

Günlük Gezgini'ni kullanarak "psc-endpoint-deny-egress" güvenlik duvarı kuralını doğrulayın sanal makine örneği ile statik IP arasındaki akışı yakalıyor

  1. Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
  2. Query (Sorgu) alanında aşağıdaki girişi yourconsumerproject ile güncelleyin ve "Run Query"yi (Sorgu Çalıştır) seçin.

logName:(projeler/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üne göre aşağıdakileri sağlar

83b4fc7348ac93cd.png

  1. Günlüğü genişletin ve aşağıda sağlanan çıkışı belirleyin. dest_ip kısmına dikkat edin: 10.0.60.100 STATIC TCP IP'si; src_ip: 10.0.70.10 veya 10.0.70.20 ise sanal makine örneği IP adresleridir. Elden Alma İşlemi Reddedildi.

a344f75f67590655.png

17. Temizleme adımları

Üretici ağı temizleme adımları

afe738fc869f0d6e.png

Producer proje terminalindeki tek bir Cloud Shell'den laboratuvar bileşenlerini silin.

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

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

İşlediklerimiz

  • Private Service Connect avantajları
  • Hizmet tüketicileri için temel kavramlar
  • Hizmet üreticiler için temel kavramlar
  • Üretici ortamı oluşturma
  • Bir hizmet eki aracılığıyla hizmeti (üretici ortamı) kullanıma sunma
  • Tüketici ortamı oluşturma
  • Tüketici ağında iletim kuralı oluşturma
  • Tüketici erişimini doğrulayın
  • Politika erişim denetimini etkinleştir
  • Bir tüketici iletim kuralına erişimi engellemek için çıkış güvenlik duvarı kuralı kullanıldı