1. Pengantar
Dokumen ini memberikan arsitektur referensi untuk mengonfigurasi domain kustom guna mengakses AgentSpace menggunakan WIF. Pengguna dapat menggunakan domain kustom, bukan URL yang dikelola Google yang ditetapkan selama pembuatan aplikasi Agentspace. Codelab ini menunjukkan akses ke aplikasi kalender dan drive Agentspace menggunakan domain nip.io. nip.io adalah layanan open source gratis yang menyediakan DNS karakter pengganti untuk alamat IP apa pun. Pada dasarnya, fitur ini memungkinkan Anda membuat nama host yang di-resolve ke alamat IP tertentu tanpa perlu menyiapkan server DNS sendiri atau mengubah file /etc/hosts.
Sebaiknya gunakan domain Anda sendiri, tetapi untuk tujuan demonstrasi, nip.io digunakan dalam tutorial ini.
Dalam skenario deployment yang digambarkan di bawah (Gambar 1), AgentSpace memublikasikan datastore yang berisi Aplikasi Kalender yang diakses melalui URL publik yang dikelola Google.
Gambar 1
Pertumbuhan berkelanjutan datastore dan aplikasi berikutnya menghasilkan pengelolaan lebih lanjut URL yang dikelola Google Publik seperti yang digambarkan dalam skenario deployment di bawah, (Gambar 2) yang menghasilkan pemetaan 1:1 aplikasi dan URL Agentspace.
Gambar 2.
Domain kustom memungkinkan pemetaan berbagai aplikasi AgentSpace ke satu domain pelanggan yang ditentukan pengguna. Fitur ini memungkinkan jalur URL tertentu dikaitkan dengan setiap aplikasi Agentspace, sehingga menawarkan fleksibilitas yang lebih besar seperti yang digambarkan dalam skenario deployment di bawah, (Gambar 3). Sebagai contoh, ruang agen domain yang dikelola pelanggan agentspace.cosmopup.com disegmentasikan ke dalam aturan jalur, yang masing-masing dipetakan ke aplikasi Agentspace tertentu, contohnya meliputi:
- agentspace.cosmopup.com/drive-app yang dipetakan ke aplikasi Agentspace untuk Drive Workspace
- agentspace.cosmopup.com/sharepoint-app yang dipetakan ke aplikasi Agentspace untuk Sharepoint
Aturan host dan jalur Load Balancer Aplikasi Eksternal,yang dikonfigurasi melalui PETA URL, mengontrol logika yang memetakan domain kustom ke URL yang dikelola Google. Aplikasi ini menjalankan fungsi berikut menggunakan example.agentspace.cosmopup.com/drive-app
- Jalur host domain kustom agentspace.cosmopup.com/drive-app diterima oleh load balancer
- Peta URL dikonfigurasi untuk pencocokan aturan host dan jalur lanjutan
- Host agentspace.cosmopup.com memenuhi syarat untuk pencocokan jalur dan pengalihan
- Jalur host domain kustom agentspace.cosmopup.com/drive-app tunduk pada UrlRedirect
- pathRedirect adalah jalur Agentspace: /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
- hostRedirect adalah host Agentspace: vertexaisearch.cloud.google.com
- Jalur host domain kustom agentspace.cosmopup.com/sharepoint-app tunduk pada UrlRedirect
- pathRedirect adalah jalur Agentspace: /signin/locations/global/workforcePools/your-pool-name/providers/your-provider-name?continueUrl=https://vertexaisearch.cloud.google/home/cid/f190000-0000-4d0a-0000-d08df6e3bef6
- hostRedirect adalah host Agentspace: auth.cloud.google
- Operasi pengalihan dilakukan sebelum merutekan ke layanan backend
Gambar 3
Yang akan Anda pelajari
- Membuat Load Balancer Aplikasi Eksternal Global
- Membuat perutean untuk mengalihkan domain kustom ke aplikasi Agentspace
- Cara mengintegrasikan nip.io dan Cloud DNS untuk membuat domain kustom
- Cara memvalidasi akses ke domain kustom Agentspace
Yang Anda butuhkan
- Project Google Cloud dengan izin Pemilik
- URL aplikasi Agentspace yang ada
- Domain Kustom milik sendiri (opsional)
- Sertifikat - Ditandatangani Sendiri atau Dikelola Google
2. Yang akan Anda build
Anda akan membuat Load Balancer Aplikasi Eksternal Global dengan kemampuan pengelolaan traffic lanjutan untuk mengaktifkan pencocokan jalur domain kustom untuk aplikasi Agentspace menggunakan pengalihan host dan jalur. Setelah di-deploy, Anda akan melakukan tindakan berikut untuk memvalidasi akses ke aplikasi Agentspace:
- Akses aplikasi Agentspace Anda dengan membuka browser web dan membuka domain kustom serta jalur yang ditentukan.
3. Persyaratan jaringan
Berikut adalah perincian persyaratan jaringan:
Komponen | Deskripsi |
VPC (agentspace-vpc) | VPC mode kustom |
NEG Internet | Resource yang digunakan untuk menentukan backend eksternal untuk load balancer yang dikonfigurasi sebagai FQDN yang menunjukkan FQDN yang Dikelola Google Agentspace (vertexaisearch.cloud.google.com). FQDN internet melakukan pencarian DNS dalam VPC untuk resolusi. |
Layanan Backend | Layanan backend bertindak sebagai jembatan antara load balancer dan resource backend Anda. Dalam tutorial ini, layanan backend dikaitkan dengan NEG Internet. |
Sertifikat | Untuk mengonfigurasi sertifikat bagi Load Balancer Aplikasi di Google Cloud, Anda akan menggunakan layanan Pengelola Sertifikat dan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri |
Cloud DNS | Zona publik Cloud DNS digunakan untuk menyelesaikan IP eksternal load balancer aplikasi eksternal ke nip.io (agentspace.externalip.nip.io). Atau, gunakan domain kustom dan data A yang terdiri dari Alamat IP load balancer. |
4. Topologi codelab
5. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.
6. Sebelum memulai
Mengaktifkan API
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
Aktifkan semua layanan yang diperlukan:
gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com
7. Menyiapkan Komponen Load Balancer
Mencadangkan alamat IP eksternal load balancer
Di dalam Cloud Shell, cadangkan alamat IP eksternal untuk load balancer:
gcloud compute addresses create external-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
Di dalam Cloud Shell, lihat Alamat IP yang dicadangkan:
gcloud compute addresses describe external-ip \
--global | grep -i address:
Contoh output:
user@cloudshell$ gcloud compute addresses describe external-ip \
--global | grep -i address:
address: 34.54.158.206
Menyiapkan NEG Internet
Buat NEG Internet, dan tetapkan –network-endpoint-type ke internet-fqdn-port (nama host dan port tempat backend eksternal Anda dapat dijangkau). Untuk menyelesaikan Agentspace, FQDN vertexaisearch.cloud.google.com dan PORT 443 digunakan.
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
Buat Load Balancer
Di dalam Cloud Shell, lakukan hal berikut:
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
Buat Sertifikat
Pada tahap ini, Anda telah membuat NEG internet dan layanan backend. Di bagian berikutnya, Anda perlu membuat resource sertifikat untuk digunakan di proxy target HTTPs. Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri. Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud memperoleh, mengelola, dan memperpanjang sertifikat ini secara otomatis.
Untuk mengetahui lebih lanjut sertifikat yang didukung untuk Load Balancer Aplikasi eksternal Global yang digunakan dalam tutorial ini, lihat artikel berikut:
Ringkasan sertifikat SSL | Load Balancing | Google Cloud
Di bagian berikut, Anda akan membuat sertifikat yang ditandatangani sendiri (meskipun sertifikat yang dikelola Google dapat digunakan sebagai gantinya) yang memerlukan pemetaan nama umum ke nama domain yang sepenuhnya memenuhi syarat (agentspace.YOUR-EXTERNAL-IP.nip.io) sesuai dengan alamat IP eksternal load balancer yang dibuat sebelumnya, contoh di bawah:
Nama Umum: agentspace.34.54.158.206.nip.io
Di dalam Cloud Shell, buat kunci pribadi
openssl genrsa -out private-key-file.pem 2048
Di dalam Cloud Shell, buat file config.txt yang digunakan untuk membuat file pem. Tentukan nama domain yang sepenuhnya memenuhi syarat di entri DNS 1 agentspace.YOUR-EXTERNAL-IP.nip.io, misalnya agentspace.34.54.158.206.nip.io dalam konfigurasi di bawah.
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
Di dalam Cloud Shell, validasi bahwa config.txt dan private-key-file.pem telah dibuat.
user@cloudshell:$ ls
config.txt private-key-file.pem
Di dalam Cloud Shell, lakukan hal berikut.
sudo openssl req -new -key private-key-file.pem \
-out csr.pem \
-config config.txt
Contoh:
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 []:
Di dalam Cloud Shell, validasi pembuatan file pem yang diperlukan untuk penandatanganan sertifikat.
user@cloudshell:$ ls
config.txt csr.pem private-key-file.pem
Di dalam Cloud Shell, buat sertifikat.
sudo openssl x509 -req \
-signkey private-key-file.pem \
-in csr.pem \
-out cert.cert \
-extfile config.txt \
-extensions extension_requirements \
-days 365
Contoh Output:
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
Di dalam Cloud Shell, validasi pembuatan file, cert.cert
user@cloudshell:$ ls
cert.cert config.txt csr.pem private-key-file.pem
Buat resource sertifikat untuk dikaitkan dengan load balancer eksternal Anda. Ganti parameter sertifikat dan kunci pribadi dengan nama file spesifik Anda.
Di Cloud Shell, lakukan hal berikut:
gcloud compute ssl-certificates create agentspace-self-signed-cert \
--certificate=cert.cert \
--private-key=private-key-file.pem \
--global
Di Cloud Shell, lakukan hal berikut:
gcloud compute url-maps create agentspace-lb \
--default-service=agentspace-ineg-bes \
--global
Di Cloud Shell, lakukan hal berikut:
gcloud compute target-https-proxies create https-proxy \
--ssl-certificates=agentspace-self-signed-cert \
--url-map=agentspace-lb \
--global
Di Cloud Shell, lakukan hal berikut:
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. Buat Zona DNS Publik
Di bagian berikut, Anda akan membuat Zona DNS Publik yang digunakan oleh nip.io untuk di-resolve terhadap Alamat IP load balancer eksternal.
Di Cloud Shell, lakukan langkah-langkah berikut untuk membuat variabel bagi alamat IP load balancer eksternal Anda:
externalip=<YOUR-EXTERNAL-IP>
echo $externalip
Di Cloud Shell, lakukan hal berikut:
gcloud dns --project=$project managed-zones create agentspace-dns --description="Agentspace public dns" --dns-name="$externalip.nip.io." --visibility="public"
Di Cloud Shell, lakukan hal berikut:
gcloud dns --project=$project record-sets create agentspace.$externalip.nip.io. --zone="agentspace-dns" --type="A" --ttl="300" --rrdatas="$externalip"
9. Mengidentifikasi URL aplikasi Agentspace
Prosedur berikut mengidentifikasi URL Publik Agentspace yang dikelola Google dan dibuat oleh Google yang dipetakan ke setiap aplikasi Agentspace. Output URL adalah contoh berdasarkan arsitektur referensi, jadi Anda harus memastikan URL Anda akurat.
Pastikan untuk menyimpan link ke aplikasi web Anda, per aplikasi.
Aplikasi Drive
URL Web Agentspace:
https://vertexaisearch.cloud.google.com/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
Aplikasi Sharepoint
URL Web Agentspace: 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. Membuat aturan host dan jalur Lanjutan
Di bagian berikut, Anda akan memperbarui aturan perutean load balancer untuk mengaktifkan opsi guna menentukan aturan host dan jalur menggunakan konsol cloud. Tabel di bawah menguraikan nilai kustom (dalam urutan atas ke bawah), yang diperbarui berdasarkan lingkungan Anda:
Nilai Kustom | Contoh Berdasarkan Tutorial | |
Host | 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 | /<Jalur URL Agentspace aplikasi#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 |
Buka bagian berikut untuk mengakses aturan host dan jalur
Load balancing → agentspace-lb → Pilih edit
Pilih Aturan perutean → Aturan host dan jalur lanjutan
Pilih Tambahkan aturan host dan jalur
Sekarang Anda akan diminta untuk membuat aturan host dan jalur baru. Di bagian host, masukkan agentspace.YOUR-EXTERNAL-IP.nip.io atau domain kustom.
Di kolom Pencocok jalur (kecocokan, tindakan, dan layanan), perbarui konten di bawah dengan konfigurasi lingkungan Anda, lalu pilih perbarui.
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
Contoh Screenshot:
11. Validasi
Deployment selesai. Anda dapat mengakses aplikasi Agentspace menggunakan domain kustom melalui browser web atau terminal dengan menentukan agentspace.YOUR-EXTERNAL-IP.nip.io/path, misalnya agentspace.34.54.158.206.nip.io, contohnya di bawah:
Aplikasi Agentspace: drive-app
Jalur: agentspace.34.54.158.206.nip.io/drive-app
Aplikasi Agentspace: sharepoint-app
Jalur: agentspace.34.54.158.206.nip.io/sharepoint-app
12. Pembersihan
Untuk menghapus Kredensial OAuth, lakukan hal berikut:
Buka APIS & Services → Credentials
Di bagian OAuth 2.0 Client IDs, pilih kredensial Anda, lalu hapus
Dari satu terminal Cloud Shell, hapus komponen lab:
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. Selamat
Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi konektivitas ke Agentspace menggunakan domain kustom dengan Load Balancer Aplikasi Eksternal dengan pengelolaan traffic lanjutan.
Anda telah membuat infrastruktur load balancer, mempelajari cara membuat NEG Internet, Cloud DNS, dan pengelolaan traffic lanjutan yang memungkinkan pengalihan host dan jalur yang memungkinkan konektivitas ke Agentspace menggunakan domain kustom.
Cosmopup menganggap codelab itu luar biasa!!