Nasazení zóny geoprostorové spotřeby
Geoprostorová zóna spotřeby OSDU (GCZ) je služba, která umožňuje rozšířenou správu a využití geoprostorových dat. GCZ zjednodušuje zpracování informací založených na poloze. Abstrahuje technické složitosti a umožňuje softwarovým aplikacím přistupovat k geoprostorovým datům, aniž by se museli zabývat složitými podrobnostmi. Díky poskytování mapových služeb připravených k použití usnadňuje GCZ bezproblémovou integraci s aplikacemi s podporou OSDU.
V této příručce se dozvíte, jak nasadit službu Geoprostorová zóna spotřeby (GCZ) integrovaná s Azure Data Managerem pro energii (ADME).
Vytvoření registrace aplikace v Microsoft Entra ID
Pokud chcete nasadit GCZ, musíte vytvořit registraci aplikace v Microsoft Entra ID. Registrace aplikace slouží k ověření rozhraní API GCZ pomocí Azure Data Manageru pro energii, aby bylo možné vygenerovat mezipaměť geoprostorových dat.
Pokyny k vytvoření registrace aplikace v Microsoft Entra ID najdete v tématu Vytvoření registrace aplikace.
Udělte registraci aplikace oprávnění ke čtení relevantních dat v Azure Data Manageru pro energii. Další pokyny najdete v tématu Postup přidání členů do skupiny OSDU.
Nastavení
Pro službu GCZ existují dvě hlavní možnosti nasazení:
- Azure Kubernetes Service (AKS): Nasaďte službu GCZ v clusteru AKS. Tato možnost nasazení se doporučuje pro produkční prostředí. Vyžaduje větší úsilí při nastavování, konfiguraci a údržbě.
- Windows: Nasaďte službu GCZ ve Windows. Tato možnost nasazení se doporučuje pro vývojová a testovací prostředí.
Nasazení zóny geoprostorové spotřeby (GCZ) ve službě Azure Kubernetes Service (AKS)
Zjistěte, jak nasadit zónu geoprostorové spotřeby (GCZ) ve službě Azure Kubernetes Service (AKS).
Požadavky
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet.
- Cluster Azure Kubernetes (AKS) s integrací virtuální sítě Další pokyny najdete v tématu Vytvoření clusteru Azure Kubernetes Service (AKS) a sítí azure Container Networking Interface (CNI).
- Azure Cloud Shell nebo Azure CLI, kubectl a Git CLI.
Diagram HELM nasazení zóny geoprostorové spotřeby (GCZ)
Naklonujte úložiště GCZ do místního prostředí:
git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
Změňte adresář na
geospatial
složku:cd geospatial/devops/azure/charts/geospatial
Definujte proměnné pro nasazení:
# 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
Vytvoření chartu 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
Změňte typ služby na
LoadBalancer
konfiguračníprovider
soubory atransformer
konfigurační soubory služeb.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
Zkontrolujte konfigurační soubor
application.yml
transformátoru a ujistěte se, že jsou zahrnuta správná schémata.nano ../transformer/application.yml
Zkontrolujte konfigurační soubor
koop-config.json
zprostředkovatele .nano ../provider/koop-config.json
Ověřte se v clusteru Azure Kubernetes Service (AKS):
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
Vytvoření oboru názvů AKS:
kubectl create namespace $NAMESPACE
Nasazení závislostí HELM:
helm dependency build
Nasazení chartu GCZ HELM:
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"
Ověřte nasazení:
kubectl get pods -n $NAMESPACE
Nyní byste měli vidět pody pro
ignite
,provider
atransformer
služby.Dále si poznamenejte externí IP adresy a
provider
transformer
služby.kubectl get service -n $NAMESPACE
Tyto IP adresy se používají k připojení ke koncovým bodům rozhraní API GCZ.
Důležité
Pokud chcete aktualizovat konfigurační soubory (např application.yml
. nebo koop-config.json
), musíte aktualizovat konfiguraci AKS (configmap) a pak odstranit existující pody pro dané provider
služby a transformer
služby. Pody se znovu vytvoří s novou konfigurací. Pokud změníte konfiguraci pomocí rozhraní API GCZ, změny se po restartování podu nezachovají .
Nasazení zóny geoprostorové spotřeby (GCZ) na virtuálním počítači s Windows
Zjistěte, jak nasadit zónu geoprostorové spotřeby (GCZ) ve Windows. Tato možnost nasazení se doporučuje pro vývojová a testovací prostředí, protože je jednodušší nastavit a nakonfigurovat a vyžaduje méně údržby.
Požadavky
- Instance Azure Data Manageru pro energii. Pokud nemáte Například Azure Data Manager pro energii, přečtěte si téma Vytvoření Azure Data Manageru pro energii.
- Virtuální počítač s Windows. Pokud nemáte virtuální počítač s Windows, přečtěte si téma Vytvoření virtuálního počítače s Windows v Azure. Je také možné použít místní počítač.
- Sada Java JDK 17 je nainstalovaná na virtuálním počítači s Windows. Pokud nemáte nainstalovanou Javu, přečtěte si téma Instalace Javy ve Windows.
- Uzel 18.19.1 (LTS) nainstalovaný na virtuálním počítači s Windows. Pokud nemáte nainstalovaný Node, přečtěte si téma Instalace Node.js a npm ve Windows.
- Python 3.11.4 nebo novější nainstalovaný na virtuálním počítači s Windows Pokud nemáte nainstalovaný Python, přečtěte si téma Instalace Pythonu ve Windows.
- Ujistěte se, že jste během procesu instalace přidali
pip
. Pokud zapomenete přidatpip
, můžete ho nainstalovat ručně.
- Ujistěte se, že jste během procesu instalace přidali
Nasazení GCZ ve Windows
Připojte se k virtuálnímu počítači s Windows.
Z úložiště OSDU GitLab si stáhněte následující soubory:
Otevřete PowerShell jako správce a přejděte do složky, do které jste stáhli soubory.
Spuštěním následujících příkazů extrahujte soubory:
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\
Konfigurace proměnných prostředí:
$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
Další proměnné prostředí najdete v dokumentaci k OSDU GitLabu.
Ověřte konfigurační soubory pro zprostředkovatele GCZ a Transformer otevřením konfiguračních souborů v textovém editoru a v případě potřeby aktualizujte hodnoty.
- Poskytovatel:
C:\gcz\gcz-provider\gcz-provider-core\config\koop-config.json
- Transformátor:
C:\gcz\gcz-transformer-core\config\application.yml
Důležité
Pokud provedete změny schémat v konfiguračních souborech, musíte se ujistit, že jsou tato schémata reprezentována v obou konfiguračních souborech.
- Poskytovatel:
(volitelné) Nainstalujte závislosti Pythonu (vyžaduje se pouze pro interpolaci protokolů well).
pip install -r C:\gcz\gcz-transformer-core\src\main\resources\script\requirements.txt --no-index --find-links python-dependencies
Spusťte GCZ Transformer.
C:\gcz\transformer\transformer.bat local
Sestavte zprostředkovatele GCZ.
cd C:\gcz\gcz-provider\gcz-provider-core npm install npm start
Ve výchozím nastavení Zprostředkovatel naslouchá a http://localhost:8083
Transformátor naslouchá na http://localhost:8080
.
Veřejně publikovat rozhraní API GCZ (volitelné)
Pokud chcete rozhraní API GCZ zveřejnit veřejně, můžete použít Azure API Management (APIM). Azure API Management nám umožňuje bezpečně zveřejnit službu GCZ na internetu, protože služba GCZ ještě nemá integrované ověřování a autorizaci. Prostřednictvím služby APIM můžeme přidat zásady pro zabezpečení, monitorování a správu rozhraní API.
Požadavky
- Instance služby Azure API Management. Pokud nemáte instanci služby Azure API Management, přečtěte si téma Vytvoření instance služby Azure API Management.
- Rozhraní API GCZ jsou nasazená a spuštěná.
Důležité
Instance služby Azure API Management se bude muset vložit do virtuální sítě, která je směrovatelná na cluster AKS, aby mohla komunikovat s rozhraním API GCZ.
Přidání rozhraní API GCZ do služby Azure API Management
Stáhnout specifikace GCZ OpenAPI
Stáhněte si do místního počítače dvě specifikace OpenAPI.
Otevřete každý soubor specifikace OpenAPI v textovém editoru a nahraďte ho
servers
odpovídajícími IP adresami Load Balanceru služeb AKS GCZ.servers: - url: "http://<GCZ-Service-LoadBalancer-IP>/ignite-provider"
Přidání rozhraní API GCZ do služby Azure API Management
Na webu Azure Portal přejděte ke službě Azure API Management.
V levém navigačním podokně vyberte rozhraní API.
Vyberte + Přidat rozhraní API.
Vyberte OpenAPI.
Vyberte soubor a nahrajte ho
gcz-openapi-provider.yaml
.Do pole přípony adresy URL rozhraní API zadejte
ignite-provider
.Vyberte Vytvořit.
Opakujte kroky souboru
gcz-openapi-transformer.yaml
, ale použijtegcz/transformer/admin
ho jako příponu adresy URL rozhraní API.
Konfigurace zásad
Dále musíme nakonfigurovat zásady pro ověření webových tokenů JSON (JWT).
Potřebujete tyto informace:
- ID tenanta Microsoft Entra ID.
- Azure Data Manager pro ID klienta energetiky (nebo ID klienta vydávající token, pokud je samostatné).
Poznámka:
Pokud máte více registrací aplikací vydávajících tokeny, můžete do elementu <client-application-ids>
přidat více <application-id>
prvků.
V nově vytvořeném
Geospatial Consumption Zone - Provider
rozhraní API se ujistěte, že jsou vybrané všechny operace .V části Zpracování příchozích dat vyberte ... a pak editor kódu.
Do editoru vložte následující definici zásad:
<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>
Nahraďte
%tenant-id%
ID tenanta Microsoft Entra ID a%client-id%
ID klienta Azure Data Manageru pro energetické ID.Zvolte Uložit.
Opakujte kroky pro
Geospatial Consumption Zone - Transformer
rozhraní API.
Testování služby GCZ
Stáhněte si kolekci klientů rozhraní API z GitLabu OSDU a naimportujte ji do libovolného klienta rozhraní API (tj. Bruno, Postman).
Do klienta rozhraní API přidejte následující proměnné prostředí:
PROVIDER_URL
– Adresa URL rozhraní API zprostředkovatele GCZ.AMBASSADOR_URL
- Adresa URL rozhraní GCZ Transformer API.access_token
– Platný přístupový token ADME.
Pokud chcete ověřit, že GCZ funguje podle očekávání, spusťte volání rozhraní API v kolekci.
Další kroky
Po úspěšném nasazení GCZ můžete:
Důležité
Webové aplikace GCZ jsou aktuálně ve vývoji a nepodporují ověřování. K povolení ověřování a autorizace doporučujeme nasadit webové aplikace v privátní síti a vystavit je pomocí brány Aplikace Azure lication Gateway nebo Služby Azure Front Door.
Data můžete také ingestovat do azure Data Manageru pro energetické instance:
- Kurz příjmu dat analyzátoru sdíleného svazku clusteru
- Kurz příjmu manifestu
Reference
- Informace o zóně geoprostorové spotřeby najdete v tématu OSDU GitLab.