1. Giriş
Private Service Connect (PSC) ağ uç noktası grubu (NEG), dahili HTTPS yük dengeleyicinin harici HTTPS yük dengeleyiciyle zincirlenmesini destekler. Bu, müşteri tarafından tanımlanan aralıkları kullanarak şirket içi için dağıtılmış sağlık kontrolleri ve veri düzlemi trafiği sağlar. Ayrıca, bu topolojiyle birden fazla bölgesel ara bağlantı üzerinden şirket içi ağa bağlanan birden fazla VPC de desteklenir.
Bu codelab'de, aşağıdaki topolojiye göre uçtan uca bu yapılandırmanın nasıl yapılacağını göstereceğiz. Şirket içi müşteriler, soldan sağa doğru HTTP hizmetlerini simüle etmek için bir sanal makineye sahiptir, dahili HTTPS yük dengeleyici üzerinden kullanıma sunmak için karma bağlantı (HA VPN veya ara bağlantı) ve karma NEG'den yararlanır. PSC, hizmet ekleri olarak dahili HTTPS yük dengeleyiciyi kullanır. PSC NEG, ekleri harici HTTPS yük dengeleyiciye sunulan arka uç hizmeti olarak kullanır. İnternet kullanıcıları, şirket içi HTTP hizmetlerine erişimi hızlandırmak için Google'ın küresel ağını kullanabilir.

