1. Wprowadzenie
Ten dokument zawiera architekturę referencyjną do konfigurowania własnej domeny w celu uzyskiwania dostępu do AgentSpace przy użyciu WIF. Zamiast adresu URL zarządzanego przez Google, który jest przypisywany podczas tworzenia aplikacji Agentspace, użytkownicy mogą korzystać z własnej domeny. To ćwiczenie pokazuje, jak uzyskać dostęp do aplikacji Kalendarz i Dysk w Agentspace przy użyciu domeny nip.io. nip.io to bezpłatna usługa open source, która zapewnia DNS symbolu zastępczego dla dowolnego adresu IP. Umożliwia to utworzenie nazwy hosta, która jest rozpoznawana jako określony adres IP, bez konieczności konfigurowania własnego serwera DNS ani modyfikowania pliku /etc/hosts.
Zalecamy używanie własnej domeny, ale w celach demonstracyjnych w samouczku używamy domeny nip.io.
W przedstawionym poniżej scenariuszu wdrażania (rysunek 1) usługa AgentSpace opublikowała magazyn danych zawierający aplikację Kalendarz, do której dostęp uzyskuje się za pomocą publicznego adresu URL zarządzanego przez Google.
Rysunek 1.

Dalszy rozwój magazynu danych i kolejnych aplikacji prowadzi do dalszego zarządzania publicznymi adresami URL zarządzanymi przez Google, jak pokazano w scenariuszu Deployment poniżej (rysunek 2), co skutkuje mapowaniem aplikacji Agentspace i adresów URL w stosunku 1:1.
Rysunek 2.

Własna domena umożliwia mapowanie różnych aplikacji AgentSpace na jedną domenę klienta określoną przez użytkownika. Ta funkcja umożliwia powiązanie z każdą aplikacją Agentspace konkretnej ścieżki adresu URL, co zapewnia większą elastyczność, jak pokazano w scenariuszu wdrażania poniżej (rysunek 3). Na przykład domena zarządzana przez klienta agentspace.cosmopup.com jest podzielona na reguły ścieżek, z których każda jest przypisana do konkretnej aplikacji Agentspace. Przykłady:
- agentspace.cosmopup.com/drive-app, która jest mapowana na aplikację Agentspace na Dysk Workspace.
- agentspace.cosmopup.com/sharepoint-app, która jest mapowana na aplikację Agentspace dla SharePoint.
Reguły hosta i ścieżki zewnętrznego systemu równoważenia obciążenia aplikacji, skonfigurowane za pomocą mapy URL, kontrolują logikę, która mapuje własną domenę na adres URL zarządzany przez Google. Wykonuje on te funkcje, korzystając z przykładowego adresu agentspace.cosmopup.com/drive-app.
- Ścieżka hosta własnej domeny agentspace.cosmopup.com/drive-app jest odbierana przez system równoważenia obciążenia.
- Mapa adresów URL jest skonfigurowana pod kątem zaawansowanego dopasowywania reguł hostów i ścieżek
- Host agentspace.cosmopup.com kwalifikuje się do dopasowywania ścieżek i przekierowania
- Ścieżka hosta własnej domeny agentspace.cosmopup.com/drive-app podlega przekierowaniu adresu URL
- pathRedirect to ścieżka przestrzeni agenta: /us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd
- hostRedirect to host Agentspace: vertexaisearch.cloud.google.com
- Ścieżka hosta własnej domeny agentspace.cosmopup.com/sharepoint-app podlega przekierowaniu adresu URL
- pathRedirect to ścieżka przestrzeni agentów: /signin/locations/global/workforcePools/your-pool-name/providers/your-provider-name?continueUrl=https://vertexaisearch.cloud.google/home/cid/f190000-0000-4d0a-0000-d08df6e3bef6
- hostRedirect to host Agentspace: auth.cloud.google
- Operacja przekierowania jest wykonywana przed przekierowaniem do usługi backendu
Ilustracja 3

