1. Giriş
Bu belgede, WIF kullanarak AgentSpace'e erişmek için özel alan yapılandırmaya yönelik bir referans mimarisi sağlanmaktadır. Kullanıcılar, Agentspace uygulaması oluşturulurken atanan Google tarafından yönetilen URL yerine özel bir alan kullanabilir. Bu codelab'de, nip.io alanını kullanarak Agentspace takvim ve sürücü uygulamalarına erişim gösterilmektedir. nip.io, herhangi bir IP adresi için joker DNS sağlayan ücretsiz ve açık kaynaklı bir hizmettir. Temel olarak, kendi DNS sunucunuzu kurmanız veya /etc/hosts dosyanızı değiştirmeniz gerekmeden belirli bir IP adresine çözümlenen bir ana makine adı oluşturmanıza olanak tanır.
Kendi alanınızı kullanmanız önerilir ancak eğitimde gösterim amacıyla nip.io kullanılır.
Aşağıda gösterilen dağıtım senaryosunda (Şekil 1), AgentSpace, herkese açık Google tarafından yönetilen bir URL üzerinden erişilen bir Takvim Uygulaması içeren bir veri deposu yayınladı.
Şekil 1
Veri deposunun ve sonraki uygulamaların sürekli büyümesi, aşağıdaki dağıtım senaryosunda (Şekil 2) gösterildiği gibi, herkese açık Google tarafından yönetilen URL'lerin daha fazla yönetilmesine yol açar. Bu da Agentspace uygulamaları ile URL'nin 1:1 eşlenmesiyle sonuçlanır.
2. şekil.
Özel alan adı, çeşitli AgentSpace uygulamalarının tek bir kullanıcı tarafından belirtilen müşteri alanıyla eşlenmesini sağlar. Bu özellik, her bir Agentspace uygulamasıyla belirli bir URL yolunun ilişkilendirilmesine olanak tanır. Aşağıdaki dağıtım senaryosunda (Şekil 3) gösterildiği gibi daha fazla esneklik sunar. Örneğin, müşteri tarafından yönetilen bir alan olan agentspace.cosmopup.com, her biri belirli bir Agentspace uygulamasıyla eşlenen yol kurallarına ayrılır. Örneğin:
- agentspace.cosmopup.com/drive-app, Workspace Drive için Agentspace uygulamasıyla eşlenir.
- agentspace.cosmopup.com/sharepoint-app, SharePoint için Agentspace uygulamasıyla eşlenir.
URL eşlemesi aracılığıyla yapılandırılan harici uygulama yük dengeleyicisinin ana makine ve yol kuralları, özel alanın Google tarafından yönetilen URL ile eşlenmesini sağlayan mantığı kontrol eder. Aşağıdaki işlevi, exampleagentspace.cosmopup.com/drive-app adresini kullanarak gerçekleştirir.
- Custom domain host path agentspace.cosmopup.com/drive-app, yük dengeleyici tarafından alınır.
- URL eşlemesi, gelişmiş ana makine ve yol kuralı eşleşmesi için yapılandırılmış
- Ana makine agentspace.cosmopup.com, yol eşleştirme ve yönlendirme için uygundur
- Custom domain host path agentspace.cosmopup.com/drive-app is subject to UrlRedirect
- pathRedirect, Agentspace yoludur: /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
- hostRedirect, Agentspace ana makinesidir: vertexaisearch.cloud.google.com
- Custom domain host path agentspace.cosmopup.com/sharepoint-app, UrlRedirect'e tabidir.
- pathRedirect, Agentspace yoludur: /signin/locations/global/workforcePools/your-pool-name/providers/your-provider-name?continueUrl=https://vertexaisearch.cloud.google/home/cid/f190000-0000-4d0a-0000-d08df6e3bef6
- hostRedirect, Agentspace ana makinesidir: auth.cloud.google
- Yönlendirme işlemi, arka uç hizmetine yönlendirmeden önce gerçekleştirilir.
Şekil 3
Neler öğreneceksiniz?
- Global Harici Uygulama Yük Dengeleyicisi Oluşturma
- Özel bir alanı Agentspace uygulamasına yönlendirmek için yönlendirme oluşturma
- Özel alan adı oluşturmak için nip.io ve Cloud DNS'yi entegre etme
- Agentspace özel alanına erişimi doğrulama
Gerekenler
- Sahip izinlerine sahip Google Cloud projesi
- Mevcut Agentspace uygulama URL'leri
- Kendinize ait özel alan adı (isteğe bağlı)
- Sertifikalar - Kendinden İmzalı veya Google Tarafından Yönetilen
2. Ne oluşturacaksınız?
Ana makine ve yol yönlendirmesini kullanarak Agentspace uygulamaları için özel alan yolu eşleşmesini etkinleştirmek üzere gelişmiş trafik yönetimi özelliklerine sahip bir Global External Application Load Balancer oluşturacaksınız. Dağıtım tamamlandıktan sonra Agentspace uygulamasına erişimi doğrulamak için aşağıdaki işlemleri yaparsınız:
- Bir web tarayıcısı açıp özel alanınıza ve belirtilen yola giderek Agentspace uygulamanıza erişin.
3. Ağ gereksinimleri
Ağ gereksinimlerinin dökümü aşağıda verilmiştir:
Bileşenler | Açıklama |
VPC (agentspace-vpc) | Özel mod VPC |
İnternet NEG | FQDN olarak yapılandırılmış, Agentspace Google tarafından yönetilen FQDN'yi (vertexaisearch.cloud.google.com) belirten, yük dengeleyici için harici bir arka ucu tanımlamak üzere kullanılan bir kaynak. İ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ğiticide arka uç hizmeti, internet NEG'siyle ilişkilendirilir. |
Sertifikalar | Google Cloud'da bir Application Load Balancer için sertifikaları yapılandırmak üzere Certificate Manager hizmetini ve Google tarafından yönetilen veya kendi kendine yönetilen SSL sertifikalarını kullanırsınız. |
Cloud DNS | Cloud DNS genel bölgesi, harici uygulama yük dengeleyicinin harici IP'sini nip.io (agentspace.externalip.nip.io) olarak çözmek için kullanılır. Alternatif olarak, yük dengeleyicinin IP adresinden oluşan özel alanınızı ve A kaydınızı kullanın. |
4. Codelab topolojisi
5. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Henüz bir Gmail veya Google Workspace hesabınız yoksa 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. 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.
- 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:
Ortamın sağlanması ve bağlantının kurulması yalnızca birkaç saniye sürer. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:
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 iyileştirilir. 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
gcloud services enable dns.googleapis.com
7. Yük dengeleme bileşenlerini ayarlama
Yük dengeleyicinin harici IP adresini ayırın
Cloud Shell'de yük dengeleyici için harici bir IP adresi ayırın:
gcloud compute addresses create external-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
Cloud Shell'de ayrılmış IP adresini görüntüleyin:
gcloud compute addresses describe external-ip \
--global | grep -i address:
Örnek çıkış:
user@cloudshell$ gcloud compute addresses describe external-ip \
--global | grep -i address:
address: 34.54.158.206
İ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ı). Agentspace'i çözmek için FQDN vertexaisearch.cloud.google.com ve 443 numaralı bağlantı noktası kullanılır.
gcloud compute network-endpoint-groups create agentspace-ineg \
--network-endpoint-type="internet-fqdn-port" \
--global
gcloud compute network-endpoint-groups update agentspace-ineg \
--add-endpoint="fqdn=vertexaisearch.cloud.google.com,port=443" \
--global
Yük dengeleyiciyi oluşturma
Cloud Shell'de aşağıdakileri yapın:
gcloud compute backend-services create agentspace-ineg-bes \
--load-balancing-scheme=EXTERNAL_MANAGED \
--protocol=HTTPS \
--global
gcloud compute backend-services add-backend agentspace-ineg-bes \
--network-endpoint-group=agentspace-ineg \
--global-network-endpoint-group \
--global
Sertifikayı oluşturma
Bu noktada, internet NEG'sini ve arka uç hizmetini oluşturdunuz. Aşağıdaki bölümde, HTTPS hedef proxy'sinde kullanılacak bir sertifika kaynağı oluşturmanız gerekir. Google tarafından yönetilen bir SSL sertifikası veya kendi kendine yönetilen bir SSL sertifikası kullanarak SSL sertifikası kaynağı oluşturabilirsiniz. Google Cloud bu sertifikaları otomatik olarak aldığından, yönettiğinden ve yenilediğinden Google tarafından yönetilen sertifikaları kullanmanızı öneririz.
Bu eğitimde kullanılan Global harici uygulama yük dengeleyicisi için desteklenen sertifikalar hakkında daha fazla bilgi edinmek üzere aşağıdakilere bakın:
SSL sertifikalarına genel bakış | Yük Dengeleme | Google Cloud
Aşağıdaki bölümde, ortak adın tam nitelikli alan adıyla (agentspace.YOUR-EXTERNAL-IP.nip.io) eşlenmesini gerektiren kendinden imzalı bir sertifika oluşturacaksınız (bunun yerine Google tarafından yönetilen bir sertifika da kullanılabilir). Bu eşleme, daha önce oluşturulan yük dengeleyicinin harici IP adresine karşılık gelir. Aşağıda örnek verilmiştir:
Ortak ad: agentspace.34.54.158.206.nip.io
Cloud Shell'de özel anahtarı oluşturun.
openssl genrsa -out private-key-file.pem 2048
Cloud Shell'de, pem dosyasını oluşturmak için kullanılan bir config.txt dosyası oluşturun. DNS 1 girişinde tam nitelikli alan adını belirtin.Aşağıdaki yapılandırmada agentspace.YOUR-EXTERNAL-IP.nip.io örneği verilmiştir (ör. agentspace.34.54.158.206.nip.io).
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)
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 = agentspace.YOUR-EXTERNAL-IP.nip.io
EOF
Cloud Shell'de config.txt ve private-key-file.pem dosyalarının oluşturulduğunu doğrulayın.
user@cloudshell:$ ls
config.txt private-key-file.pem
Cloud Shell'de aşağıdakileri yapın.
sudo openssl req -new -key private-key-file.pem \
-out csr.pem \
-config config.txt
Örnek:
user@cloudshell:$ sudo openssl req -new -key private-key-file.pem \
-out csr.pem \
-config config.txt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name)[]:agentspace.34.54.158.206.nip.io
Email Address []:
Cloud Shell'de, sertifika imzalama isteği için gerekli PEM dosyasının oluşturulduğunu doğrulayın.
user@cloudshell:$ ls
config.txt csr.pem private-key-file.pem
Cloud Shell'de sertifikayı oluşturun.
sudo openssl x509 -req \
-signkey private-key-file.pem \
-in csr.pem \
-out cert.cert \
-extfile config.txt \
-extensions extension_requirements \
-days 365
Örnek çıkış:
user@cloudshell:$ sudo openssl x509 -req \
-signkey private-key-file.pem \
-in csr.pem \
-out cert.cert \
-extfile config.txt \
-extensions extension_requirements \
-days 365
Certificate request self-signature ok
subject=CN = agentspace.34.54.158.206.nip.io
Cloud Shell'de cert.cert dosyasının oluşturulduğunu doğrulayın.
user@cloudshell:$ ls
cert.cert config.txt csr.pem private-key-file.pem
Harici yük dengeleyicinizle ilişkilendirmek için bir sertifika kaynağı oluşturun. Sertifika ve özel anahtar parametrelerini kendi dosya adlarınızla değiştirin.
Cloud Shell'de aşağıdakileri yapın:
gcloud compute ssl-certificates create agentspace-self-signed-cert \
--certificate=cert.cert \
--private-key=private-key-file.pem \
--global
Cloud Shell'de aşağıdakileri yapın:
gcloud compute url-maps create agentspace-lb \
--default-service=agentspace-ineg-bes \
--global
Cloud Shell'de aşağıdakileri yapın:
gcloud compute target-https-proxies create https-proxy \
--ssl-certificates=agentspace-self-signed-cert \
--url-map=agentspace-lb \
--global
Cloud Shell'de aşağıdakileri yapın:
gcloud compute forwarding-rules create agentspace-fr \
--load-balancing-scheme=EXTERNAL_MANAGED \
--network-tier=PREMIUM \
--address=external-ip \
--target-https-proxy=https-proxy \
--global \
--ports=443
8. Herkese açık DNS alt bölgesi oluşturma
Aşağıdaki bölümde, nip.io tarafından harici yük dengeleyici IP adresine göre çözümleme yapmak için kullanılan bir Public DNS Zone oluşturacaksınız.
Cloud Shell'de, harici yük dengeleyicinizin IP adresi için bir değişken oluşturmak üzere aşağıdakileri yapın:
externalip=<YOUR-EXTERNAL-IP>
echo $externalip
Cloud Shell'de aşağıdakileri yapın:
gcloud dns --project=$project managed-zones create agentspace-dns --description="Agentspace public dns" --dns-name="$externalip.nip.io." --visibility="public"
Cloud Shell'de aşağıdakileri yapın:
gcloud dns --project=$project record-sets create agentspace.$externalip.nip.io. --zone="agentspace-dns" --type="A" --ttl="300" --rrdatas="$externalip"
9. Agentspace uygulama URL'lerini tanımlama
Aşağıdaki prosedürde, Google tarafından oluşturulan ve her bir uygulamaya Agentspace ile eşlenen Google tarafından yönetilen Agentspace genel URL'leri tanımlanmaktadır. URL'lerin çıktısı, referans mimarisine dayalı örneklerdir. Bu nedenle, URL'lerinizin doğru olduğundan emin olmanız gerekir.
Web uygulamanızın bağlantısını uygulama başına sakladığınızdan emin olun.
Drive uygulaması
Agentspace Web URL'si:
https://vertexaisearch.cloud.google.com/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
SharePoint uygulaması
Agentspace Web URL'si: https://auth.cloud.google/signin/locations/global/workforcePools/your-pool-name/providers/your-provider-name?continueUrl=https://vertexaisearch.cloud.google/home/cid/f190000-0000-4d0a-0000-d08df6e3bef6
10. Gelişmiş ana makine ve yol kuralı oluşturma
Aşağıdaki bölümde, ana makine ve yol kurallarını bulut konsolunu kullanarak tanımlama seçeneğini etkinleştirmek için yük dengeleyicilerin yönlendirme kurallarını güncelleyeceksiniz. Aşağıdaki tabloda, özel değerler (yukarıdan aşağıya doğru sıralanmış) özetlenmiştir. Ortamınıza göre güncelleyin:
Özel Değer | Eğiticiye Dayalı Örnek | |
Ana makineler | agentspace.YOUR-EXTERNAL-IP.nip.io | agentspace.34.54.158.206.nip.io |
defaultService | projects/<projectid>/global/backendServices/agentspace-ineg-bes | projects/your-project-id/global/backendServices/agentspace-ineg-bes |
prefixMatch | /<name of Agentspace app#1> | /drive-app |
pathRedirect | /<Agentspace URL path of app#1> | /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd |
hostRedirect | vertexaisearch.cloud.google.com | vertexaisearch.cloud.google.com |
prefixMatch | /<name of Agentspace app#2> | /sharepoint-app |
pathRedirect | /<Agentspace URL path of app#2> | //signin/locations/global/workforcePools/your-pool-name/providers/your-provider-name?continueUrl=https://vertexaisearch.cloud.google/home/cid/f190000-0000-4d0a-0000-d08df6e3bef6 |
hostRedirect | auth.cloud.google | vertexaisearch.cloud.google.com |
Ana makine ve yol kurallarına erişmek için aşağıdakilere gidin:
Load balancing (Yük dengeleme) → agentspace-lb → Düzenle'yi seçin.
Yönlendirme kuralları → Gelişmiş ana makine ve yol kuralları'nı seçin.
Ana makine ve yol kuralı ekle'yi seçin.
Artık yeni bir ana makine ve yol kuralı oluşturma seçeneği sunulur. Ana makineler bölümüne agentspace.YOUR-EXTERNAL-IP.nip.io veya özel alan adını girin.
Yol eşleştirici alanında (eşleşmeler, işlemler ve hizmetler) aşağıdaki içeriği ortam yapılandırmanızla güncelleyin ve ardından Güncelle'yi seçin.
defaultService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
name: matcher1
routeRules:
- matchRules:
- prefixMatch: /<name of Agentspace app#1>
priority: 1
urlRedirect:
pathRedirect: /<Agentspace URL path of app#1>
hostRedirect: vertexaisearch.cloud.google.com
redirectResponseCode: FOUND
- matchRules:
- prefixMatch: /<name of Agentspace app#2>
priority: 2
urlRedirect:
pathRedirect: /<Agentspace URL path of app#2>
hostRedirect: auth.cloud.google
redirectResponseCode: FOUND
Örnek ekran görüntüsü:
11. Doğrulama
Dağıtım tamamlandı. Aşağıdaki örneklerde gösterildiği gibi, bir web tarayıcısı veya terminal üzerinden özel alanı kullanarak Agentspace uygulamasına erişebilirsiniz. Bunun için agentspace.YOUR-EXTERNAL-IP.nip.io/path(ör. agentspace.34.54.158.206.nip.io) adresini belirtmeniz gerekir.
Agentspace uygulaması: drive-app
Yol: agentspace.34.54.158.206.nip.io/drive-app
Agentspace uygulaması: sharepoint-app
Yol: agentspace.34.54.158.206.nip.io/sharepoint-app
12. Temizleme
OAuth kimlik bilgilerini silmek için aşağıdakileri yapın:
API'ler ve Hizmetler → Kimlik Bilgileri'ne gidin.
OAuth 2.0 istemci kimlikleri bölümünde kimlik bilgilerinizi seçin ve silin.
Tek bir Cloud Shell terminalinden laboratuvar bileşenlerini silin:
gcloud compute forwarding-rules delete agentspace-fr --global -q
gcloud compute target-https-proxies delete https-proxy --global -q
gcloud compute url-maps delete agentspace-lb --global -q
cloud compute ssl-certificates delete agentspace-self-signed-cert --global -q
gcloud compute backend-services delete agentspace-ineg-bes --global -q
gcloud compute network-endpoint-groups delete agentspace-ineg --global -q
gcloud dns --project=$projectid record-sets delete agentspace.$externalip.nip.io --zone="agentspace-dns" --type="A"
gcloud dns --project=$projectid managed-zones delete agentspace-dns
gcloud compute addresses delete external-ip --global -q
gcloud compute networks delete agentspace-vpc -q
13. Tebrikler
Tebrikler. Gelişmiş trafik yönetimiyle harici uygulama yük dengeleyici kullanarak özel alan adı üzerinden Agentspace'e bağlantıyı başarıyla yapılandırdınız ve doğruladınız.
Yük dengeleyici altyapısını oluşturdunuz, özel alan kullanarak Agentspace'e bağlanmayı sağlayan ana makine ve yol yönlendirmesini etkinleştiren bir İnternet NEG'si, Cloud DNS ve gelişmiş trafik yönetimi oluşturmayı öğrendiniz.
Cosmopup, codelab'lerin harika olduğunu düşünüyor.