1. Pengantar
Dokumen ini memberikan arsitektur referensi untuk mengonfigurasi domain kustom guna mengakses AgentSpace. Sebagai ganti URL yang dikelola Google yang ditetapkan selama pembuatan aplikasi Agentspace, pengguna dapat menggunakan domain kustom. Codelab ini menunjukkan akses ke aplikasi Drive dan kalender 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 datastore yang berkelanjutan dan aplikasi berikutnya menghasilkan pengelolaan lebih lanjut URL Publik yang dikelola Google 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). Misalnya, domain yang dikelola pelanggan agentspace.cosmopup.com disegmentasikan menjadi 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/calendar-app yang dipetakan ke aplikasi Agentspace untuk Kalender Workspace
Aturan host dan jalur Load Balancer Aplikasi Eksternal,yang dikonfigurasi melalui PETA URL, mengontrol logika yang memetakan domain kustom ke URL yang dikelola Google. Fungsi ini menjalankan fungsi berikut menggunakan contoh 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 dan penulisan ulang jalur
- Jalur host domain kustom agentspace.cosmopup.com/drive-app tunduk pada UrlRewrite
- PathPrefixRewrite adalah jalur Agentspace: /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
- hostRewrite adalah host Agentspace: vertexaisearch.cloud.google.com
- Operasi penulisan ulang dilakukan sebelum merutekan ke layanan backend
- Layanan backend merutekan traffic ke aplikasi drive-app berdasarkan URL Agentspace
Gambar 3
Yang akan Anda pelajari
- Membuat Load Balancer Aplikasi Eksternal Global
- Membuat penulisan ulang layanan backend menggunakan domain kustom dan operasi penulisan ulang 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 Pemilik 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 penulisan ulang 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 Agentspace yang Dikelola Google (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 untuk Application Load Balancer 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 me-resolve 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. Membuat Jaringan VPC
Jaringan VPC
Di dalam Cloud Shell, lakukan hal berikut:
gcloud compute networks create agentspace-vpc --subnet-mode custom
8. 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 me-resolve 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
Membuat 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
Membuat Sertifikat
Pada tahap ini, Anda telah membuat NEG internet dan layanan backend. Di bagian berikut, Anda harus membuat resource sertifikat untuk digunakan di proxy target HTTP. 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 hal 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) yang 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 config.txt dan private-key-file.pem yang dihasilkan.
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 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, validasikan 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
9. Membuat Zona DNS Publik
Di bagian berikut, Anda akan membuat Zona DNS Publik yang digunakan oleh nip.io untuk me-resolve terhadap Alamat IP load balancer eksternal.
Di Cloud Shell, lakukan tindakan 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"
10. Kredensial OAuth
Di bagian berikut, Anda akan membuat kredensial Oauth untuk aplikasi Web yang mengalihkan URL yang dikelola Google ke oauth-redirect untuk autentikasi. Kredensial yang dihasilkan tidak diperlukan untuk tutorial.
Untuk mengetahui Oauth lebih lanjut, lihat referensi berikut:
Menambahkan tindakan Google Kalender dan Gmail | Google Agentspace
Membuat aplikasi OAuth dan menambahkan cakupan
- Buka API & Services > OAuth consent screen: Buka OAuth consent screen
- Pilih Internal, lalu klik Buat.
- Masukkan nama untuk aplikasi OAuth Anda.
- Masukkan email dukungan pengguna.
- Masukkan informasi kontak developer.
- Klik Simpan dan lanjutkan.
Membuat client ID OAuth
Prosedur ini menjelaskan cara membuat client ID OAuth baru untuk tindakan Google Cloud. Client ID dan secret OAuth ini juga dapat digunakan untuk tindakan Google Cloud lainnya. Jika sudah memiliki client ID OAuth Google Cloud untuk tindakan Google Cloud, Anda dapat menggunakan client ID dan secret tersebut untuk tindakan Google Kalender, bukan membuat client ID baru.
- Buka halaman Kredensial, lalu klik Buat kredensial > Client ID OAuth.
- Pilih Web application.
- Masukkan nama untuk client ID Anda.
- Klik Add URI dan masukkan URI berikut: https://vertexaisearch.cloud.google.com/oauth-redirect
- Klik Buat dan salin informasi berikut:
- ID Klien
- Rahasia klien
11. Mengidentifikasi URL aplikasi Agentspace
Prosedur berikut mengidentifikasi URL Publik Agentspace yang dikelola Google yang dibuat oleh Google dan dipetakan ke setiap aplikasi Agentspace. Output URL adalah contoh berdasarkan arsitektur referensi, sehingga Anda harus memastikan URL Anda akurat.
Pastikan untuk menyimpan link ke aplikasi web Anda, per aplikasi.
Aplikasi Kalender
URL Web Agentspace: https://vertexaisearch.cloud.google.com/us/home/cid/bb6b8b27-939b-494d-9227-45903bb8afcf
Aplikasi Drive
URL Web Agentspace:
https://vertexaisearch.cloud.google.com/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
12. 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 ini menguraikan nilai kustom (dalam urutan atas-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 | Lihat Screenshot |
prefixMatch | /<name of Agentspace app#1> | /drive-app |
backendService | projects/<projectid>/global/backendServices/agentspace-ineg-bes | Lihat Screenshot |
pathPrefixRewrite | /<Agentspace URL path of app#1> | /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd |
hostRewrite | vertexaisearch.cloud.google.com | vertexaisearch.cloud.google.com |
prefixMatch | /<name of Agentspace app#2> | /calendar-app |
backendService | projects/<projectid>/global/backendServices/agentspace-ineg-bes | Lihat Screenshot |
pathPrefixRewrite | /<Agentspace URL path of app#2> | /us/home/cid/bb6b8b27-939b-494d-9227-45903bb8afcf |
hostRewrite | vertexaisearch.cloud.google.com | vertexaisearch.cloud.google.com |
Buka link 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
routeAction:
weightedBackendServices:
- backendService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
weight: 100
urlRewrite:
pathPrefixRewrite: /<Agentspace URL path of app#1>
hostRewrite: vertexaisearch.cloud.google.com
- matchRules:
- prefixMatch: /<name of Agentspace app#2>
priority: 2
routeAction:
weightedBackendServices:
- backendService: projects/<projectid>/global/backendServices/agentspace-ineg-bes
weight: 101
urlRewrite:
pathPrefixRewrite: /<Agentspace URL path of app#2>
hostRewrite: vertexaisearch.cloud.google.com
Contoh Screenshot:
13. Validasi
Deployment selesai. Anda dapat mengakses aplikasi Agentspace menggunakan domain kustom melalui browser web atau terminal dengan menentukan agentspace.IP-EKSTERNAL-ANDA.nip.io/path, misalnya agentspace.34.54.158.206.nip.io, contoh di bawah:
Aplikasi Agentspace: drive-app
Jalur: agentspace.34.54.158.206.nip.io/drive-app
Aplikasi Agentspace: drive-app
Jalur: agentspace.34.54.158.206.nip.io/calendar-app
14. Pembersihan
Menghapus Kredensial OAuth, lakukan hal berikut:
Buka API & Layanan → Kredensial
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
15. Selamat
Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi konektivitas ke Agentspace menggunakan domain kustom menggunakan 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 penulisan ulang host dan jalur yang memungkinkan konektivitas ke Agentspace menggunakan domain kustom.
Cosmopup menganggap codelab itu luar biasa.