1. Giriş
Private Service Connect (PSC) Ağ Uç Noktası Grubu (NEG), Dahili HTTPS Yük Dengeleyici'yi Harici HTTPS Yük Dengeleyici ile zincirlemeyi destekler. Bu, müşteri tarafından tanımlanan aralıkları kullanarak On-Prem'e Dağıtılmış Durum denetimleri ve Veri düzlemi trafiği sağlar. Ayrıca bu topoloji, birçok bölgesel InterConnect üzerinden On-Prem'e bağlanan birden fazla VPC'yi de destekler.
Bu codelab'de, aşağıdaki topolojiye göre uçtan uca bu çözümün nasıl yapılandırılacağını göstereceğiz. Yerleşik müşteriler, soldan sağa doğru, HTTP hizmetlerini simüle etmek, karma bağlantıdan (HA-VPN veya InterConnect) yararlanmak ve dahili HTTPS yük dengeleyici üzerinden sunmak için karma NEG'den yararlanmak üzere bir sanal makineye sahiptir. PSC, hizmet ekleri olarak dahili HTTPS LB'yi kullanır. PSC NEG, ekleri arka uç hizmeti olarak tüketir ve harici HTTPS LB'ye sunar. İ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 Dengeleyici'yi Dahili HTTPS Yük Dengeleyici'ye bağlamak ve arka ucu On-Prem'e genişletmek için ağ uç noktası grubunu 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 Dengeleyici içeren PSC Hizmeti eki
- PSC Ağ Uç Noktası Grubu Kurulumu
- PSC NEG'yi Harici HTTPS Yük Dengeleyici ile kullanıma sunma
Gerekenler
- HA-VPN gibi Karma Bağlantı bilgisi
- Dahili/Harici HTTPS Yük Dengeleme Bilgisi
- Private Service Connect hakkında bilgi
2. Başlamadan önce
Not: Codelab, gösterilen topolojiye göre yapılandırma ve doğrulama adımları sunar. Bu prosedürü kuruluşunuzun gereksinimlerini karşılayacak şekilde değiştirin. IAM izinleri, kod laboratuvarının kapsamı dışındadır.
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üşteri şirket içi hizmetleri simüle etmek için şirket içi VPC ve sanal makineler kuracağı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ğın IP aralığına izin vermesi gerekir. Projelerinizi izin verilenler listesine eklemek için doc dokümanını takip edin.
Arka uç durum denetimlerini ve proxy alt ağlarından gelen veri düzlemi trafiğini etkinleştirmek için Cloud Shell'den 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
IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için Cloud Shell'den 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 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ği 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 aracını kullanacağız. Sonraki adım için ortak ve gizli anahtar dosyasını indirin. Sertifika oluşturmak için TCP bağlantı noktası 80'i geçici olarak internete açmanız gerekir.
Bu sanal makinenin herkese açık olarak çözülen bir alan adına sahip olduğundan emin olun. Örneğin, Cloud DNS'de bir A kaydı [www01.yinghli.demo.altostrat.com](http://www01.yinghli.demo.altostrat.com)
ekleyin ve sanal makinenin herkese açık IP adresini işaret edin.
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 konsolundan, Nginx'e sertifika yüklemeyle ilgili talimatları uygulayın ve aşağıdaki adımlar için fullchain.pem ile private.pem dosyalarının bir kopyasını oluşturun.
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. Üretici VPC ağı oluşturma
Not: Karma ağ iletişimi yapılandırması bu yapılandırmaya dahil DEĞİLDİR.
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 dokümanlarını inceleyin. Cloud Router'da varsayılan yapılandırmayı koruyun. BGP reklamlarına 130.211.0.0/22, 35.191.0.0/16 eklememiz gerekmez.
6. Üretici karma NEG'i oluşturma
Karma ağ uç noktası grubu oluşturun ve NEG'ye şirket içi sanal makine IP:PORT adresini 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. Yapımcı Dahili HTTPS Yük Dengeleyici Oluşturma
Harici HTTPS Yük Dengeleyici şu anda yalnızca PSC NEG için HTTPS protokolünü destekler (belgeler). Yayınlanan hizmetlerde Dahili HTTPS Yük Dengeleyici'yi kullanmamız ve yönlendirme kurallarının küresel 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'yi 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şlemesi oluşturma
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 statik IP ayırı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ğıdakileri yapan 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ün. HTTP 200, yapılandırmanın beklendiği gibi çalıştığını gösterir.
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şim izni verdiğinden sanal makine 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 ekini 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ı kaydet:
projects/<project>/regions/asia-southeast1/serviceAttachments/ilbserviceattach
11. Tüketicilerin VPC ağı oluşturma
Aşağıdaki bölümde, tüketici VPC'si aynı projede yapılandırılı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ın ve --psc-target-service
parametrelerini yapıştırın
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 başarıyla kurulduktan 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 genel IP adresine 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 kullanarak 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 Load Balancer ve PSC ile ilgili yapılandırma gösterilir. VPC ve Karma 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 tebrikler.
İşlediklerimiz
- Karma NEG ve Dağıtılmış Durum Denetimi içeren Dahili HTTPS Yük Dengeleyici
- Dahili HTTPS Yük Dengeleyici içeren PSC Hizmeti eki
- PSC Ağ Uç Noktası Grubu Kurulumu
- PSC NEG'yi Harici HTTPS Yük Dengeleyici ile kullanıma sunma