1. Giriş
Bu kod laboratuvarında, bir dahili TCP proxy yük dengeleyici ve Looker PSC'den hizmet tüketicisi olarak çağrılan internet ağı uç noktası grubu (NEG) kullanarak GitLab Self-Managed ortamınıza gelen bir HTTPS bağlantısı gerçekleştireceksiniz.
Özel Hizmet Bağlantısı, Google Cloud ağ iletişiminin, tüketicilerin yönetilen hizmetlere VPC ağlarının içinden özel olarak erişmesine olanak tanıyan bir özelliğidir. Benzer şekilde, yönetilen hizmet üreticilerinin bu hizmetleri kendi ayrı VPC ağlarında barındırmasına ve tüketicilerine özel bir bağlantı sunmasına olanak tanır. Örneğin, Looker'a erişmek için Private Service Connect'i kullandığınızda Şekil 1'de belirtildiği gibi hizmet tüketicisi siz olursunuz ve Google hizmet üreticisi olur.
Şekil 1.
Ters PSC olarak da bilinen güney bağlantısı, tüketicinin Looker'ın şirket içi, VPC'deki uç noktalara, yönetilen hizmetlere ve internete erişmesine izin vermek için üretici olarak yayınlanmış bir hizmet oluşturmasını sağlar. Güneye doğru bağlantılar, Şekil 2'de belirtildiği gibi Looker PSC'nin dağıtıldığı yerden bağımsız olarak herhangi bir bölgede dağıtılabilir.
Şekil 2.
Neler öğreneceksiniz?
- Ağ gereksinimleri
- Private Service Connect üretici hizmeti oluşturma
- Looker'da Private Service Connect uç noktası oluşturma
- GitLab Self-Managed örneğine bağlantı kurma
Gerekenler
- Sahibi izinlerine sahip Google Cloud projesi
- GitLab hesabı ve deposu
- Mevcut Looker PSC Örneği
2. Ne oluşturacaksınız?
Private Service Connect (PSC) üzerinden hizmet olarak yayınlanan dahili TCP proxy yük dengeleyiciyi ve Internet NEG'yi dağıtmak için looker-psc-demo adlı bir üretici ağı oluşturursunuz. Yayınlandıktan sonra, Producer hizmetine erişimi doğrulamak için aşağıdaki işlemleri gerçekleştirirsiniz:
- Looker'da üretici hizmet eki ile ilişkili bir PSC uç noktası oluşturma
- Yeni bir proje oluşturmak ve GitLab Self-Managed ortamınızla HTTPS bağlantısını test etmek için Looker Console'u kullanın.
3. Ağ gereksinimleri
Aşağıda, üretici ağı için ağ koşullarının dökümü verilmiştir. Bu kod laboratuvarındaki tüketici, Looker PSC örneğidir.
Bileşenler | Açıklama |
VPC (looker-psc-demo) | Özel mod VPC |
PSC NAT alt ağı | Tüketici VPC ağındaki paketler, kaynak NAT (SNAT) kullanılarak çevrilir. Böylece, orijinal kaynak IP adresleri, üreticinin VPC ağındaki NAT alt ağındaki kaynak IP adreslerine dönüştürülür. |
PSC yönlendirme kuralı alt ağı | Bölgesel Dahili TCP Proxy Yük Dengelemesi için IP adresi ayırmak amacıyla kullanılır. |
PSC NEG alt ağı | Ağ uç noktası grubu için IP adresi tahsis etmek üzere kullanılır. |
Yalnızca Proxy Alt Ağı | Yük dengeleyicinin proxy'lerinin her birine bir dahili IP adresi atanır. Bir proxy'den arka uç sanal makinesine veya uç noktasına gönderilen paketlerin kaynak IP adresi, yalnızca proxy alt ağından alınır. |
İnternet NEG | Gitlab Self-Managed şirket içi FQDN'sini belirten FQDN olarak yapılandırılmış yük dengeleyici için harici bir arka uç tanımlamak amacıyla kullanılan bir kaynak. İnternet FQDN'si, çözüm için VPC içinde DNS araması yapar. |
Arka Uç Hizmeti | Arka uç hizmeti, yük dengeleyiciniz ile arka uç kaynaklarınız arasında köprü görevi görür. Eğitimde arka uç hizmeti, internet NEG'siyle ilişkilendirilmiştir. |
4. Codelab topolojisi
5. Kurulum ve Gereksinimler
Kendine ait tempoda ortam kurulumu
- Google Cloud Console'da oturum açın ve 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ının görünen adıdır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dize otomatik olarak oluşturur. Bu dizenin ne olduğu genellikle önemli değildir. Çoğu kod laboratuvarında proje kimliğinize (genellikle
PROJECT_ID
olarak tanımlanır) referans vermeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele başka bir kimlik oluşturabilirsiniz. Alternatif olarak, kendi anahtarınızı deneyerek kullanılabilir olup olmadığını görebilirsiniz. Bu adımdan sonra değiştirilemez ve proje boyunca geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer (Proje Numarası) olduğunu belirtmek isteriz. Bu değerlerin üçü hakkında daha fazla bilgiyi dokümanlar bölümünde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmak çok pahalı değildir. Bu eğitimden sonra faturalandırılmamak için kaynakları kapatmak istiyorsanız oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programına uygundur.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu kod laboratuvarında, 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 Cloud Shell simgesini tıklayın:
Ortam sağlanıp bağlantı kurulabilmesi için birkaç saniye beklemeniz gerekir. İşlem tamamlandığında aşağıdakine benzer bir ekran görürsünüz:
Bu sanal makinede ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansını ve kimlik doğrulamayı büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Hiçbir şey yüklemeniz gerekmez.
6. 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-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
Gerekli tüm hizmetleri etkinleştirin:
gcloud services enable compute.googleapis.com
7. Üretici VPC Ağı Oluşturma
VPC Ağı
Cloud Shell'de aşağıdakileri yapın:
gcloud compute networks create looker-psc-demo --subnet-mode custom
Alt ağ oluşturma
PSC alt ağı, ağ adresi çevirisi amacıyla PSC hizmet eki ile ilişkilendirilir.
Cloud Shell'de PSC NAT alt ağını oluşturun:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
Cloud Shell'de üretici yönlendirme kuralı alt ağını oluşturun:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
Cloud Shell'de, üretici bölgesel yalnızca proxy alt ağını oluşturun:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
Yük dengeleyicinin IP adresini ayırma
Cloud Shell'de yük dengeleyici için dahili bir IP adresi ayırın:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-fr-subnet
Cloud Shell'de ayrılmış IP adresini görüntüleyin.
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
Örnek çıkış:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
İnternet NEG'sini ayarlama
Bir internet NEG oluşturun ve –network-endpoint-type parametresini internet-fqdn-port olarak ayarlayın (harici arka ucunuza ulaşılabilecek ana makine adı ve bağlantı noktası).
Cloud Shell'de, Gitlab Self-Managed örneğine (gitlabonprem.com) erişmek için kullanılan bir internet NEG'si oluşturun.
gcloud compute network-endpoint-groups create gitlab-self-managed-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=looker-psc-demo \
--region=$region
Cloud Shell'de, gitlab-self-managed-internet-neg internet NEG'sini gitlabonprem.com FQDN'si ve 443 bağlantı noktasıyla güncelleyin.
gcloud compute network-endpoint-groups update gitlab-self-managed-internet-neg \
--add-endpoint="fqdn=gitlabonprem.com,port=443" \
--region=$region
Ağ güvenlik duvarı kuralları oluşturma
IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdakileri yapan bir güvenlik duvarı kuralı oluşturun:
- IAP kullanılarak erişilmesini istediğiniz tüm sanal makine örnekleri için geçerlidir.
- 35.235.240.0/20 IP aralığından gelen giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.
Cloud Shell'de IAP güvenlik duvarı kuralını oluşturun.
gcloud compute firewall-rules create ssh-iap-looker-psc-demo \
--network looker-psc-demo \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
8. Üretici Hizmeti Oluşturma
Yük Dengeleyici Bileşenleri Oluşturma
Cloud Shell'de aşağıdakileri yapın:
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=gitlab-self-managed-internet-neg --network-endpoint-group-region=$region --region=$region
Cloud Shell'de, istekleri arka uç hizmetinize yönlendirmek için bir hedef TCP proxy'si oluşturun:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=producer-backend-svc \
--region=$region
Aşağıdaki söz diziminde bir yönlendirme kuralı (dahili TCP proxy yük dengeleyici) oluşturun.
Cloud Shell'de aşağıdakileri yapın:
gcloud compute forwarding-rules create producer-gitlab-self-managed-fr\
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
Hizmet Eki Oluşturma
Cloud Shell'de, Looker Core'un hizmet eki ile bağlantı kurmasına olanak tanıyan otomatik onay içeren gitlab-self-managed-svc-attachment-https hizmet ekini oluşturun. Hizmet eki erişimini kontrol etmek istiyorsanız açık onay seçeneği desteklenir.
gcloud compute service-attachments create gitlab-self-managed-svc-attachment-https --region=$region --producer-forwarding-rule=producer-gitlab-self-managed-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
Ardından, Looker'da PSC uç noktasını yapılandırmak için projelerden başlayarak selfLink URI'sinde listelenen Hizmet Eki'ni alın ve not edin.
selfLink: projects/<proje-kimliğiniz>/regions/<bölgeniz>/serviceAttachments/gitlab-self-managed-svc-attachment-https
Cloud Shell'de aşağıdakileri yapın:
gcloud compute service-attachments describe gitlab-self-managed-svc-attachment-https --region=$region
Örnek:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2025-03-04T18:55:42.254-08:00'
description: ''
enableProxyProtocol: false
fingerprint: MlY9GLLGsgE=
id: '9103522880241140673'
kind: compute#serviceAttachment
name: gitlab-self-managed-svc-attachment-https
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '115404658846991336'
low: '9103522880241140673'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/serviceAttachments/gitlab-self-managed-svc-attachment-https
targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/us-central1/forwardingRules/producer-gitlab-self-managed-fr
Cloud Console'da şuraya gidin:
Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmetler
9. Looker'da PSC uç noktası bağlantısı oluşturma
Aşağıdaki bölümde, tek bir alan için Cloud Shell'de –psc-service-attachment işaretlerini kullanarak üretici hizmet eki ile Looker Core PSC'yi ilişkilendireceksiniz.
Cloud Shell'de, aşağıdaki parametreleri ortamınızla eşleşecek şekilde güncelleyerek psc ilişkilendirmesini oluşturun:
- INSTANCE_NAME: Looker (Google Cloud Core) örneğinizin adı.
- DOMAIN_1: gitlabonprem.com
- SERVICE_ATTACHMENT_1: Hizmet Eki açıklanırken yakalanan URI (gitlab-self-managed-svc-attachment-https).
- REGION: Looker (Google Cloud Core) örneğinizin barındırıldığı bölge.
Cloud Shell'de aşağıdakileri yapın:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Örnek:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=gitlabonprem.com,attachment=projects/$project/regions/$region/serviceAttachments/gitlab-self-managed-svc-attachment-https \
--region=$region
Cloud Shell'de serviceAttachments connectionStatus değerinin "ACCEPTED" olduğunu doğrulayın, Looker PSC INSTANCE_NAME ile güncelleyin
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
Örnek:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
Örnek:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "cosmopup.looker.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.12.28",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "gitlabonprem.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/gitlab-self-managed-svc-attachment-https"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-30T17:47:33.440271635Z"
}
Cloud Console'da PSC uç noktasını doğrulama
Cloud Console'dan PSC bağlantısını doğrulayabilirsiniz
Cloud Console'da şuraya gidin:
Looker → Looker Örneği → Ayrıntılar
10. DNS çözümleme
Aşağıdaki bölümde bir GCE örneği oluşturun ve PING yaparak Gitlab Self-Managed örneğinin (gitlabonprem.com) DNS çözümünü doğrulayın. Beklenen gibi, çözümleme gitlabonprem.com için özel DNS bölgesi gerektirdiği için başarısız olur.
11. GCE örneği oluşturma
Cloud Shell'de, DNS çözümlemesini doğrulamak için kullanılan GCE örneğini oluşturun.
gcloud compute instances create gce-dns-lookup \
--project=$projectid \
--machine-type=e2-micro \
--image-family debian-11 \
--no-address \
--image-project debian-cloud \
--zone us-central1-a \
--subnet=producer-psc-fr-subnet
Bir curl gerçekleştirerek üretici hizmetine bağlantıyı doğrulamak için Cloud Shell'de IAP'yi kullanarak consumer-vm'ye giriş yapın. Zaman aşımı varsa tekrar deneyin.
gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap
İşletim sisteminden gitlabonprem.com adresine PING gönderin. Hata beklenir.
ping gitlabonprem.com
Örnek:
user@gce-dns-lookup:~$ ping gitlabonprem.com
ping: gitlabonprem.com: Name or service not known
İşletim sisteminden çıkıp sizi Cloud Shell terminaline geri döndürür.
exit
12. Gizli DNS Alt Bölgesi Oluşturma
Cloud Shell'de Cloud DNS özel alanını oluşturun.
gcloud dns --project=$projectid managed-zones create gitlab-self-managed --description="" --dns-name="gitlabonprem.com." --visibility="private" --networks="https://compute.googleapis.com/compute/v1/projects/$projectid/global/networks/looker-psc-demo"
Cloud Shell'de, Gitlab Self-Managed örneğinin IP adresi olan 192.168.10.4'ten oluşan A kaydını oluşturun.
gcloud dns --project=$projectid record-sets create gitlabonprem.com. --zone="gitlab-self-managed" --type="A" --ttl="300" --rrdatas="192.168.10.4"
Bir curl gerçekleştirerek üretici hizmetine bağlantıyı doğrulamak için Cloud Shell'de IAP'yi kullanarak consumer-vm'ye giriş yapın. Zaman aşımı varsa tekrar deneyin.
gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap
İşletim sisteminden gitlabonprem.com adresine PING gönderin. Bu adres 192.168.10.4 olarak çözümlenir.
ping gitlabonprem.com
Örnek:
user@gce-dns-lookup:~$ ping gitlabonprem.com
PING gitlabonprem.com (192.168.10.4) 56(84) bytes of data
İşletim sisteminden çıkıp sizi Cloud Shell terminaline geri döndürür.
exit
13. Karma Bağlantı
gitlabonprem.com tam alan adı artık şirket içinde barındırılan özel IP adresiyle çözülebilir. Ardından, bağlantıyı etkinleştirmek için looker-psc-demo VPC ile şirket içi ağ arasında karma ağ iletişimi (ör. Interconnect, HA-VPN) yapılandırılmalıdır.
Şirket içi karma NEG bağlantısı oluşturmak için gereken adımlar aşağıda verilmiştir:
- Ağ Bağlantısı ürünü seçme | Google Cloud
- VPC eşlemesi içeren bir merkez ve konuşmalı ağ mimarisinde karma NEG, Cloud Router ile aynı VPC'ye (hub) dağıtılır.
- Bu alt ağ, şirket içi iş yükleriyle iletişim için kaynak IP adresi olarak hizmet ettiğinden şirket içi güvenlik duvarlarının yalnızca proxy alt ağı aralığına uygun şekilde güncellendiğinden emin olun.
- Cloud Router'dan yalnızca proxy alt ağının özel rota reklamı olarak reklamını yapma
14. Bağlantıyı Test Etme
Aşağıdaki adımlarda, Git bağlantısı oluşturma ve test etme bölümünde açıklanan prosedürü kullanarak gitlabonprem.com'a HTTPS bağlantısını doğrulamak için bir proje oluşturmak üzere Looker Console'u kullanacaksınız.
15. Temizleme
Tek bir Cloud Shell terminalinden laboratuvar bileşenlerini silme
gcloud compute service-attachments delete gitlab-self-managed-svc-attachment-https --region=$region -q
gcloud compute forwarding-rules delete producer-gitlab-self-managed-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-endpoint-groups delete gitlab-self-managed-internet-neg --region=$region -q
gcloud compute instances delete gce-dns-lookup --zone=us-central1-a -q
gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud dns --project=$projectid record-sets delete gitlabonprem.com. --zone="gitlab-sel
f-managed" --type="A"
gcloud dns --project=$projectid managed-zones delete gitlab-self-managed
gcloud compute networks delete looker-psc-demo -q
16. Tebrikler
Tebrikler, Özel Hizmet Bağlantısı tarafından desteklenen Looker Console'u kullanarak GitLab Self-Managed örneğine bağlantıyı başarıyla yapılandırdınız ve doğruladınız.
Üretici altyapısını oluşturdunuz, internet NEG'si, üretici hizmeti ve üretici hizmetine bağlanmaya izin veren Looker PSC uç noktası oluşturmayı öğrendiniz.
Cosmopup, codelab'lerin harika olduğunu düşünüyor.
Sırada ne var?
Bu codelab'lerden bazılarına göz atın...
- Hizmetleri yayınlamak ve kullanmak için Private Service Connect'i kullanma
- Private Service Connect ve dahili TCP Proxy yük dengeleyici kullanarak karma ağ üzerinden şirket içi hizmetlere bağlanma
- Yayınlanan tüm Private Service Connect kod laboratuvarlarına erişim