Looker PSC Güneye Yönelik HTTPS İnternet NEG Gitlab Self-Managed

1. Giriş

Bu codelab'de, Looker PSC'den hizmet tüketicisi olarak çağrılan bir dahili TCP proxy yük dengeleyici ve internet ağı uç nokta grubu (NEG) kullanarak GitLab Self-Managed ortamınıza güneye doğru bir HTTPS bağlantısı gerçekleştireceksiniz.

Private Service Connect, tüketicilerin yönetilen hizmetlere VPC ağlarının içinden özel olarak erişmesine olanak tanıyan bir Google Cloud ağ iletişimi özelliğidir. Aynı ş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 vurgulandığı gibi hizmet tüketicisi siz, hizmet üreticisi ise Google olur.

1. şekil

145ea4672c3a3b14.png

Ters PSC olarak da bilinen güney yönlü erişim, tüketicinin üretici olarak bir yayınlanmış hizmet oluşturmasına olanak tanır. Bu sayede Looker'ın şirket içi, VPC'deki, yönetilen hizmetlerdeki ve internetteki uç noktalara erişmesine izin verilir. Şekil 2'de vurgulandığı gibi, Looker PSC'nin dağıtıldığı yerden bağımsız olarak güneye giden bağlantılar herhangi bir bölgede dağıtılabilir.

2. şekil.

61932a992ba9b6f4.png

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ı oluşturma

Gerekenler

def88091b42bfe4d.png

2. Ne oluşturacaksınız?

Private Service Connect (PSC) aracılığıyla hizmet olarak yayınlanan dahili TCP proxy yük dengeleyicisini ve İnternet NEG'sini dağıtmak için bir üretici ağı (looker-psc-demo) oluşturacaksınız. Yayınlandıktan sonra, Producer hizmetine erişimi doğrulamak için aşağıdaki işlemleri yaparsınız:

  • Looker'da üretici hizmet ekiyle ilişkili bir PSC uç noktası oluşturun.
  • 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

Üretici ağı için ağ gereksinimlerinin dökümü aşağıda verilmiştir. Bu codelab'deki 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ğından gelen paketler, kaynak NAT (SNAT) kullanılarak çevrilir. Böylece, orijinal kaynak IP adresleri, üreticinin VPC ağındaki NAT alt ağından kaynak IP adreslerine dönüştürülür.

PSC iletim kuralı alt ağı

Bölgesel dahili TCP proxy yük dengeleyicisi için bir IP adresi ayırmak üzere kullanılır.

PSC NEG alt ağı

Ağ uç noktası grubu için bir IP adresi ayırmak üzere kullanılır.

Yalnızca Proxy Alt Ağı

Yük dengeleyicinin her bir proxy'sine dahili bir IP adresi atanır. Bir proxy'den arka uç VM'sine veya uç noktasına gönderilen paketler, yalnızca proxy'ye ait alt ağdan bir kaynak IP adresine sahiptir.

İnternet NEG

FQDN olarak yapılandırılmış, yük dengeleyici için harici bir arka uç tanımlamak amacıyla kullanılan bir kaynak. Bu kaynak, şirket içi Gitlab Self-Managed FQDN'sini belirtir. İnternet FQDN'si, çözümleme 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şkilendirilir.

4. Codelab topolojisi

34950ed6ef504309.png

5. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak 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 Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

7ffe5cbb04455448.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi 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 Çevrimi amacıyla PSC hizmet ekiyle 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 iletme 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 proxy'si için yalnızca proxy alt ağı 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 bir dahili 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 değerini 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 İnternet 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 adlı İnternet 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ğıdaki özellikleri içeren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişmek 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 ekine bağlanmasına izin veren otomatik onaylı hizmet eki olan gitlab-self-managed-svc-attachment-https'yi oluşturun. Hizmet ekine erişimi kontrol etmek istiyorsanız açık onaylar 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 projelerle başlayan selfLink URI'sinde listelenen Hizmet Eki'ni alın ve not edin.

selfLink: projects/<your-project-id>/regions/<your-region>/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

6fa12f77e4640b08.png

43987fabbabb41ad.png

9. Looker'da PSC uç nokta 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 Producers Service Attachment'ı Looker Core PSC ile ilişkilendireceksiniz.

Cloud Shell'de, aşağıdaki parametreleri ortamınıza uygun ş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, gitlab-self-managed-svc-attachment-https açıklanırken yakalanan URI.
  • REGION: Looker (Google Cloud temel hizmeti) ö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 bağlantı durumunun "ACCEPTED" olduğunu doğrulayın ve 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

2d4684d722d31e4b.png

2d600f33dc61cb6d.png

10. DNS çözümleme

Aşağıdaki bölümde bir GCE örneği oluşturun ve PING işlemi yaparak DNS çözümlemesini Gitlab Self-Managed örneği (gitlabonprem.com) için doğrulayın. Beklendiği gibi, çözümleme başarısız olacak ve gitlabonprem.com için gizli bir DNS bölgesi gerekecek.

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 işlemi gerçekleştirerek üretici hizmetine bağlantıyı doğrulamak için Cloud Shell'de IAP kullanarak consumer-vm'ye giriş yapın. Zaman aşımı olursa tekrar deneyin.

gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap

İşletim sisteminden gitlabonprem.com'a PING işlemi gerçekleştirin. Bu işlemin başarısız olması beklenir.

ping gitlabonprem.com

Örnek:

user@gce-dns-lookup:~$ ping gitlabonprem.com
ping: gitlabonprem.com: Name or service not known

İşletim sisteminden çıkıp Cloud Shell terminaline geri dönersiniz.

exit

12. Gizli DNS alt bölgesi oluşturma

Cloud Shell'de Cloud DNS özel alt bölgesini 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 adresinden (192.168.10.4) 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 işlemi gerçekleştirerek üretici hizmetine bağlantıyı doğrulamak için Cloud Shell'de IAP kullanarak consumer-vm'ye giriş yapın. Zaman aşımı olursa tekrar deneyin.

gcloud compute ssh gce-dns-lookup --project=$projectid --zone=us-central1-a --tunnel-through-iap

İşletim sisteminden gitlabonprem.com'a PING işlemi gerçekleştirin. Bu işlem 192.168.10.4'e çö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 Cloud Shell terminaline geri dönersiniz.

exit

13. Karma Bağlantı

gitlabonprem.com FQDN'si artık şirket içinde barındırılan özel IP adresiyle çözümlenebilir. 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.

Aşağıda, şirket içi ile karma NEG bağlantısı oluşturmak için gereken adımlar verilmiştir:

14. Bağlantıyı Test Etme

Aşağıdaki adımlarda, Git bağlantısı ayarlama 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 Konsolu'nu kullanacaksınız.

ae3b3884e8ef5db8.png

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, Private Service Connect ile 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, üretici hizmetine bağlantı sağlayan bir internet NEG'si, üretici hizmeti ve Looker PSC uç noktası oluşturmayı öğrendiniz.

Cosmopup, codelab'lerin harika olduğunu düşünüyor.

c911c127bffdee57.jpeg

Yapabilecekleriniz

Şu codelab'lere göz atın:

Daha fazla bilgi ve videolar

Referans belgeler