Czego się nauczysz
- Tworzenie globalnego zewnętrznego systemu równoważenia obciążenia aplikacji
- Tworzenie routingu w celu przekierowania własnej domeny do aplikacji Agentspace
- Instrukcje: Jak zintegrować nip.io i Cloud DNS, aby utworzyć własną domenę
- Jak potwierdzić dostęp do własnej domeny Agentspace
Czego potrzebujesz
- Projekt Google Cloud z uprawnieniami właściciela
- Adresy URL istniejących aplikacji Agentspace
- Własna domena (opcjonalnie)
- Certyfikaty – podpisane samodzielnie lub zarządzane przez Google
2. Co utworzysz
Skonfigurujesz globalny zewnętrzny system równoważenia obciążenia aplikacji z zaawansowanymi funkcjami zarządzania ruchem, aby włączyć dopasowywanie ścieżki własnej domeny w przypadku aplikacji AgentSpace przy użyciu przekierowania hosta i ścieżki. Po wdrożeniu wykonaj te czynności, aby sprawdzić dostęp do aplikacji Agentspace:
- Otwórz aplikację Agentspace, otwierając przeglądarkę i przechodząc do domeny niestandardowej i określonej ścieżki.

3. Wymagania związane z siecią
Poniżej znajdziesz zestawienie wymagań sieciowych:
Komponenty | Opis |
VPC (agentspace-vpc) | Sieć VPC w trybie niestandardowym |
Internetowa grupa punktów końcowych sieci | Zasób używany do definiowania zewnętrznego backendu systemu równoważenia obciążenia skonfigurowanego jako pełna i jednoznaczna nazwa domeny (FQDN) oznaczająca zarządzaną przez Google pełną i jednoznaczną nazwę domeny Agentspace (vertexaisearch.cloud.google.com). Internetowy FQDN wykonuje wyszukiwanie DNS w sieci VPC w celu rozpoznania nazwy. |
Usługa backendu | Usługa backendu pełni funkcję pomostu między systemem równoważenia obciążenia a zasobami backendu. W samouczku usługa backendu jest powiązana z internetową grupą punktów końcowych sieci. |
Certyfikaty | Aby skonfigurować certyfikaty dla usługi system równoważenia obciążenia aplikacji w Google Cloud, użyj usługi menedżer certyfikatów oraz zarządzanych przez Google lub zarządzanych samodzielnie certyfikatów SSL. |
Cloud DNS | Publiczna strefa Cloud DNS służy do rozpoznawania zewnętrznego adresu IP zewnętrznego systemu równoważenia obciążenia aplikacji na nip.io (agentspace.externalip.nip.io). Możesz też użyć własnej domeny i rekordu A zawierającego adres IP systemu równoważenia obciążenia. |
4. Topologia ćwiczeń z programowania


5. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu. - Warto wiedzieć, że istnieje też trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.
6. Zanim zaczniesz
Włącz interfejsy API
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
echo $project
echo $region
Włącz wszystkie niezbędne usługi:
gcloud services enable compute.googleapis.com
gcloud services enable dns.googleapis.com
7. Konfigurowanie komponentów systemu równoważenia obciążenia
Rezerwowanie zewnętrznego adresu IP systemu równoważenia obciążenia
W Cloud Shell zarezerwuj zewnętrzny adres IP dla systemu równoważenia obciążenia:
gcloud compute addresses create external-ip \
--network-tier=PREMIUM \
--ip-version=IPV4 \
--global
W Cloud Shell wyświetl zarezerwowany adres IP:
gcloud compute addresses describe external-ip \
--global | grep -i address:
Przykładowe dane wyjściowe:
user@cloudshell$ gcloud compute addresses describe external-ip \
--global | grep -i address:
address: 34.54.158.206
Konfigurowanie internetowej grupy punktów końcowych sieci
Utwórz internetową grupę NEG i ustaw wartość –network-endpoint-type na internet-fqdn-port (nazwa hosta i port, pod którym można uzyskać dostęp do zewnętrznego backendu). Aby rozwiązać problem z Agentspace, używana jest w pełni kwalifikowana nazwa domeny vertexaisearch.cloud.google.com i PORT 443.
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
Utwórz system równoważenia obciążenia
W Cloud Shell wykonaj te czynności:
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
Tworzenie certyfikatu
Na tym etapie masz już utworzoną grupę NEG internetu i usługę backendu. W następnej sekcji musisz utworzyć zasób certyfikatu, który będzie używany w docelowym serwerze proxy HTTPS. Zasób certyfikatu SSL możesz utworzyć za pomocą certyfikatu SSL zarządzanego przez Google lub certyfikatu SSL zarządzanego samodzielnie. Zalecamy korzystanie z certyfikatów zarządzanych przez Google, ponieważ Google Cloud automatycznie je uzyskuje, nimi zarządza i je odnawia.
Więcej informacji o obsługiwanych certyfikatach globalnego zewnętrznego systemu równoważenia obciążenia aplikacji używanego w tym samouczku znajdziesz w tych artykułach:
Omówienie certyfikatów SSL | Równoważenie obciążenia | Google Cloud
W następnej sekcji utworzysz podpisany samodzielnie certyfikat (możesz też użyć certyfikatu zarządzanego przez Google), który wymaga mapowania nazwy domeny na pełną i jednoznaczną nazwę domeny (agentspace.YOUR-EXTERNAL-IP.nip.io) odpowiadającą zewnętrznemu adresowi IP systemu równoważenia obciążenia wygenerowanemu wcześniej. Przykład poniżej:
Nazwa zwyczajowa: agentspace.34.54.158.206.nip.io
W Cloud Shell utwórz klucz prywatny.
openssl genrsa -out private-key-file.pem 2048
W Cloud Shell utwórz plik config.txt, który będzie używany do generowania pliku PEM. W konfiguracji poniżej w polu DNS 1 wpisz pełną i jednoznaczną nazwę domeny, np.agentspace.YOUR-EXTERNAL-IP.nip.io, np. 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
W Cloud Shell sprawdź, czy pliki config.txt i private-key-file.pem zostały wygenerowane.
user@cloudshell:$ ls
config.txt private-key-file.pem
W Cloud Shell wykonaj te czynności.
sudo openssl req -new -key private-key-file.pem \
-out csr.pem \
-config config.txt
Przykład:
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 []:
W Cloud Shell sprawdź, czy utworzono wymagany plik PEM do podpisywania certyfikatu.
user@cloudshell:$ ls
config.txt csr.pem private-key-file.pem
Wygeneruj certyfikat w Cloud Shell.
sudo openssl x509 -req \
-signkey private-key-file.pem \
-in csr.pem \
-out cert.cert \
-extfile config.txt \
-extensions extension_requirements \
-days 365
Przykładowe dane wyjściowe:
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
W Cloud Shell sprawdź, czy plik cert.cert został utworzony.
user@cloudshell:$ ls
cert.cert config.txt csr.pem private-key-file.pem
Utwórz zasób certyfikatu, który ma być powiązany z zewnętrznym systemem równoważenia obciążenia. Zastąp parametry certyfikatu i klucza prywatnego nazwami swoich plików.
W Cloud Shell wykonaj te czynności:
gcloud compute ssl-certificates create agentspace-self-signed-cert \
--certificate=cert.cert \
--private-key=private-key-file.pem \
--global
W Cloud Shell wykonaj te czynności:
gcloud compute url-maps create agentspace-lb \
--default-service=agentspace-ineg-bes \
--global
W Cloud Shell wykonaj te czynności:
gcloud compute target-https-proxies create https-proxy \
--ssl-certificates=agentspace-self-signed-cert \
--url-map=agentspace-lb \
--global
W Cloud Shell wykonaj te czynności:
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. Tworzenie publicznej strefy DNS
W sekcji poniżej utworzysz publiczną strefę DNS używaną przez nip.io do rozpoznawania zewnętrznego adresu IP systemu równoważenia obciążenia.
W Cloud Shell wykonaj te czynności, aby utworzyć zmienną dla zewnętrznego adresu IP systemu równoważenia obciążenia:
externalip=<YOUR-EXTERNAL-IP>
echo $externalip
W Cloud Shell wykonaj te czynności:
gcloud dns --project=$project managed-zones create agentspace-dns --description="Agentspace public dns" --dns-name="$externalip.nip.io." --visibility="public"
W Cloud Shell wykonaj te czynności:
gcloud dns --project=$project record-sets create agentspace.$externalip.nip.io. --zone="agentspace-dns" --type="A" --ttl="300" --rrdatas="$externalip"
9. Określanie adresów URL aplikacji Agentspace
Poniższa procedura pozwala zidentyfikować adresy URL Agentspace Public zarządzane przez Google, które zostały wygenerowane przez Google i są przypisane do poszczególnych aplikacji Agentspace. Adresy URL są przykładami opartymi na architekturze referencyjnej, dlatego musisz zadbać o ich poprawność.
Pamiętaj, aby przechowywać link do aplikacji internetowej dla każdej aplikacji.
Aplikacja Dysk
URL Agentspace w internecie:
https://vertexaisearch.cloud.google.com/us/home/cid/5970a1b4-080a-4b44-8acd-fa89460cf0cd

