Wdrażanie strefy zużycia geoprzestrzennych
Strefa zużycia geoprzestrzennego OSDU (GCZ) to usługa, która umożliwia ulepszone zarządzanie danymi geoprzestrzennym i korzystanie z tych danych. GCZ usprawnia obsługę informacji opartych na lokalizacji. Wyodrębnia ona złożoność techniczną, umożliwiając aplikacjom oprogramowania dostęp do danych geoprzestrzennych bez konieczności radzenia sobie ze skomplikowanymi szczegółami. Zapewniając gotowe do użycia usługi mapy, GCZ ułatwia bezproblemową integrację z aplikacjami z obsługą OSDU.
W tym przewodniku pokazano, jak wdrożyć usługę Geospatial Consumption Zone (GCZ) zintegrowaną z usługą Azure Data Manager for Energy (ADME).
Tworzenie rejestracji aplikacji w usłudze Microsoft Entra ID
Aby wdrożyć GCZ, należy utworzyć rejestrację aplikacji w usłudze Microsoft Entra ID. Rejestracja aplikacji służy do uwierzytelniania interfejsów API GCZ za pomocą usługi Azure Data Manager for Energy w celu wygenerowania pamięci podręcznej danych geoprzestrzennych.
Aby uzyskać instrukcje dotyczące tworzenia rejestracji aplikacji, zobacz Tworzenie rejestracji aplikacji w usłudze Microsoft Entra ID .
Udziel uprawnienia Rejestracja aplikacji, aby odczytać odpowiednie dane w usłudze Azure Data Manager for Energy. Aby uzyskać dalsze instrukcje, zobacz How to add members to an OSDU group (Jak dodać członków do grupy OSDU).
Ustawienia
Istnieją dwie główne opcje wdrażania usługi GCZ:
- Azure Kubernetes Service (AKS): wdrażanie usługi GCZ w klastrze usługi AKS. Ta opcja wdrożenia jest zalecana w środowiskach produkcyjnych. Wymaga to większego nakładu pracy w celu skonfigurowania, skonfigurowania i obsługi.
- Windows: wdróż usługę GCZ w systemie Windows. Ta opcja wdrożenia zalecana dla środowisk deweloperskich i testowych.
Wdrażanie strefy zużycia geoprzestrzennego (GCZ) w usłudze Azure Kubernetes Service (AKS)
Dowiedz się, jak wdrożyć strefę zużycia geoprzestrzennego (GCZ) w usłudze Azure Kubernetes Service (AKS).
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Klaster Usługi Azure Kubernetes (AKS) z integracją sieci wirtualnej. Aby uzyskać dalsze instrukcje, zobacz Tworzenie klastra usługi Azure Kubernetes Service (AKS) i sieci azure Container Networking Interface (CNI).
- Usługa Azure Cloud Shell lub interfejs wiersza polecenia platformy Azure, kubectl i interfejs wiersza polecenia usługi Git.
Wdrażanie wykresu HELM strefy zużycia geoprzestrzennych (GCZ)
Sklonuj repozytorium GCZ do środowiska lokalnego:
git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
Zmień katalog na
geospatial
folder:cd geospatial/devops/azure/charts/geospatial
Zdefiniuj zmienne dla wdrożenia:
# Define the variables for Azure Data Manager for Energy AZURE_DNS_NAME="<instanceName>.energy.azure.com" # Example: demo.energy.azure.com DATA_PARTITION_ID="<dataPartitionId>" # Data partition ID. Example: opendes AZURE_TENANT_ID="<tenantId>" # Entra ID tenant ID. Example: aaaabbbb-0000-cccc-1111-dddd2222eeee AZURE_CLIENT_ID="<clientId>" # App Registration client ID. Example: 00001111-aaaa-2222-bbbb-3333cccc4444 AZURE_CLIENT_SECRET="<clientSecret>" # App Registration client secret. Example: Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2 SCOPE="<scope>" # Scope of the App Registration. Example: 00001111-aaaa-2222-bbbb-3333cccc4444/.default CALLBACK_URL="http://localhost:8080" # Redirect URI of the ADME App Registration (from scope) ie: http://localhost:8080 PRIVATE_NETWORK="true" # Set to false if you want to expose the service publicly using a LoadBalancer. You can still expose the service using an Ingress Controller or Azure API Management at a later stage. # Define the variables for AKS AKS_NAME="<aksName>" # Name of the AKS cluster. Example: gcz-aks-cluster. RESOURCE_GROUP="<resourceGroupName>" # Name of the resource group. Example: gcz-rg. NAMESPACE="ignite" # Name of the AKS namespace you want to deploy to. We recommend to leave it default. GCZ_IGNITE_SERVICE="ignite-service" # Name of the ignite service. We recommend to leave it default. GCZ_IGNITE_NAMESPACE=$NAMESPACE CHART=osdu-gcz-service CHART_VERSION=1.27.0 VERSION=0.27.0
Utwórz wykres HELM:
cat > osdu_gcz_custom_values.yaml << EOF # This file contains the essential configs for the gcz on azure helm chart ################################################################################ # Specify the values for each service. # global: ignite: namespace: $NAMESPACE name: ignite image: name: gridgain/community tag: 8.8.43 configuration: gcz_ignite_namespace: "$GCZ_IGNITE_NAMESPACE" gcz_ignite_service: "$GCZ_IGNITE_SERVICE" provider: namespace: $NAMESPACE entitlementsGroupsURL: "https://$AZURE_DNS_NAME/api/entitlements/v2/groups" image: repository: community.opengroup.org:5555 name: osdu/platform/consumption/geospatial/geospatial-provider-master tag: latest service: type: LoadBalancer configuration: privateNetwork: "$PRIVATE_NETWORK" transformer: namespace: $NAMESPACE image: repository: community.opengroup.org:5555 name: osdu/platform/consumption/geospatial/geospatial-transformer-master tag: latest service: type: LoadBalancer configuration: privateNetwork: "$PRIVATE_NETWORK" datapartitionid: $DATA_PARTITION_ID clientId: $AZURE_CLIENT_ID tenantId: $AZURE_TENANT_ID callbackURL: $CALLBACK_URL scope: $SCOPE searchQueryURL: "https://$AZURE_DNS_NAME/api/search/v2/query" searchCursorURL: "https://$AZURE_DNS_NAME/api/search/v2/query_with_cursor" schemaURL: "https://$AZURE_DNS_NAME/api/schema-service/v1/schema" entitlementsURL: "https://$AZURE_DNS_NAME/api/entitlements/v2" fileRetrievalURL: "https://$AZURE_DNS_NAME/api/dataset/v1/retrievalInstructions" crsconvertorURL: "https://$AZURE_DNS_NAME/api/crs/converter/v3/convertTrajectory" storageURL: "https://$AZURE_DNS_NAME/api/storage/v2/records" clientSecret: $(echo "$AZURE_CLIENT_SECRET" | base64) gcz_ignite_namespace: "$GCZ_IGNITE_NAMESPACE" gcz_ignite_service: "$GCZ_IGNITE_SERVICE" EOF
Zmień typ usługi na
LoadBalancer
dlaprovider
plików konfiguracji usług itransformer
.cat > ../provider/templates/service.yaml << EOF apiVersion: v1 kind: Service metadata: name: gcz-provider namespace: {{ $.Values.global.provider.namespace }} annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "{{ $.Values.global.provider.configuration.privateNetwork }}" spec: selector: app: provider ports: - port: 80 protocol: TCP targetPort: 8083 type: {{ $.Values.global.provider.service.type }} EOF cat > ../transformer/templates/service.yaml << EOF apiVersion: v1 kind: Service metadata: name: gcz-transformer namespace: {{ $.Values.global.transformer.namespace }} annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "{{ $.Values.global.transformer.configuration.privateNetwork }}" spec: selector: app: transformer ports: - port: 80 protocol: TCP targetPort: 8080 type: {{ $.Values.global.transformer.service.type }} EOF
Przejrzyj plik
application.yml
konfiguracji przekształcania, aby upewnić się, że uwzględniono poprawne schematy.nano ../transformer/application.yml
Przejrzyj plik
koop-config.json
konfiguracji dostawcy .nano ../provider/koop-config.json
Uwierzytelnij się w klastrze usługi Azure Kubernetes Service (AKS):
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
Tworzenie przestrzeni nazw usługi AKS:
kubectl create namespace $NAMESPACE
Wdrażanie zależności programu HELM:
helm dependency build
Wdróż wykres HELM GCZ:
helm upgrade -i $CHART . -n $NAMESPACE -f osdu_gcz_custom_values.yaml --set-file global.provider.configLoaderJs="../../../../gcz-provider/gcz-provider-core/config/configLoader.js"
Zweryfikuj wdrożenie:
kubectl get pods -n $NAMESPACE
Teraz powinny zostać wyświetlone zasobniki dla
ignite
usług ,provider
itransformer
.Następnie zwróć uwagę na zewnętrzne adresy IP dla
provider
usług itransformer
.kubectl get service -n $NAMESPACE
Te adresy IP są używane do nawiązywania połączenia z punktami końcowymi interfejsu API GCZ.
Ważne
Jeśli chcesz zaktualizować pliki konfiguracji (np application.yml
. lub koop-config.json
), musisz zaktualizować konfigurację usługi AKS (configmap), a następnie usunąć istniejące zasobniki dla provider
usług i transformer
. Zasobniki zostaną ponownie odtworzone przy użyciu nowej konfiguracji. Jeśli zmienisz konfigurację przy użyciu interfejsów API GCZ, zmiany nie będą utrwalane po ponownym uruchomieniu zasobnika.
Wdrażanie strefy zużycia geoprzestrzennego (GCZ) na maszynie wirtualnej z systemem Windows
Dowiedz się, jak wdrożyć strefę zużycia geoprzestrzennych (GCZ) w systemie Windows. Ta opcja wdrażania jest zalecana w środowiskach deweloperskich i testowych, ponieważ łatwiej jest ją skonfigurować i skonfigurować oraz wymaga mniejszej konserwacji.
Wymagania wstępne
- Wystąpienie usługi Azure Data Manager dla energii. Jeśli nie masz wystąpienia usługi Azure Data Manager for Energy, zobacz Tworzenie wystąpienia usługi Azure Data Manager dla energii.
- Maszyna wirtualna z systemem Windows. Jeśli nie masz maszyny wirtualnej z systemem Windows, zobacz Tworzenie maszyny wirtualnej z systemem Windows na platformie Azure. Można również użyć maszyny lokalnej.
- Zestaw Java JDK 17 zainstalowany na maszynie wirtualnej z systemem Windows. Jeśli nie masz zainstalowanego języka Java, zobacz Instalowanie języka Java w systemie Windows.
- Węzeł 18.19.1 (LTS) zainstalowany na maszynie wirtualnej z systemem Windows. Jeśli nie masz zainstalowanego środowiska Node, zobacz Instalowanie Node.js i narzędzia npm w systemie Windows.
- Język Python 3.11.4 lub nowszy zainstalowany na maszynie wirtualnej z systemem Windows. Jeśli nie masz zainstalowanego języka Python, zobacz Instalowanie języka Python w systemie Windows.
- Upewnij się, że dodano
pip
cię podczas procesu instalacji. Jeśli zapomnisz dodaćpip
element , możesz zainstalować go ręcznie.
- Upewnij się, że dodano
Wdrażanie usługi GCZ w systemie Windows
Połącz się z maszyną wirtualną z systemem Windows.
Pobierz następujące pliki z repozytorium GitLab OSDU:
Otwórz program PowerShell jako administrator i przejdź do folderu, w którym pobrano pliki.
Uruchom następujące polecenia, aby wyodrębnić pliki:
Expand-Archive -Path .\GCZ_PROVIDER.zip -DestinationPath C:\gcz\ Expand-Archive -Path .\GCZ_TRANSFORMER.zip -DestinationPath C:\gcz\ Expand-Archive -Path .\GCZ_PYTHON_DEPENDENCIES.zip -DestinationPath C:\gcz\
Skonfiguruj zmienne środowiskowe:
$ADME_HOSTNAME = "<adme-hostname>" # ADME Hostname, e.g. "https://contoso.energy.azure.com" $GCZ_DATA_PARTITION_ID = "<data-partition-id>" # ADME Data Partition ID, e.g. "opendes" $GCZ_QUERY_URL = "$ADME_HOSTNAME/api/search/v2/query" # ADME Query Endpoint $GCZ_QUERY_CURSOR_URL = "$ADME_HOSTNAME/api/search/v2/query_with_cursor" # ADME Query with Cursor Endpoint $GCZ_SCHEMA_URL = "$ADME_HOSTNAME/api/schema-service/v1/schema" # ADME Schema Endpoint $GCZ_ENTITLEMENT_SERVICE_URL = "$ADME_HOSTNAME/api/entitlements/v2" # ADME Entitlement Service Endpoint $GCZ_FILE_RETRIEVAL_URL = "$ADME_HOSTNAME/api/dataset/v1/retrievalInstructions" # ADME File Retrieval Endpoint $GCZ_CONVERT_TRAJECTORY_URL = "$ADME_HOSTNAME/api/crs/converter/v3/convertTrajectory" # ADME Convert Trajectory Endpoint $GCZ_STORAGE_URL = "$ADME_HOSTNAME/api/storage/v2/records/" # ADME Storage Endpoint
Aby uzyskać więcej zmiennych środowiskowych, zobacz dokumentację narzędzia GitLab OSDU.
Zweryfikuj pliki konfiguracji dostawcy GCZ i transformatora, otwierając pliki konfiguracji w edytorze tekstów i aktualizując wartości w razie potrzeby.
- Dostawca:
C:\gcz\gcz-provider\gcz-provider-core\config\koop-config.json
- Transformator:
C:\gcz\gcz-transformer-core\config\application.yml
Ważne
Jeśli wprowadzisz zmiany w schematach w plikach konfiguracji, musisz upewnić się, że te schematy są reprezentowane w obu plikach konfiguracji.
- Dostawca:
(opcjonalnie) Zainstaluj zależności języka Python (wymagane tylko w przypadku interpolacji dzienników dobrze).
pip install -r C:\gcz\gcz-transformer-core\src\main\resources\script\requirements.txt --no-index --find-links python-dependencies
Uruchom transformator GCZ.
C:\gcz\transformer\transformer.bat local
Skompiluj dostawcę GCZ.
cd C:\gcz\gcz-provider\gcz-provider-core npm install npm start
Domyślnie dostawca nasłuchujehttp://localhost:8083
, a funkcja Transformer nasłuchuje na .http://localhost:8080
Publikowanie interfejsów API GCZ publicznie (opcjonalnie)
Jeśli chcesz udostępnić publicznie interfejsy API GCZ, możesz użyć usługi Azure API Management (APIM). Usługa Azure API Management umożliwia bezpieczne uwidocznienie usługi GCZ w Internecie, ponieważ usługa GCZ nie ma jeszcze wbudowanego uwierzytelniania i autoryzacji. Za pomocą usługi APIM możemy dodawać zasady do zabezpieczania, monitorowania interfejsów API i zarządzania nimi.
Wymagania wstępne
- Wystąpienie usługi Azure API Management. Jeśli nie masz wystąpienia usługi Azure API Management, zobacz Tworzenie wystąpienia usługi Azure API Management.
- Interfejsy API GCZ są wdrażane i uruchomione.
Ważne
Wystąpienie usługi Azure API Management musi zostać wprowadzone do sieci wirtualnej, która jest routingiem do klastra usługi AKS, aby móc komunikować się z interfejsami API GCZ.
Dodawanie interfejsów API GCZ do usługi Azure API Management
Pobieranie specyfikacji interfejsu OpenAPI GCZ
Pobierz dwie specyfikacje interfejsu OpenAPI na komputer lokalny.
Otwórz każdy plik specyfikacji interfejsu OpenAPI w edytorze tekstów i zastąp sekcję
servers
odpowiednimi adresami IP modułu równoważenia obciążenia usług AKS GCZ Services.servers: - url: "http://<GCZ-Service-LoadBalancer-IP>/ignite-provider"
Dodawanie interfejsów API GCZ do usługi Azure API Management
Przejdź do usługi Azure API Management w witrynie Azure Portal.
W okienku nawigacji po lewej stronie wybierz pozycję Interfejsy API.
Wybierz pozycję + Dodaj interfejs API.
Wybierz pozycję OpenAPI.
Wybierz pozycję Wybierz plik i przekaż
gcz-openapi-provider.yaml
plik.W polu sufiks adresu URL interfejsu API wprowadź wartość
ignite-provider
.Wybierz pozycję Utwórz.
Powtórz kroki dla
gcz-openapi-transformer.yaml
pliku, ale użyj gogcz/transformer/admin
jako sufiksu adresu URL interfejsu API.
Konfigurowanie zasad
Następnie należy skonfigurować zasady w celu zweryfikowania tokenów sieci Web JSON (JWT).
Potrzebne są następujące informacje:
- Identyfikator dzierżawy Tożsamości Microsoft Entra.
- Identyfikator klienta usługi Azure Data Manager for Energy (lub identyfikator klienta wystawiającego tokeny, jeśli jest oddzielny).
Uwaga
Jeśli masz wiele tokenów wystawiających rejestracje aplikacji, możesz dodać wiele <application-id>
elementów do <client-application-ids>
elementu.
W nowo utworzonym
Geospatial Consumption Zone - Provider
interfejsie API upewnij się, że wybrano pozycję Wszystkie operacje .W obszarze Przetwarzanie przychodzące wybierz pozycję ... a następnie edytor kodu.
Wklej następującą definicję zasad w edytorze:
<policies> <!-- Throttle, authorize, validate, cache, or transform the requests --> <inbound> <base /> <validate-azure-ad-token tenant-id="%tenant-id%" failed-validation-httpcode="401"> <client-application-ids> <application-id>%client-id%</application-id> </client-application-ids> </inbound> <!-- Control if and how the requests are forwarded to services --> <backend> <base /> </backend> <!-- Customize the responses --> <outbound> <base /> </outbound> <!-- Handle exceptions and customize error responses --> <on-error> <base /> </on-error> </policies>
Zastąp
%tenant-id%
ciąg identyfikatorem dzierżawy entra firmy Microsoft i%client-id%
identyfikatorem klienta usługi Azure Data Manager for Energy.Wybierz pozycję Zapisz.
Powtórz kroki dla interfejsu
Geospatial Consumption Zone - Transformer
API.
Testowanie usługi GCZ
Pobierz kolekcję klienta interfejsu API z narzędzia GitLab OSDU i zaimportuj ją do wybranego klienta interfejsu API (tj. Bruno, Postman).
Dodaj następujące zmienne środowiskowe do klienta interfejsu API:
PROVIDER_URL
- Adres URL interfejsu API dostawcy GCZ.AMBASSADOR_URL
- Adres URL interfejsu API przekształcania GCZ.access_token
- Prawidłowy token dostępu ADME.
Aby sprawdzić, czy GCZ działa zgodnie z oczekiwaniami, uruchom wywołania interfejsu API w kolekcji.
Następne kroki
Po pomyślnym wdrożeniu usługi GCZ można wykonać następujące czynności:
- Wizualizowanie danych GCZ przy użyciu aplikacji internetowych GCZ z narzędzia GitLab OSDU.
Ważne
Aplikacje internetowe GCZ są obecnie opracowywane i nie obsługują uwierzytelniania. Zalecamy wdrożenie aplikacji internetowych w sieci prywatnej i ujawnienie ich przy użyciu usługi aplikacja systemu Azure Gateway lub Azure Front Door w celu włączenia uwierzytelniania i autoryzacji.
Możesz również pozyskiwać dane do wystąpienia usługi Azure Data Manager for Energy:
- Samouczek dotyczący pozyskiwania analizatora CSV.
- Samouczek dotyczący pozyskiwania manifestu.
Informacje
- Aby uzyskać informacje o strefie zużycia geoprzestrzennych, zobacz OSDU GitLab.