Şekil 1. Private Service Connect, harici HTTPS yük dengeleyiciyi dahili HTTPS yük dengeleyiciye bağlamak ve arka ucu şirket içine genişletmek için ağ uç noktası grubu ve hizmet eklerini kullanır.
Neler öğreneceksiniz?
- Karma NEG ve dağıtılmış durum denetimi ile dahili HTTPS yük dengeleyici
- Dahili HTTPS yük dengeleyiciye sahip PSC hizmet eki
- PSC Ağ Uç Noktası Grubu Kurulumu
- Harici HTTPS yük dengeleyici ile PSC NEG'yi kullanıma sunma
Gerekenler
- HA-VPN gibi karma bağlantı hakkında bilgi
- Dahili/Harici HTTPS Yük Dengeleme hakkında bilgi
- Private Service Connect hakkında bilgi
2. Başlamadan önce
Not: Codelab, gösterilen topolojiye dayalı yapılandırma ve doğrulama adımları sunar. Kuruluşunuzun gereksinimlerini karşılamak için prosedürü gerektiği gibi değiştirin. IAM izinleri, codelab kapsamına dahil değildir.
Codelab, tüm süreci simüle etmek için tek bir proje kullanır. Birden fazla proje de desteklenir.
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 echo $prodproject
3. Şirket İçi Kaynaklar Oluşturma
Aşağıdaki bölümde, müşterinin tesis içi hizmetlerini simüle etmek için tesis içi bir VPC ve VM'ler oluşturacağız.
VPC Ağı
Cloud Shell'den
gcloud compute networks create vpc-demo-onprem --project=$prodproject --subnet-mode=custom
Alt Ağ Oluştur
Cloud Shell'den
gcloud compute networks subnets create vpc-demo-onprem-asia-southeast1 --project=$prodproject --range=10.0.0.0/24 --network=vpc-demo-onprem --region=asia-southeast1
Güvenlik duvarı kuralları oluşturun.
Dahili HTTPS yük dengeleyici, dağıtılmış durum denetimini destekler. Güvenlik duvarı kurallarının yalnızca proxy alt ağı IP aralığına izin vermesi gerekir. Projelerinizi izin verilenler listesine eklemek için dokümanı inceleyin.
Cloud Shell'den, arka uç durum denetimlerini ve proxy alt ağlarından gelen veri düzlemi trafiğini etkinleştirmek için bir güvenlik duvarı kuralı oluşturun.
gcloud compute firewall-rules create vpc-demo-health-checks --allow tcp:80,tcp:443 --network vpc-demo-onprem --source-ranges 10.0.3.0/24 --enable-logging
Cloud Shell'den, IAP'nin sanal makine örneklerinize bağlanmasına izin veren bir güvenlik duvarı kuralı oluşturun.
gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-onprem --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
4. Şirket içi sanal makine örnekleri oluşturma
Bu sanal makine, şirket içi hizmetleri simüle eder ve karma NEG kullanılarak dahili HTTPS yük dengeleyici ile kullanıma sunulması gerekir.
Cloud Shell'den www01 örneğini oluşturun.
gcloud compute instances create www01 \
--zone=asia-southeast1-b \
--image-family=debian-11 \
--image-project=debian-cloud \
--network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=vpc-demo-onprem-asia-southeast1 \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--metadata=startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install nginx -y
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.nginx-debian.html
sudo systemctl restart nginx'
Aşağıdaki bölümde, sertifika oluşturmak ve Nginx'e yüklemek için letsencrypt'i kullanacağız. Bir sonraki adım için genel ve özel anahtar dosyasını indirin. Sertifika oluşturmak için TCP bağlantı noktası 80'i internete geçici olarak açmanız gerekir.
Bu sanal makinenin herkese açık olarak çözümlenen bir alan adı olduğundan emin olun. Örneğin, Cloud DNS'de bir A kaydı ekleyin [www01.yinghli.demo.altostrat.com](http://www01.yinghli.demo.altostrat.com) ve sanal makinenin herkese açık IP adresini belirtin.
gcloud dns --project=$prodproject record-sets create www01.yinghli.demo.altostrat.com. --zone="yinghli-demo" --type="A" --ttl="300" --rrdatas="34.87.77.186"
www01 sanal makine konsolunda, Nginx'e sertifika yükleme ve sonraki adımlar için fullchain.pem ile private.pem dosyalarının bir kopyasını oluşturma talimatlarını uygulayın.
sudo apt install snapd sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot sudo certbot --nginx
5. Üreticiler VPC ağı oluşturma
Not: Hibrit ağ yapılandırması bu yapılandırmaya dahil değildir.
VPC Ağı
Cloud Shell'den
gcloud compute networks create vpc-demo-producer --project=$prodproject --subnet-mode=custom
Alt Ağ Oluştur
Cloud Shell'den
gcloud compute networks subnets create vpc-demo-asia-southeast1 --project=$prodproject --range=10.0.2.0/24 --network=vpc-demo-producer --region=asia-southeast1
Proxy Alt Ağı Oluşturma
Cloud Shell'den
gcloud compute networks subnets create proxy-subnet-asia-southeast1 \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=asia-southeast1 \ --network=vpc-demo-producer \ --range=10.0.3.0/24
Karma Bağlantı
Şirket içi ve üretici VPC arasında HA-VPN bağlantısı uygulamak için Cloud VPN belgelerini inceleyin. Cloud Router'da varsayılan yapılandırmayı koruyun. 130.211.0.0/22 ve 35.191.0.0/16'yı BGP reklamlarına eklememiz gerekmez.
6. Create Producers Hybrid NEG
Karma ağ uç noktası grubu oluşturun ve şirket içi VM IP:PORT'unu NEG'ye ekleyin.
Cloud Shell'den
gcloud compute network-endpoint-groups create on-prem-service-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--zone=asia-southeast1-b \
--network=vpc-demo-producer
gcloud compute network-endpoint-groups update on-prem-service-neg \
--zone=asia-southeast1-b \
--add-endpoint="ip=10.0.0.2,port=443"
7. Üreticiler için dahili HTTPS yük dengeleyici oluşturma
Şu anda harici HTTPS yük dengeleyici yalnızca PSC NEG'ye HTTPS protokolünü desteklemektedir( dokümanlar). Yayınlanan hizmetler için dahili HTTPS yük dengeleyici kullanmamız ve iletme kurallarının genel erişimini etkinleştirmemiz gerekir.
Cloud Shell'den bölgesel durum denetimini oluşturun.
gcloud compute health-checks create https on-prem-service-hc \
--region=asia-southeast1 \
--use-serving-port
Cloud Shell'den arka uç hizmetini oluşturun ve karma NEG ekleyin.
gcloud compute backend-services create on-premise-service-backend \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTPS \ --region=asia-southeast1 \ --health-checks=on-prem-service-hc \ --health-checks-region=asia-southeast1 gcloud compute backend-services add-backend on-premise-service-backend \ --network-endpoint-group=on-prem-service-neg \ --network-endpoint-group-zone=asia-southeast1-b \ --region=asia-southeast1 \ --balancing-mode=RATE \ --max-rate-per-endpoint=100
Cloud Shell'den URL eşlemesini oluşturun.
gcloud compute url-maps create on-premise-url \
--default-service on-premise-service-backend \
--region=asia-southeast1
Cloud Shell'den bölgesel SSL sertifikalarını oluşturun. Sanal makineden iki sertifika dosyası indirilir.
gcloud compute ssl-certificates create www01 \
--certificate=fullchain.pem \
--private-key=private.pem \
--region=asia-southeast1
Cloud Shell'den https-target-proxy oluşturun.
gcloud compute target-https-proxies create on-premise-httpsproxy \
--ssl-certificates=www01 \
--url-map=on-premise-url \
--url-map-region=asia-southeast1 \
--region=asia-southeast1
Cloud Shell'den dahili bir statik IP ayırtın ve yönlendirme kuralını oluşturun
gcloud compute addresses create ilbaddress \
--region=asia-southeast1 \
--subnet=vpc-demo-asia-southeast1 \
--addresses=10.0.2.100
gcloud compute forwarding-rules create https-ilb-psc \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=vpc-demo-producer \
--subnet=vpc-demo-asia-southeast1 \
--address=ilbaddress \
--ports=443 \
--region=asia-southeast1 \
--target-https-proxy=on-premise-httpsproxy \
--target-https-proxy-region=asia-southeast1
--allow-global-access
8. Üretici sanal makine örneği oluşturma
Doğrulama için bir üretici sanal makinesi oluşturun.
Cloud Shell'den
gcloud compute instances create test01 \
--zone=asia-southeast1-b \
--image-family=debian-11 \
--image-project=debian-cloud \
--network-interface=network-tier=PREMIUM,nic-type=GVNIC,stack-type=IPV4_ONLY,subnet=vpc-demo-asia-southeast1 \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring
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:
Cloud Shell'den
gcloud compute firewall-rules create psclab-iap-prod --network vpc-demo-producer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Üretici sanal makine konsolundan [www01.yinghli.demo.altostrat.com](https://www01.yinghli.demo.altostrat.com) adresine erişin ve dahili HTTPS yük dengeleyici IP adresini çözümleyin. HTTP 200, yapılandırmanın beklendiği gibi çalıştığını gösteriyordu.
curl -v --resolve www01.yinghli.demo.altostrat.com:443:10.0.2.100 https://www01.yinghli.demo.altostrat.com * Added www01.yinghli.demo.altostrat.com:443:10.0.2.100 to DNS cache * Hostname www01.yinghli.demo.altostrat.com was found in DNS cache * Trying 10.0.2.100:443... * Connected to www01.yinghli.demo.altostrat.com (10.0.2.100) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=www01.yinghli.demo.altostrat.com * start date: Jun 4 10:36:43 2023 GMT * expire date: Sep 2 10:36:42 2023 GMT * subjectAltName: host "www01.yinghli.demo.altostrat.com" matched cert's "www01.yinghli.demo.altostrat.com" * issuer: C=US; O=Let's Encrypt; CN=R3 * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * Using Stream ID: 1 (easy handle 0x55865ef982e0) > GET / HTTP/2 > Host: www01.yinghli.demo.altostrat.com > user-agent: curl/7.74.0 > accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * old SSL session ID is stale, removing * Connection state changed (MAX_CONCURRENT_STREAMS == 100)! < HTTP/2 200 < server: nginx/1.18.0 < date: Mon, 05 Jun 2023 02:29:38 GMT < content-type: text/html < content-length: 35 < last-modified: Sun, 04 Jun 2023 09:02:16 GMT < etag: "647c5318-23" < accept-ranges: bytes < via: 1.1 google < Page on www01 in asia-southeast1-b * Connection #0 to host www01.yinghli.demo.altostrat.com left intact
Not: Şirket içi güvenlik duvarı yalnızca 10.0.3.0/24 proxy alt ağına erişime izin verdiğinden 10.0.0.2 HTTPS hizmetlerine doğrudan erişemezsiniz.
9. PSC NAT alt ağı oluşturma
Cloud Shell'den
gcloud compute networks subnets create psc-nat-subnet \ --network=vpc-demo-producer \ --region=asia-southeast1 \ --range=10.0.5.0/24 \ --purpose=private-service-connect
10. HTTPS hizmet eki oluşturma
Cloud Shell'den HTTPS hizmet eki oluşturun.
gcloud compute service-attachments create ilbserviceattach \ --region=asia-southeast1 \ --producer-forwarding-rule=https-ilb-psc \ --connection-preference=ACCEPT_AUTOMATIC \ --nat-subnets=psc-nat-subnet
HTTPS hizmet ekini doğrulama
gcloud compute service-attachments describe ilbserviceattach --region asia-southeast1
Hizmet eki adını kaydetme:
projects/<project>/regions/asia-southeast1/serviceAttachments/ilbserviceattach
11. Tüketiciler VPC ağı oluşturma
Aşağıdaki bölümde tüketici VPC'si aynı projede yapılandırılmıştır ancak farklı projeler de desteklenir. Tüketici ile üretici ağı arasındaki iletişim, üretici ağında tanımlanan hizmet eki aracılığıyla gerçekleştirilir.
VPC Ağı
Cloud Shell'den
gcloud compute networks create vpc-demo-consumer --project=$prodproject --subnet-mode=custom
Alt Ağ Oluştur
Cloud Shell'den
gcloud compute networks subnets create consumer-subnet --project=$prodproject --range=10.0.6.0/24 --network=vpc-demo-consumer --region=asia-southeast1
12. PSC ağ uç noktası grubu oluşturma
PSC NEG oluşturma
Önceki https hizmetleri ek adını kopyalayıp parametrelere yapıştırın --psc-target-service
Cloud Shell'den
gcloud beta compute network-endpoint-groups create consumerpscneg \ --project=$prodproject \ --region=asia-southeast1 \ --network-endpoint-type=PRIVATE_SERVICE_CONNECT \ --psc-target-service=projects/<project>/regions/asia-southeast1/serviceAttachments/ilbserviceattach \ --network=vpc-demo-consumer \ --subnet=consumer-subnet
PSC NEG kurulumu başarılı olduktan sonra kullanıcı arayüzünde Private Service Connect -> Published Services -> Yayınlanan ilbserviceattach bağlantısının artık 1 yönlendirme kuralı gösterdiğini unutmayın.

13. Tüketici Harici HTTPS Yük Dengeleyici Oluşturma
Harici HTTPS yük dengeleyici oluşturun ve arka uç hizmetleri olarak PSC NEG'yi kullanın( dokümanlar).
Cloud Shell'den
gcloud compute addresses create httpspsclb \
--ip-version=IPV4 --global
gcloud compute backend-services create consumer-bs \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global
gcloud compute backend-services add-backend consumer-bs \
--network-endpoint-group=consumerpscneg \
--network-endpoint-group-region=asia-southeast1 \
--global
gcloud compute url-maps create consumer-url \
--default-service=consumer-backend-service \
--global
gcloud compute ssl-certificates create wwwglobal \
--certificate=fullchain.pem \
--private-key=private.pem \
--global
gcloud compute target-https-proxies create consumer-url-target-proxy \
--url-map=consumer-url \
--ssl-certificates=wwwglobal
gcloud compute forwarding-rules create consumer-url-forwarding-rule \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=PREMIUM \
--address=httpspsclb \
--target-https-proxy=consumer-url-target-proxy \
--ports=443 \
--global
www01.yinghli.demo.altostrat.com için DNS kaydını güncelleyin ve Harici HTTPS Yük Dengeleyici'nin genel IP adresini işaret edin.
gcloud dns --project=$prodproject record-sets update www01.yinghli.demo.altostrat.com. --type="A" --zone="yinghli-demo" --rrdatas="34.102.178.214" --ttl="300"
14. Doğrulama
Dizüstü bilgisayarınızdan curl ile https://www01.yinghli.demo.altostrat.com adresine erişin.
curl -v https://www01.yinghli.demo.altostrat.com * Trying 34.102.178.214:443... * Connected to www01.yinghli.demo.altostrat.com (34.102.178.214) port 443 (#0) * ALPN: offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN: server accepted h2 * Server certificate: * subject: CN=www01.yinghli.demo.altostrat.com * start date: Jun 4 10:36:43 2023 GMT * expire date: Sep 2 10:36:42 2023 GMT * subjectAltName: host "www01.yinghli.demo.altostrat.com" matched cert's "www01.yinghli.demo.altostrat.com" * issuer: C=US; O=Let's Encrypt; CN=R3 * SSL certificate verify ok. * using HTTP/2 * h2h3 [:method: GET] * h2h3 [:path: /] * h2h3 [:scheme: https] * h2h3 [:authority: www01.yinghli.demo.altostrat.com] * h2h3 [user-agent: curl/8.0.0] * h2h3 [accept: */*] * Using Stream ID: 1 (easy handle 0x149019a00) > GET / HTTP/2 > Host: www01.yinghli.demo.altostrat.com > user-agent: curl/8.0.0 > accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): * old SSL session ID is stale, removing < HTTP/2 200 < server: nginx/1.18.0 < date: Mon, 05 Jun 2023 02:48:43 GMT < content-type: text/html < content-length: 35 < last-modified: Sun, 04 Jun 2023 09:02:16 GMT < etag: "647c5318-23" < accept-ranges: bytes < via: 1.1 google, 1.1 google < alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 < Page on www01 in asia-southeast1-b * Connection #0 to host www01.yinghli.demo.altostrat.com left intact
15. Temizleme adımları
Üretici ağı temizleme adımları
Not: Temizleme adımlarında yalnızca yük dengeleyici ve PSC ile ilgili yapılandırma gösterilir. VPC ve hibrit bağlantı dahil değildir.
Terminaldeki tek bir Cloud Shell'den laboratuvar bileşenlerini silme
gcloud compute forwarding-rules delete consumer-url-forwarding-rule --global gcloud compute target-https-proxies delete consumer-url-target-proxy gcloud compute ssl-certificates delete wwwglobal --global gcloud compute url-maps delete consumer-url gcloud compute backend-services delete consumer-bs --global gcloud compute addresses delete httpspsclb --global gcloud beta compute network-endpoint-groups delete consumerpscneg --region=asia-southeast1 gcloud compute service-attachments delete ilbserviceattach --region=asia-southeast1 gcloud compute networks subnets delete psc-nat-subnet --region=asia-southeast1 gcloud compute forwarding-rules delete https-ilb-psc --region=asia-southeast1 gcloud compute addresses delete ilbaddress --region=asia-southeast1 gcloud compute target-https-proxies delete on-premise-httpsproxy --region=asia-southeast1 gcloud compute ssl-certificates delete www01 --region=asia-southeast1 gcloud compute url-maps delete on-premise-url --region=asia-southeast1 gcloud compute backend-services delete on-premise-service-backend --region=asia-southeast1 gcloud compute health-checks delete on-prem-service-hc --region=asia-southeast1 gcloud compute network-endpoint-groups delete on-prem-service-neg --zone=asia-southeast1-b gcloud compute networks subnets delete proxy-subnet-asia-southeast1 --region=asia-southeast1
16. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Karma NEG ve dağıtılmış durum denetimi ile dahili HTTPS yük dengeleyici
- Dahili HTTPS yük dengeleyiciye sahip PSC hizmet eki
- PSC Ağ Uç Noktası Grubu Kurulumu
- Harici HTTPS yük dengeleyici ile PSC NEG'yi kullanıma sunma