Looker PSC Güneye Bağlı SSH İnternet NEG

1. Giriş

Bu codelab'de, dahili bir TCP proxy yük dengeleyici ve Looker PSC'den hizmet tüketicisi olarak çağrılan internet ağı uç nokta grubu kullanarak GitHub'a güney yönlü bir SSH 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 yayınlanmış bir 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.

259493afd914f68b.png

Neler öğreneceksiniz?

  • Ağ gereksinimleri
  • Private Service Connect üretici hizmeti oluşturma
  • Looker'da Private Service Connect uç noktası oluşturma
  • Test Bağlantısı kullanarak Looker'dan GitHub'a 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 SSH kullanarak Git'e bağlanma prosedürünü kullanarak GitHub.com'a SSH bağlantısını test etmek için Looker Konsolu'nu 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.

Producer Network

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 paketlerin kaynak IP adresi, yalnızca proxy'ye ait alt ağdan alınır.

İnternet NEG

Yük dengeleyici için harici bir arka uç tanımlamak üzere kullanılan bir kaynak. Uç noktaya yalnızca Cloud VPN veya Cloud Interconnect üzerinden erişilemiyor.

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.

Cloud Router

Cloud NAT, kontrol düzlemi özellikleri için Cloud Router'lara dayanır ancak BGP oturumu yönetimi için dayanmaz.

Cloud NAT

Bölgesel internet NEG, internet çıkışı için Cloud NAT 'den yararlanır.

4. Codelab topolojisi

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

Herkese açık NAT ağ geçidini oluşturma

NAT ağ geçidi, bölgesel dahili TCP proxy yük dengeleyici tarafından internet çıkışı için kullanılır. Yapılandırma seçeneği –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB olduğundan aynı NATGW, GCE/GKE internet çıkışını desteklemez. GCE/GKE internet çıkışı için –endpoint-types=ENDPOINT_TYPE_VM ile ek bir NAT ağ geçidi dağıtın.

Cloud Shell'de Cloud Router'ı oluşturun:

gcloud compute routers create looker-psc-demo-cloud-router --network looker-psc-demo --region $region

Cloud Shell'de, TCP proxy yük dengeleyicisi için internet çıkışını etkinleştiren Cloud NAT ağ geçidini oluşturun:

gcloud compute routers nats create looker-psc-demo-natgw \
  --router=looker-psc-demo-cloud-router \
  --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
  --nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
  --auto-allocate-nat-external-ips \
  --region=$region

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:

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, github.com için kullanılan bir İnternet NEG oluşturun.

gcloud compute network-endpoint-groups create github-internet-neg-ssh \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

Cloud Shell'de, github-internet-neg-ssh adlı İnternet NEG'sini github.com FQDN'si ve 22 bağlantı noktasıyla güncelleyin.

gcloud compute network-endpoint-groups update github-internet-neg-ssh \
    --add-endpoint="fqdn=github.com,port=22" \
    --region=$region

Ağ güvenlik duvarı politikası ve güvenlik duvarı kuralları oluşturma

Cloud Shell'de aşağıdakileri yapın:

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

Aşağıdaki güvenlik duvarı kuralı, PSC NAT alt ağ aralığından gelen trafiğin ağdaki tüm örneklere ulaşmasına izin verir.

Cloud Shell'de aşağıdakileri yapın:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

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=github-internet-neg-ssh --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-github-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=22

Hizmet eki oluşturma

Cloud Shell'de github-svc-attachment-ssh adlı hizmet ekini oluşturun:

gcloud compute service-attachments create github-svc-attachment-ssh --region=$region --producer-forwarding-rule=producer-github-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/github-svc-attachment-ssh

Cloud Shell'de aşağıdakileri yapın:

gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region

Beklenen Çıkış Örneği

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '7557641709467614900'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr

Cloud Console'da şuraya gidin:

Ağ Hizmetleri → Private Service Connect → Yayınlanan Hizmetler

30b1a280966b1f06.png

4eafe698193f5f44.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: githubssh.com
  • SERVICE_ATTACHMENT_1: Hizmet eki açıklanırken yakalanan URI, github-svc-attachment-ssh.
  • 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=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region

Cloud Shell'de serviceAttachments bağlantı durumunun "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.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "githubssh.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-08-31T20:53:04.824018122Z"
}

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

db670bb008ea3fc4.png

10. GitHub'a bağlantıyı test etme

Aşağıdaki adımlarda, Looker kullanıcı arayüzünde github.com alanını githubssh.com olarak güncelleyerek GitHub.com'a SSH bağlantısını doğrulayacak bir proje oluşturmak için Looker Konsolu'nu kullanacaksınız. Bu işlem yalnızca GitHub'a SSH bağlantıları için gereklidir.

11. Yeni proje oluştur

Geliştirme modunu etkinleştirme

Looker Console'da şuraya gidin:

Geliştirme modunu etkinleştirin (sayfanın sol alt kısmı). Seçildiğinde "Geliştirme modundasınız" banner'ı gösterilir.

70c9ded749decfbe.png

Yeni proje oluşturma

Cloud Console'da şuraya gidin:

Geliştirme → Projeler

e8ae11e0392a776d.png

Yeni LookML Projesi'ni seçin.

65a3c2573e97e1e9.png

Proje adı girin, Boş Proje'yi ve ardından Proje Oluştur'u seçin.

dbb890960291aa84.png

Git'i yapılandır'ı seçin.

42f5e51ce70642ad.png

Git'i yapılandırma

3962a1fe7ac8da77.png

Devam'ı seçtiğinizde, depo URL'sini ve Git barındırma hizmetini doğrulamanız istenir.

743e5d963cfe6f82.png

GitHub deponuza Deployment Key 'i (Dağıtım Anahtarı) ekleyin. Yazma erişimine izin verdiğinizden emin olun. Güncelleme tamamlandıktan sonra Test Et ve Kurulumu Tamamla'yı seçin.

4894e0af6421802e.png

Git İşlemleri'ni seçin

e87931dbf7e265f3.png

Test Git Connection'ı (Git Bağlantısını Test Et) seçin.

73d90adf267120af.png

Git bağlantı testini doğrulama

f69bc63b9c595aa1.png

12. Temizleme

Tek bir Cloud Shell terminalinden laboratuvar bileşenlerini silme

gcloud compute service-attachments delete github-svc-attachment-ssh --region=$region -q

gcloud compute forwarding-rules delete producer-github-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-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q

gcloud compute routers delete looker-psc-demo-cloud-router --region=$region -q

gcloud compute addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg-ssh --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q

gcloud compute networks delete looker-psc-demo -q

13. Tebrikler

Tebrikler, Private Service Connect tarafından desteklenen Looker Console'u kullanarak GitHub'a 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