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.
Ş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.
Ş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
- 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.
- 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.
- 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:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İ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:
7. Yapımcılar 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 (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.
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
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.
9. Tüketicilerin 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 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.
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.
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
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.
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.
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
- Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
- 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")
- Sorgu sonuçları, sağlanan ekran görüntüsüne göre aşağıdakileri sağlar
- 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.
15. Doğrulama - Üretici
Producers projesinde, hizmet ekinin 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 aşağıda gösterildiği gibi durum gösterilir.
16. Yayınlanan bir hizmete erişimi kısıtlama
Ş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.
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
- Cloud Console'da İşlem Günlüğünü Tanımlayın → Günlük Gezgini
- 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")
- Sorgu sonuçları, sağlanan ekran görüntüsüne göre aşağıdakileri sağlar
- 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.
17. Temizleme adımları
Üretici ağı temizleme adımları
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
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ı