1. Wprowadzenie
Ten dokument zawiera architekturę referencyjną do konfigurowania domeny niestandardowej w celu uzyskiwania dostępu do AgentSpace za pomocą WIF. Zamiast adresu URL zarządzanego przez Google, który jest przypisywany podczas tworzenia aplikacji Agentspace, użytkownicy mogą korzystać z domeny niestandardowej. W tym samouczku pokazujemy, jak uzyskać dostęp do aplikacji Kalendarz i Dysk w Agentspace za pomocą domeny nip.io. nip.io to bezpłatna usługa open source, która zapewnia DNS z wieloznacznymi symbolami 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 pamięci danych i kolejnych aplikacji prowadzi do dalszego zarządzania publicznymi adresami URL zarządzanymi przez Google, jak pokazano w scenariuszu wdrażania poniżej (rysunek 2), co skutkuje mapowaniem aplikacji i adresów URL w stosunku 1:1.
Rysunek 2.
Domena niestandardowa umożliwia mapowanie różnych aplikacji AgentSpace na jedną, określoną przez użytkownika domenę klienta. Ta funkcja umożliwia powiązanie z każdą aplikacją Agentspace konkretnej ścieżki 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żki, 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 Dysku 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 domenę niestandardową na adres URL zarządzany przez Google. Wykonuje on te funkcje przy użyciu przykładowego adresu agentspace.cosmopup.com/drive-app
- Ścieżka hosta domeny niestandardowej agentspace.cosmopup.com/drive-app jest odbierana przez moduł 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 domeny niestandardowej 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 domeny niestandardowej 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 domeny niestandardowej do aplikacji Agentspace
- Jak zintegrować nip.io i Cloud DNS, aby utworzyć domenę niestandardową
- Jak potwierdzić dostęp do domeny niestandardowej w przestrzeni agentów
Czego potrzebujesz
- Projekt Google Cloud z uprawnieniami właściciela
- Adresy URL istniejących aplikacji Agentspace
- Domena niestandardowa należąca do Ciebie (opcjonalnie)
- Certyfikaty – podpisane samodzielnie lub zarządzane przez Google
2. Co utworzysz
Utworzysz globalny zewnętrzny system równoważenia obciążenia aplikacji z zaawansowanymi funkcjami zarządzania ruchem, aby włączyć niestandardowe dopasowywanie ścieżek domeny w przypadku aplikacji Agentspace za pomocą przekierowania hosta i ścieżki. Po wdrożeniu wykonaj te czynności, aby sprawdzić dostęp do aplikacji Agentspace:
- Uzyskaj dostęp do aplikacji 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 przestrzeni agentów (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 Application Load Balancer w Google Cloud, użyj usługi Certificate Manager 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 jako nip.io (agentspace.externalip.nip.io). Możesz też użyć domeny niestandardowej 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 lub Google Workspace, musisz je utworzyć.
- Nazwa projektu to wyświetlana nazwa dla 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 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ć rozliczenia 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 programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, 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:
Udostępnienie środowiska i połączenie się z nim może 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 stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i 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 parametr –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 przestrzenią agentów, użyj w pełni kwalifikowanej nazwy domeny vertexaisearch.cloud.google.com i portu 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 uzyskuje, zarządza i odnawia te certyfikaty.
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 w pełni kwalifikowaną 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 polu DNS 1 wpisz w pełni kwalifikowaną nazwę domeny, np.agentspace.YOUR-EXTERNAL-IP.nip.io, np. agentspace.34.54.158.206.nip.io w konfiguracji poniżej.
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 certyfikatów.
user@cloudshell:$ ls
config.txt csr.pem private-key-file.pem
W Cloud Shell wygeneruj certyfikat.
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. Identyfikowanie adresów URL aplikacji Agentspace
Poniższa procedura pozwala zidentyfikować adresy URL Agentspace zarządzane przez Google, które zostały wygenerowane przez Google i są przypisane do każdej aplikacji Agentspace. Adresy URL w danych wyjściowych są przykładami opartymi na architekturze referencyjnej, dlatego musisz zadbać o to, aby były one prawidłowe.
Pamiętaj, aby przechowywać link do aplikacji internetowej dla każdej aplikacji.
Aplikacja Dysk
URL Agentspace:
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 następnej sekcji zaktualizujesz reguły routingu modułów równoważenia obciążenia, aby włączyć opcję definiowania reguł hosta i ścieżki za pomocą konsoli 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 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 domenę niestandardową.
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 zakończone. Dostęp do aplikacji Agentspace możesz uzyskać za pomocą domeny niestandardowej w przeglądarce lub terminalu, wpisując 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 klientów 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 zweryfikować połączenie z przestrzenią agentów przy użyciu domeny niestandardowej i zewnętrznego systemu równoważenia obciążenia aplikacji z zaawansowanym zarządzaniem ruchem.
Utworzono infrastrukturę systemu równoważenia obciążenia, dowiedziano 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ą domeny niestandardowej.
Cosmopup uważa, że ćwiczenia z programowania są świetne!!