Aplikacja SharePoint
Adres URL przestrzeni agenta: 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. Tworzenie zaawansowanej reguły hosta i ścieżki
W sekcji poniżej zaktualizujesz reguły routingu modułów równoważenia obciążenia, aby włączyć opcję definiowania reguł hosta i ścieżki za pomocą konsoli Google Cloud. W tabeli poniżej znajdziesz wartości niestandardowe (w kolejności od góry do dołu). Zaktualizuj je w zależności od środowiska:
Wartość niestandardowa | Przykład oparty na samouczku | |
Hosty | 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 | /<Ścieżka adresu URL przestrzeni agentów aplikacji nr 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 | /<Ścieżka adresu URL Agentspace aplikacji nr 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 |
Aby uzyskać dostęp do reguł hostów i ścieżek, wykonaj te czynności:
Równoważenie obciążenia → agentspace-lb → Kliknij Edytuj
Wybierz Reguły routingu → Zaawansowane reguły hosta i ścieżki.
Kliknij Dodaj regułę hosta i ścieżki.

Teraz możesz utworzyć nową regułę hosta i ścieżki. W sekcji hostów wstaw agentspace.YOUR-EXTERNAL-IP.nip.io lub własną domenę.

W polu Dopasowanie ścieżki (dopasowania, działania i usługi) zaktualizuj poniższą treść o konfigurację środowiska, a następnie kliknij Aktualizuj.
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
Przykładowy zrzut ekranu:


11. Weryfikacja
Wdrażanie zostało ukończone. Dostęp do aplikacji Agentspace możesz uzyskać za pomocą własnej domeny w przeglądarce lub terminalu, wpisując adres agentspace.YOUR-EXTERNAL-IP.nip.io/path, np. agentspace.34.54.158.206.nip.io. Przykłady znajdziesz poniżej:
Aplikacja Agentspace: drive-app
Ścieżka: agentspace.34.54.158.206.nip.io/drive-app
Aplikacja Agentspace: sharepoint-app
Ścieżka: agentspace.34.54.158.206.nip.io/sharepoint-app
12. Czyszczenie danych
Aby usunąć dane logowania OAuth, wykonaj te czynności:
Otwórz Interfejsy API i usługi → Dane logowania.
W sekcji Identyfikatory klienta OAuth 2.0 wybierz dane logowania, a następnie usuń je.
Usuń komponenty modułu z jednego terminala Cloud Shell:
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. Gratulacje
Gratulacje. Udało Ci się skonfigurować i sprawdzić połączenie z Agentspace przy użyciu własnej domeny i zewnętrznego systemu równoważenia obciążenia aplikacji z zaawansowanym zarządzaniem ruchem.
Utworzyliśmy infrastrukturę systemu równoważenia obciążenia, dowiedzieliśmy się, jak utworzyć internetową grupę NEG, Cloud DNS i zaawansowane zarządzanie ruchem, które umożliwiało przekierowanie hosta i ścieżki, co pozwalało na połączenie z Agentspace za pomocą własnej domeny.
Cosmopup uważa, że ćwiczenia z programowania są świetne!!
