1. Giriş
Private Service Connect, bir hizmet üreticinin hizmet tüketicisine hizmet sunmasına olanak tanır. Hizmet üreticisi VPC ağı, birden fazla hizmet tüketicisini destekleyebilir.
Yayınlanan bir hizmete bağlanabilen iki tür Private Service Connect uç noktası vardır:
- Private Service Connect uç noktası (iletim kuralına göre)
Bu uç nokta türüyle, tüketiciler tanımladıkları 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.
- Tüketici HTTP(S) hizmeti kontrollerine sahip Private Service Connect uç noktası (global harici HTTP(S) yük dengeleyiciye göre)
Bu uç nokta türüyle, tüketiciler harici bir IP adresine bağlanır. Private Service Connect, isteği hizmet üreticisine yönlendirmek için bir ağ uç noktası grubu kullanır.
Politika yaptırım noktası olarak global bir harici HTTP(S) yük dengeleyiciyi kullanmak aşağıdaki avantajları sağlar:
- Hizmetleri yeniden adlandırabilir ve istediğiniz URL'lerle eşleyebilirsiniz.
- Yük dengeleyiciyi, tüm istekleri Cloud Logging'e kaydedecek şekilde yapılandırabilirsiniz.
- Müşteri tarafından yönetilen TLS sertifikalarını kullanabilirsiniz. veya Google tarafından yönetilen sertifikalar.
Bu codelab'de, başka bir ağdaki hizmete gizli olarak erişmek için Global XLB'yi kullanarak Private Service Connect uç noktası Tüketici HTTP(S) Hizmet Kontrolleri oluşturmayı öğreneceksiniz. Bu PSC kalıbı, tek bir proje veya ayrı projeler kullanılarak yapılabilir. Bu laboratuvarın amaçları doğrultusunda, iki ayrı VPC'ye sahip tek bir proje kullanacağız.
Neler öğreneceksiniz?
- Global XLB'yi kullanarak Tüketici HTTP(S) Hizmet Kontrolleri ile Private Service Connect uç noktası oluşturma
- Yönetilen bir hizmeti, L7 XLB bağlantılarını kabul etmek için Hizmet Eki aracılığıyla kullanıma sunulacak şekilde yapılandırın.
- SSL sertifikası oluşturun ve TLS'yi sonlandırıp 443 numaralı bağlantı noktasında trafiği kabul edecek şekilde bir Apache web sunucusunu yapılandırın.
- PSC NEG oluşturun.
Gerekenler
- Bir Google Cloud projesi
- Örnekleri dağıtma ve ağ bileşenlerini yapılandırma hakkında bilgi
2. Test Ortamı
Oluşturacağınız ortam, harici HTTP(S) Yük Dengeleyici ve tüketici VPC'sindeki PSC NEG'den oluşur. Üretici VPC'si, HTTPS ile yapılandırılmış basit bir Apache web hizmeti barındırır. Apache web hizmetinden bir arka uç hizmeti oluşturacak ve bu arka uç hizmetinin de PSC Hizmet Eki ile yapılandırılmış bir Dahili TCP Yük Dengeleyicisi ile ön uç hizmetini oluşturacaksınız.
3. Kurulum ve Gereksinimler
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.
Google Cloud Console'da, sağ üstteki araç çubuğunda bulunan 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.
4. Başlamadan önce
API'leri etkinleştir
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export project=YOUR-PROJECT-NAME export region=us-central1 echo $project echo $region
Gerekli tüm hizmetleri etkinleştirin
gcloud services enable compute.googleapis.com gcloud services enable servicedirectory.googleapis.com
5. Üretici VPC, Alt Ağ, Güvenlik Duvarı Kuralları Kurulumu
VPC Ağı
Cloud Shell'den
gcloud compute networks create producer-vpc --subnet-mode custom
Alt Ağ Oluşturma
PSC için Ağ Adresi Çevrimi (NAT) gerçekleştirmek üzere üretici tarafında bir alt ağ gerekir. Amacın PRIVATE_SERVICE_CONNECT olduğunu unutmayın. Bu, söz konusu alt ağın iş yüklerini dağıtmak için kullanılamayacağı anlamına gelir.
Cloud Shell'den
gcloud compute networks subnets create producer-nat-subnet \ --network=producer-vpc \ --region=$region \ --range=10.100.100.0/24 \ --purpose=PRIVATE_SERVICE_CONNECT
Üretici VPC'sinde iki alt ağ dağıtacağız. İlk olarak üretici hizmetini dağıtan ilk hizmet. Ardından başka bir bölgeye ek bir istemci, TCP Dahili Yük Dengeleyici'de Küresel Erişim aracılığıyla hizmet bağlantısını test etmek için Client-vm'i dağıtmak için kullanılır.
Cloud Shell'den
gcloud compute networks subnets create service-subnet \ --network=producer-vpc \ --range=10.0.0.0/24 \ --region=$region
Cloud Shell'den
gcloud compute networks subnets create client-subnet \ --network=producer-vpc \ --range=10.0.1.0/24 \ --region=us-east4
Cloud NAT oluşturma
Üretici hizmetlerimize uygun paketleri yüklemek için Cloud NAT gerekir.
Cloud Shell'den
gcloud compute routers create service-cr \ --region=$region --network=producer-vpc \ --asn=65501
Cloud Shell'den
gcloud compute routers nats create service-nat-gw \ --router=service-cr \ --router-region=$region \ --nat-custom-subnet-ip-ranges=service-subnet \ --auto-allocate-nat-external-ips
Güvenlik Duvarı Kuralları Oluşturma
Bu laboratuvarda, oluşturduğunuz örneklere bağlanmak için IAP kullanacaksınız. Aşağıdaki güvenlik duvarı kuralı, örneklere IAP üzerinden bağlanmanızı sağlar. IAP kullanmamayı tercih ederseniz bu adımı atlayabilir ve örneğe genel IP adresleri ekleyebilir ve 0.0.0.0/0 adresinden TCP bağlantı noktası 22'ye girişe izin veren bir güvenlik duvarı kuralı oluşturabilirsiniz.
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 allow-ssh-iap \ --network producer-vpc \ --allow tcp:22 \ --source-ranges=35.235.240.0/20
İstemci trafiği Global Harici HTTP(S) yük dengeleyiciden gelecektir. Bu nedenle, bu trafiğin web hizmetimizi barındıracak etiketli hedef sunuculara gitmesine izin vermek için bir Güvenlik Duvarı kuralı oluşturulmalıdır. Güvenlik duvarı kuralını test amacıyla client-subnet'ten de açacağız.
Cloud Shell'den
gcloud compute firewall-rules create allow-xlb-client \ --network=producer-vpc \ --direction=ingress \ --allow=tcp:443 \ --target-tags=psc-service \ --source-ranges=130.211.0.0/22,35.191.0.0/16,10.0.1.0/24
Apache Web Hizmeti Oluşturma
"PSC Hizmeti"ni görüntüleyen basit bir Apache Web Hizmeti oluşturacağız
Örnek Şablonu oluşturma
Cloud Shell'den
gcloud compute instance-templates create producer-service-template \ --network producer-vpc \ --subnet service-subnet \ --region $region \ --no-address \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=psc-service \ --metadata startup-script='#! /bin/bash sudo apt-get update apt-get install apache2 -y a2ensite default-ssl echo "PSC Service" | \ tee /var/www/html/index.html systemctl restart apache2'
MIG için Durum Denetimi oluşturma
Cloud Shell'den
gcloud compute health-checks create https psc-service-mig-healthcheck \ --port=443 \ --global
Yönetilen Örnek Grubu Oluşturma
Cloud Shell'den
gcloud compute instance-groups managed create psc-service-mig \ --region $region \ --size=2 \ --template=producer-service-template \ --health-check=psc-service-mig-healthcheck
Apache Web Sunucularında SSL'yi Yapılandırma
Ardından, SSL'yi Apache Web sunucularının her birinde yapılandırmamız gerekir. Bu işlemi, bir sertifika oluşturup bu sertifikayı Apache Yapılandırması'na ekleyerek yapacağız.
Hizmetin önünde bu belirli PSC kalıbı için dahili bir TCP/UDP (L4) yük dengeleyicinin olması gerektiğinden, arka uç hizmetlerinde SSL sonlandırması yapılandırılmalıdır. Dahili TCP/UDP yük dengeleyici, yük dengeleyici katmanındaki SSL'yi sonlandırmaz.
MIG'nizdeki ilk sanal makineye SSH uygulayarak başlayın. Sanal makine alt bölgesi ve sanal makine adı, ortam başına dinamik olarak ayrılır. Konsolda Compute Engine'e gidin > Sanal Makine Örnekleri: Örneklerinizin adını ve alt bölgesini bulun.
Cloud Shell'den
gcloud compute ssh --zone "<YOUR_VM_ZONE>" "<YOUR_MIG_VM_1>" --tunnel-through-iap --project $project
Şimdi, sertifikayı OpenSSL üzerinden oluşturacağız. Sizden Ülkeniz, Eyaletiniz, Konumunuz, Kuruluşunuz, Kuruluş Biriminizin Adı, Ortak Adınız ve e-posta adresinizle ilgili bilgileri girmeniz istenir. Doldurmanız gereken tek bilgi, Common Name (Ortak Ad) olmalıdır. Bu ad, seçtiğiniz dahili bir FQDN olmalıdır. Bu laboratuvarın amacı doğrultusunda example.com'u seçmeniz gerekir.
Cloud Shell'den
sudo openssl genrsa -out private-key-file.pem 2048
Cloud Shell'den
cat <<'EOF' >config.txt [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements [extension_requirements] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @sans_list [dn_requirements] countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (e.g. server FQDN or YOUR name) emailAddress = Email Address [sans_list] DNS.1 = example.com EOF
Cloud Shell'den
sudo openssl req -new -key private-key-file.pem \ -out csr.pem \ -config config.txt
Cloud Shell'den
sudo openssl x509 -req \ -signkey private-key-file.pem \ -in csr.pem \ -out cert.cert \ -extfile config.txt \ -extensions extension_requirements \ -days 10
Şimdi Apache yapılandırma bilgilerini yeni sertifika ayrıntılarımızla güncelleyelim.
sudo vi /etc/apache2/sites-enabled/default-ssl.conf
ServerAdmin altına şunu okuyan bir satır ekleyin:
ServerName example.com
SSLCertificateFile ve SSLCertificateKeyFile'da, sanal makinenizdeki cert.cert dosyasının ve private-key-file.pem konumlarının konumunu güncelleyin. Aşağıda bununla ilgili bir örnek gösterilmektedir. <profile> adresini güncellediğinizden emin olun dizininizin adını yazın.
SSLCertificateFile /home/<profile>/cert.cert SSLCertificateKeyFile /home/<profile>/private-key-file.pem
Düzenleyiciyi kapatın ve Apache'yi yeniden başlatın.
sudo a2enmod ssl sudo systemctl restart apache2
Örnekten çıkın ve yönetilen örnek grubundaki diğer örnekte aynı adımları tekrarlayın.
6. Yapımcı Hizmeti'ni oluşturma
Şimdi de hizmet için yük dengeleyici bileşenlerini oluşturacağız.
Yük dengeleyici durum denetimini oluşturun.
Cloud Shell'den
gcloud compute health-checks create https service-lb-healthcheck \ --port=443 \ --region=$region
Arka uç hizmetini oluşturun.
Cloud Shell'den
gcloud compute backend-services create psc-backend-service \ --load-balancing-scheme=internal \ --protocol=TCP \ --region=$region \ --health-checks=service-lb-healthcheck \ --health-checks-region=$region gcloud compute backend-services add-backend psc-backend-service \ --region=$region \ --instance-group=psc-service-mig
Yönlendirme Kuralını oluşturun. İletim kuralının, bağlantı noktası 443'te ve Genel Erişim ile yapılandırılması gerekir. Bu, bu PSC kalıbının çalışması için gereklidir.
Cloud Shell'den
gcloud compute forwarding-rules create producer-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=service-subnet \ --address=10.0.0.100 \ --ip-protocol=TCP \ --ports=443 \ --backend-service=psc-backend-service \ --backend-service-region=$region \ --allow-global-access
7. Hizmeti Test Etme
Hizmet Ekini oluşturmadan önce, Genel Erişim ile yapılandırılan yük dengeleyiciyi test etmek için farklı bir bölgede bir istemci oluşturacağız. Ayrıca, TLS'yi sonlandıracak şekilde yapılandırılmış Apache hizmetini test edeceğiz.
Cloud Shell'den
gcloud compute instances create vm-client \ --zone=us-east4-a \ --image-family=debian-10 \ --image-project=debian-cloud \ --subnet=client-subnet \ --no-address
Örneğe SSH ekleyin.
Cloud Shell'den
gcloud compute ssh \ --zone "us-east4-a" "vm-client" \ --tunnel-through-iap \ --project $project
Yük dengeleyici aracılığıyla 443'ten fazla bağlantı bağlayarak Apache Hizmeti'ni test edin.
curl https://example.com:443 -k --connect-to example.com:443:10.0.0.100:443
BEKLENEN SONUÇ
PSC Service
8. Hizmet Eki'ni oluşturma
Cloud Shell'den
gcloud compute service-attachments create pscservice \ --region=$region \ --producer-forwarding-rule=producer-fr \ --connection-preference=ACCEPT-AUTOMATIC \ --nat-subnets=producer-nat-subnet
Uç nokta yapılandırmasının sonraki adımında ihtiyaç duyacağınız için Hizmet Eki URI'sini not etmeniz gerekir. Bu erişim düzeyini Cloud Shell'de aşağıdaki komutu çalıştırarak elde edebilirsiniz
Cloud Shell'den
gcloud compute service-attachments describe pscservice --region $region
/projects ile başlayan URI'yi kopyalayın
Örnek: /projects/<PROJE_KİMLİĞİNİZ>/regions/us-central1/serviceAttachs/pscservice
9. Tüketici VPC ve Alt Ağ Kurulumu
VPC Ağı
Cloud Shell'den
gcloud compute networks create consumer-vpc --subnet-mode custom
Alt Ağ Oluştur
Private Service Connect Network Endpoint Group'un (NEG) dağıtılacağı tüketici tarafında bir alt ağ gereklidir.
Cloud Shell'den
gcloud compute networks subnets create psc-neg-subnet \ --network=consumer-vpc \ --region=$region \ --range=10.100.200.0/24 \ --purpose=private
10. Private Service Connect Uç Noktası Oluşturma ve Test Bağlantısı
Yeni oluşturduğumuz Hizmet Eki ile ilişkilendirilecek PSC NEG oluşturma sürecini izleyeceğiz, PSC NEG'yi arka uç hizmetine ekleyeceğiz ve arka uç hizmetini bir iletim kuralıyla ilişkilendireceğiz.
Son adımda not ettiğimiz Hizmet Eki URI'sini hazır bulundurun. Aşağıdaki URL'yi kendi URI'nizle değiştirin.
Cloud Shell'den
gcloud beta compute network-endpoint-groups create xlb-psc-neg \ --network-endpoint-type=private-service-connect \ --psc-target-service=projects/<PROJECT-ID>/regions/us-central1/serviceAttachments/pscservice \ --region=$region \ --network=consumer-vpc \ --subnet=psc-neg-subnet
XLB herkese açık IP adresini oluşturun ve daha sonra test etmek üzere atanan gerçek IP adresini alın.
Cloud Shell'den
gcloud compute addresses create xlb-psc-address \ --ip-version=IPv4 --global gcloud compute addresses describe xlb-psc-address --format="get(address)" --global
Şimdi, PSC uç noktasını oluşturacağız. Bu örnekte, Harici Yük Dengeleyici'de bulunacağız.
Cloud Shell'den
gcloud beta compute backend-services create pscneg-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
Cloud Shell'den
gcloud beta compute backend-services add-backend pscneg-backend-service \ --network-endpoint-group=xlb-psc-neg \ --network-endpoint-group-region=$region \ --global
Cloud Shell'den
gcloud beta compute url-maps create xlb-psc-map \ --default-service=pscneg-backend-service \ --global
Cloud Shell'den
gcloud beta compute target-http-proxies create psc-http-proxy \ --url-map=xlb-psc-map
Cloud Shell'den
gcloud beta compute forwarding-rules create xlb-psc-fr \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=xlb-psc-address \ --target-http-proxy=psc-http-proxy \ --ports=80 \ --global
5-7 dakika bekleyip xlb-psc-address ile ilişkili IP adresini tarayıcınızın adres çubuğuna girin.
"PSC Hizmeti" ise gösteriliyorsa, çözümü doğru şekilde yapılandırmışsınızdır.
11. Temizleme adımları
Laboratuvar bileşenlerini tek bir Cloud Shell terminalinden silin
gcloud beta compute forwarding-rules delete xlb-psc-fr --global --quiet gcloud beta compute target-http-proxies delete psc-http-proxy --quiet gcloud beta compute url-maps delete xlb-psc-map --global --quiet gcloud beta compute backend-services delete pscneg-backend-service --global --quiet gcloud compute addresses delete xlb-psc-address --global --quiet gcloud beta compute network-endpoint-groups delete xlb-psc-neg --region $region --quiet gcloud compute networks subnets delete psc-neg-subnet --region $region --quiet gcloud compute networks delete consumer-vpc --quiet gcloud compute service-attachments delete pscservice --region $region --quiet gcloud compute instances delete vm-client --zone=us-east4-a --quiet gcloud compute forwarding-rules delete producer-fr --region $region --quiet gcloud compute backend-services delete psc-backend-service --region $region --quiet gcloud compute health-checks delete service-lb-healthcheck --region $region --quiet gcloud compute instance-groups managed delete psc-service-mig --region $region --quiet gcloud compute health-checks delete psc-service-mig-healthcheck --region $region --quiet gcloud compute instance-templates delete producer-service-template --quiet gcloud compute firewall-rules delete allow-xlb-client --quiet gcloud compute firewall-rules delete allow-ssh-iap --quiet gcloud compute routers nats delete service-nat-gw –router service-cr --region $region --quiet gcloud compute routers delete service-cr --region $region --quiet gcloud compute networks subnets delete client-subnet --quiet gcloud compute networks subnets delete service-subnet --quiet gcloud compute networks subnets delete producer-nat-subnet --quiet gcloud compute networks delete producer-vpc --quiet
12. Tebrikler!
Codelab'i tamamladığınız için tebrikler.
İşlediklerimiz
- Global XLB'yi kullanarak Tüketici HTTP(S) Hizmet Kontrolleri ile Private Service Connect uç noktası oluşturma
- Yönetilen bir hizmeti, L7 XLB bağlantılarını kabul etmek için Hizmet Eki aracılığıyla kullanıma sunulacak şekilde yapılandırın.
- SSL sertifikası oluşturun ve TLS'yi sonlandırıp 443 numaralı bağlantı noktasında trafiği kabul edecek şekilde bir Apache web sunucusunu yapılandırın.
- PSC NEG oluşturun.