Bereitstellen von Geospatial Consumption Zone
OSDU Geospatial Consumption Zone (GCZ) ist ein Dienst, der eine verbesserte Verwaltung und Nutzung von räumlichen Daten ermöglicht. GCZ optimiert die Verarbeitung standortbasierter Informationen. Der Dienst abstrahiert technische Komplexitäten, sodass Softwareanwendungen auf räumliche Daten zugreifen können, ohne sich mit komplexen Details befassen zu müssen. Durch die Bereitstellung von direkt einsatzbereiten Kartendiensten erleichtert GCZ die nahtlose Integration in OSDU-fähige Anwendungen.
In diesem Leitfaden erfahren Sie, wie Sie den Dienst „Geospatial Consumption Zone“ (GCZ) bereitstellen, der in Azure Data Manager for Energy (ADME) integriert ist.
Erstellen einer App-Registrierung in Microsoft Entra ID
Zum Bereitstellen von GCZ müssen Sie eine App-Registrierung in Microsoft Entra ID erstellen. Die App-Registrierung wird verwendet, um die GCZ-APIs mit Azure Data Manager for Energy zu authentifizieren, um den Cache der räumlichen Daten zu generieren.
Anweisungen zum Erstellen einer App-Registrierung finden Sie unter Erstellen einer App-Registrierung in Microsoft Entra ID.
Erteilen Sie der App-Registrierung die Berechtigung zum Lesen der relevanten Daten in Azure Data Manager for Energy. Weitere Anweisungen finden Sie unter Hinzufügen von Mitgliedern zu einer OSDU-Gruppe.
Setup
Es gibt zwei Hauptbereitstellungsoptionen für den GCZ-Dienst:
- Azure Kubernetes Service (AKS): Bereitstellen des GCZ-Diensts in einem AKS-Cluster. Diese Bereitstellungsoption wird für Produktionsumgebungen empfohlen. Es erfordert mehr Aufwand zum Einrichten, Konfigurieren und Verwalten.
- Windows: Bereitstellen des GCZ-Diensts unter Windows. Diese Bereitstellungsoption wird für Entwicklungs- und Testumgebungen empfohlen.
Bereitstellen der Geospatial Consumption Zone (GCZ) unter Azure Kubernetes Service (AKS)
Erfahren Sie, wie Sie die Geospatial Consumption Zone (GCZ) unter Azure Kubernetes Service (AKS) bereitstellen.
Voraussetzungen
- Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.
- Azure Kubernetes Cluster (AKS) mit VNet-Integration. Weitere Anweisungen finden Sie unter Erstellen eines Azure Kubernetes Service-Clusters (AKS) und Übersicht über Azure CNI-Netzwerke in Azure Kubernetes Service (AKS).
- Azure Cloud Shell oder Azure CLI, kubectl und Git CLI.
HELM-Chart zum Bereitstellen von Geospatial Consumption Zone (GCZ)
Klonen Sie das GCZ-Repository in Ihrer lokalen Umgebung:
git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
Ändern Sie in das Verzeichnis in den Ordner
geospatial
:cd geospatial/devops/azure/charts/geospatial
Definieren Sie Variablen für die Bereitstellung:
# 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
Erstellen Sie das HELM-Chart:
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
Ändern Sie den Diensttyp für die Konfigurationsdateien der
provider
- undtransformer
-Dienste inLoadBalancer
.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
Überprüfen Sie die Transformatorkonfigurationsdatei
application.yml
, um sicherzustellen, dass die richtigen Schemas enthalten sind.nano ../transformer/application.yml
Überprüfen der Anbieter-Konfigurationsdatei
koop-config.json
.nano ../provider/koop-config.json
Authentifizieren Sie sich beim Azure Kubernetes Service-Cluster (AKS):
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
Erstellen von AKS Namespace:
kubectl create namespace $NAMESPACE
Stellen Sie HELM-Abhängigkeiten bereit:
helm dependency build
Stellen Sie das GCZ-HELM-Chart bereit:
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"
Überprüfen Sie die Bereitstellung:
kubectl get pods -n $NAMESPACE
Nun sollten die Pods für die Dienste
ignite
,provider
undtransformer
angezeigt werden.Notieren Sie sich als Nächstes die externen IP-Adressen für den
provider
- und dentransformer
-Dienst.kubectl get service -n $NAMESPACE
Diese IP-Adressen werden verwendet, um eine Verbindung mit den GCZ-API-Endpunkten herzustellen.
Wichtig
Wenn Sie die Konfigurationsdateien aktualisieren möchten (z. B application.yml
, oder koop-config.json
), müssen Sie die AKS-Konfiguration (configmap) aktualisieren und dann die vorhandenen Pods für die provider
und transformer
Dienste löschen. Die Pods werden mit der neuen Konfiguration neu erstellt. Wenn Sie die Konfiguration mithilfe der GCZ-APIs ändern, bleiben die Änderungen nach einem Podneustart nicht erhalten.
Bereitstellen der Geospatial Consumption Zone (GCZ) auf einem virtuellen Windows-Computer
Erfahren Sie, wie Sie die Geospatial Consumption Zone (GCZ) unter Windows bereitstellen. Diese Bereitstellungsoption wird für Entwicklungs- und Testumgebungen empfohlen, da die Einrichtung und Konfiguration einfacher ist und weniger Wartung erfordert.
Voraussetzungen
- Eine Azure Data Manager for Energy-Instanz. Wenn Sie nicht über eine Azure Data Manager for Energy-Instanz verfügen, lesen Sie die Informationen unter Erstellen einer Azure Data Manager for Energy-Instanz.
- Windows-VM. Falls Sie keine Windows-VM besitzen, lesen Sie die Informationen zum Erstellen einer Windows-VM. Es ist auch möglich, Ihren lokalen Computer zu verwenden.
- Installation von Java JDK 17 auf der Windows-VM. Wenn Sie Java nicht installiert haben, lesen Sie Installieren von Java unter Windows.
- Installation von Node 18.19.1 (LTS) auf der Windows-VM. Wenn Sie Node nicht installiert haben, lesen Sie die Informationen unter Installieren von Node.js und npm unter Windows.
- Installation von Python 3.11.4 oder höher auf der Windows-VM. Wenn Sie Python nicht installiert haben, lesen Sie Installieren von Python unter Windows.
- Fügen Sie unbedingt
pip
während des Installationsvorgangs hinzu. Wenn Sie vergessen,pip
hinzuzufügen, können Sie eine manuelle Installation durchführen.
- Fügen Sie unbedingt
Bereitstellen von GCZ unter Windows
Stellen Sie eine Verbindung mit der Windows-VM her.
Laden Sie die folgenden Dateien aus dem OSDU GitLab-Repository herunter:
Öffnen Sie PowerShell als Administrator, und navigieren Sie zu dem Ordner, in den Sie die Dateien heruntergeladen haben.
Führen Sie die folgenden Befehle aus, um die Dateien zu extrahieren:
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\
Konfigurieren Sie die Umgebungsvariablen:
$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
Weitere Umgebungsvariablen finden Sie in der OSDU GitLab-Dokumentation.
Überprüfen Sie die Konfigurationsdateien für den GCZ-Anbieter und Transformator, indem Sie die Konfigurationsdateien in einem Text-Editor öffnen und die Werte bei Bedarf aktualisieren.
- Anbieter:
C:\gcz\gcz-provider\gcz-provider-core\config\koop-config.json
- Transformator:
C:\gcz\gcz-transformer-core\config\application.yml
Wichtig
Wenn Sie Änderungen an den Schemas in den Konfigurationsdateien vornehmen, müssen Sie sicherstellen, dass diese Schemas in beiden Konfigurationsdateien dargestellt werden.
- Anbieter:
(Optional) Installieren Sie Python-Abhängigkeiten (nur erforderlich für die Well Log-Interpolation).
pip install -r C:\gcz\gcz-transformer-core\src\main\resources\script\requirements.txt --no-index --find-links python-dependencies
Starten Sie den GCZ-Transformator.
C:\gcz\transformer\transformer.bat local
Erstellen Sie den GCZ-Anbieter.
cd C:\gcz\gcz-provider\gcz-provider-core npm install npm start
Standardmäßig lauscht der Anbieter an http://localhost:8083
und der Transformator an http://localhost:8080
.
Veröffentlichen von GCZ-APIs (optional)
Wenn Sie die GCZ-APIs öffentlich verfügbar machen möchten, können Sie Azure API Management (APIM) verwenden. Azure API Management ermöglicht es uns, den GCZ-Dienst sicher im Internet verfügbar zu machen, da noch keine Authentifizierung und Autorisierung in den GCZ-Dienst integriert ist. Über APIM können wir Richtlinien hinzufügen, um die APIs zu schützen, zu überwachen und zu verwalten.
Voraussetzungen
- Eine API Management-Instanz. Sollten Sie über keine Azure API Management-Instanz verfügen, lesen Sie Schnellstart: Erstellen einer neuen Azure API Management-Dienstinstanz mithilfe des Azure-Portals.
- Die GCZ-APIs werden bereitgestellt und ausgeführt.
Wichtig
Die Azure API Management-Instanz muss in ein virtuelles Netzwerk eingefügt werden, das an den AKS-Cluster geroutet werden kann, um mit den GCZ-APIs kommunizieren zu können.
Hinzufügen der GCZ-APIs zu Azure API Management
Herunterladen der GCZ-OpenAPI-Spezifikation
Laden Sie die beiden OpenAPI-Spezifikation auf Ihren lokalen Computer herunter.
Öffnen Sie jede OpenAPI-Spezifikationsdatei in einem Text-Editor, und ersetzen Sie den Abschnitt
servers
durch die entsprechenden IPs des Lastenausgleichsmoduls der AKS GCZ Services.servers: - url: "http://<GCZ-Service-LoadBalancer-IP>/ignite-provider"
Hinzufügen der GCZ-APIs zu Azure API Management
Navigieren Sie im Azure-Portal zu Ihrem Azure API Management-Dienst.
Wählen Sie im linken Navigationsbereich APIs aus.
Wählen Sie + API hinzufügen aus.
Wählen Sie OpenAPI aus.
Wählen Sie Datei auswählen aus, und laden Sie die Datei
gcz-openapi-provider.yaml
hoch.Geben Sie im Feld API-URL-Suffix das Suffix
ignite-provider
ein.Klicken Sie auf Erstellen.
Wiederholen Sie die Schritte für die Datei
gcz-openapi-transformer.yaml
, verwenden Sie jedochgcz/transformer/admin
als API-URL-Suffix.
Konfigurieren von Richtlinien
Als Nächstes müssen wir die Richtlinien konfigurieren, um die JSON-Webtoken (JWT) zu überprüfen.
Sie benötigen die folgenden Informationen:
- Ihre Microsoft Entra ID-Mandanten-ID.
- Die Azure Data Manager for Energy-Client-ID (oder ID des Token ausstellenden Clients, sofern getrennt)
Hinweis
Wenn Sie über mehrere App-Registrierungen verfügen, die Token ausstellen, können Sie dem <client-application-ids>
-Element mehrere <application-id>
-Elemente hinzufügen.
Stellen Sie in der neu erstellten
Geospatial Consumption Zone - Provider
-API sicher, dass Alle Vorgänge ausgewählt ist.Wählen Sie unter Eingehende Verarbeitung die Auslassungspunkte (...) und dann Code-Editor aus.
Fügen Sie die folgende Richtliniendefinition in den Editor ein:
<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>
Ersetzen Sie
%tenant-id%
durch Ihre Microsoft Entra ID-Mandanten-ID und%client-id%
durch die Azure Data Manager for Energy-Client-ID.Wählen Sie Speichern.
Wiederholen Sie die Schritte für die
Geospatial Consumption Zone - Transformer
-API.
Testen des GCZ-Diensts
Laden Sie die API-Clientsammlung unter OSDU GitLab herunter, und importieren Sie sie in den gewünschten API-Client, (nämlich Bruno, Postman).
Fügen Sie Ihrem API-Client die folgenden Umgebungsvariablen hinzu:
PROVIDER_URL
: Die URL zur GCZ-Anbieter-APIAMBASSADOR_URL
: Die URL zur GCZ-Transformator-APIaccess_token
: Ein gültiges ADME-Zugriffstoken
Um zu überprüfen, ob GCZ erwartungsgemäß funktioniert, führen Sie die API-Aufrufe in der Auflistung aus.
Nächste Schritte
Nach der erfolgreichen Bereitstellung von GCZ können Sie folgende Aktion ausführen:
- Visualisieren Sie Ihre GCZ-Daten mithilfe der GCZ-Web-Apps unter OSDU GitLab.
Wichtig
Die GCZ-Web-Apps befinden sich derzeit in der Entwicklung und unterstützen keine Authentifizierung. Es wird empfohlen, die Web-Apps in einem privaten Netzwerk bereitzustellen und mithilfe von Azure Application Gateway oder Azure Front Door verfügbar zu machen, um die Authentifizierung und Autorisierung zu ermöglichen.
Sie können Daten auch in Ihrer Azure Data Manager for Energy-Instanz erfassen:
References
- Informationen zu Geospatial Consumption Zone finden Sie unter OSDU GitLab.