Domena niestandardowa Agentspace, obsługa WIF

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.

27591afa06891dcb.png

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.

c03abe66bd3ad4df.png

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

8344f80c160f30f8.png

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.

786e8b2de2d2c68b.png

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

786e8b2de2d2c68b.png

8344f80c160f30f8.png

5. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. 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ć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

Udostępnienie środowiska i połączenie się z nim może zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

7ffe5cbb04455448.png

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

f8f850425fd11190.png

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

f31a1939b9b83525.png

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.

4bc965db43aed21b.png

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

f36e4fa11c950d8d.png

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:

5470a123dca793b9.png

777dcb5191fd8d41.png

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!!

c911c127bffdee57.jpeg

Dokumentacja