Déployer Geospatial Consumption Zone
Le service Geospatial Consumption Zone (GCZ) d’OSDU améliore la gestion et l’utilisation des données géospatiales. GCZ simplifie le traitement des informations basées sur l’emplacement. Il élimine les complexités techniques, ce qui permet aux applications logicielles d’accéder aux données géospatiales sans avoir à gérer les détails complexes. En fournissant des services cartographiques prêts à l’emploi, GCZ facilite une intégration transparente avec les applications compatibles OSDU.
Ce guide vous montre comment déployer le service Geospatial Consumption Zone (GCZ) intégré à Azure Data Manager for Energy (ADME).
Créer une inscription d’application dans Microsoft Entra ID
Pour déployer GCZ, vous devez créer une inscription d’application dans Microsoft Entra ID. L’inscription d’application est utilisée pour authentifier les API GCZ auprès d’Azure Data Manager for Energy afin de pouvoir générer le cache des données géospatiales.
Pour obtenir des instructions sur la création d’une inscription d’application, consultez Créer une inscription d’application dans Microsoft Entra ID.
Accordez à l’inscription d’application l’autorisation de lire les données pertinentes dans Azure Data Manager for Energy. Pour obtenir des instructions supplémentaires, consultez Comment ajouter des membres à un groupe OSDU.
Programme d’installation
Voici les deux options principales pour déployer le service GCZ :
- Azure Kubernetes Service (AKS) : déployez le service GCZ sur un cluster AKS. Cette option de déploiement est recommandée pour les environnements de production. La mise en place, la configuration et la maintenance de ce système demandent plus d'efforts.
- Windows : déployez le service GCZ sur Windows. Cette option de déploiement recommandée pour les environnements de développement et de test.
Déployer Geospatial Consumption Zone (GCZ) sur Azure Kubernetes Service (AKS)
Découvrez comment déployer Geospatial Consumption Zone (GCZ) sur Azure Kubernetes Service (AKS).
Prérequis
- Abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit.
- Azure Kubernetes Cluster (AKS) avec intégration de réseau virtuel. Pour obtenir des instructions supplémentaires, consultez Créer un cluster Azure Kubernetes Service (AKS) et Mise en réseau Azure Container Networking Interface (CNI).
- Azure Cloud Shell ou Azure CLI, kubectl et Git CLI.
Déployer le graphique HELM de Geospatial Consumption Zone (GCZ)
Clonez le référentiel GCZ dans votre environnement local :
git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
Changez de répertoire en choisissant le dossier
geospatial
:cd geospatial/devops/azure/charts/geospatial
Définissez des variables pour le déploiement :
# 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
Créez le graphique 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
Remplacez le type de service par
LoadBalancer
pour les fichiers de configuration de servicesprovider
ettransformer
.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
Passez en revue le fichier de configuration du transformateur
application.yml
pour vous assurer que les schémas appropriés sont inclus.nano ../transformer/application.yml
Passez en revue le fichier de configuration du fournisseur
koop-config.json
.nano ../provider/koop-config.json
Authentifiez-vous auprès du cluster Azure Kubernetes Service (AKS) :
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
Créer un espace de noms AKS :
kubectl create namespace $NAMESPACE
Déployez les dépendances HELM :
helm dependency build
Déployez le graphique 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"
Vérifiez le déploiement :
kubectl get pods -n $NAMESPACE
Vous devez maintenant voir les pods des services
ignite
,provider
ettransformer
.Notez ensuite les adresses IP externes des services
provider
ettransformer
.kubectl get service -n $NAMESPACE
Ces adresses IP permettent de se connecter aux points de terminaison de l’API GCZ.
Important
Si vous souhaitez mettre à jour les fichiers de configuration (par exemple, application.yml
ou koop-config.json
), vous devez mettre à jour la configuration AKS (configmap), puis supprimer les pods existants pour les services provider
et transformer
. Les pods seront recréés avec la nouvelle configuration. Si vous modifiez la configuration à l’aide des API GCZ, les modifications ne sont pas persistantes après le redémarrage d’un pod.
Déployer Geospatial Consumption Zone (GCZ) sur une machine virtuelle Windows
Découvrez comment déployer Geospatial Consumption Zone (GCZ) sur Windows. Cette option de déploiement est recommandée pour les environnements de développement et de test, car elle est plus facile à installer et à configurer et nécessite moins de maintenance.
Prérequis
- Une instance Azure Data Manager for Energy. Si vous ne disposez pas d’une instance Azure Data Manager for Energy, consultez Créer une instance Azure Data Manager for Energy.
- Une machine virtuelle Windows. Si vous ne disposez pas d’une machine virtuelle Windows, consultez Créer une machine virtuelle Windows dans Azure. Vous pouvez également utiliser votre ordinateur local.
- Java JDK 17 installé sur la machine virtuelle Windows. Si Java n’est pas installé, consultez Installer Java sur Windows.
- Node 18.19.1 (LTS) installé sur la machine virtuelle Windows. Si Node n’est pas installé, consultez Installer Node.js et npm sur Windows.
- Python 3.11.4 ou version ultérieure installé sur la machine virtuelle Windows. Si Python n’est pas installé, consultez Installer Python sur Windows.
- Veillez à ajouter
pip
pendant le processus d’installation. Si vous oubliez d’ajouterpip
, vous pouvez l’installer manuellement.
- Veillez à ajouter
Déployer GCZ sur Windows
Connectez-vous à votre machine virtuelle Windows.
Téléchargez les fichiers suivants à partir du référentiel du GitLab OSDU :
Ouvrez PowerShell en tant qu’administrateur, puis accédez au dossier dans lequel vous avez téléchargé les fichiers.
Exécutez les commandes suivantes pour extraire les fichiers :
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\
Configurez les variables d’environnement :
$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
Pour plus de variables d’environnement, consultez la documentation du GitLab OSDU.
Validez les fichiers de configuration du fournisseur et du transformateur GCZ en ouvrant ces fichiers dans un éditeur de texte et en mettant à jour les valeurs si nécessaire.
- Fournisseur :
C:\gcz\gcz-provider\gcz-provider-core\config\koop-config.json
- Transformateur :
C:\gcz\gcz-transformer-core\config\application.yml
Important
Si vous modifiez les schémas dans les fichiers de configuration, assurez-vous que ces schémas sont représentés dans les deux fichiers de configuration.
- Fournisseur :
(facultatif) Installez les dépendances Python (uniquement requises pour l’interpolation des diagraphies de puits).
pip install -r C:\gcz\gcz-transformer-core\src\main\resources\script\requirements.txt --no-index --find-links python-dependencies
Démarrez le transformateur GCZ.
C:\gcz\transformer\transformer.bat local
Générez le fournisseur GCZ.
cd C:\gcz\gcz-provider\gcz-provider-core npm install npm start
Par défaut, le fournisseur écoute sur http://localhost:8083
et le transformateur sur http://localhost:8080
.
Publier les API GCZ publiquement (facultatif)
Si vous souhaitez exposer publiquement les API GCZ, vous pouvez utiliser la Gestion des API Azure (APIM). La Gestion des API Azure nous permet d’exposer en toute sécurité le service GCZ à Internet, car le service GCZ n’intègre pas encore de fonctionnalités d’authentification et d’autorisation. Grâce à APIM, nous pouvons ajouter des stratégies pour sécuriser, monitorer et gérer les API.
Prérequis
- Une instance du service Gestion des API Azure. Si vous ne disposez pas d’une instance Gestion des API Azure, consultez Créer une instance du service Gestion des API Azure.
- Les API GCZ sont déployées et en cours d’exécution.
Important
Vous devez injecter l’instance Gestion des API Azure dans un réseau virtuel routable vers le cluster AKS pour pouvoir communiquer avec les API GCZ.
Ajouter les API GCZ à la Gestion des API Azure
Télécharger les spécifications OpenAPI GCZ
Téléchargez les deux spécifications OpenAPI sur votre ordinateur local.
Ouvrez chaque fichier de spécification OpenAPI dans un éditeur de texte et remplacez la section
servers
par les adresses IP correspondantes de l’équilibreur de charge des services GCZ AKS.servers: - url: "http://<GCZ-Service-LoadBalancer-IP>/ignite-provider"
Ajouter les API GCZ à la Gestion des API Azure
Accédez à votre service Gestion des API Azure dans le Portail Azure.
Dans le volet de navigation de gauche, sélectionnez API.
Sélectionnez + Ajouter API.
Sélectionnez OpenAPI.
Choisissez Sélectionner un fichier et chargez le fichier
gcz-openapi-provider.yaml
.Dans le champ Suffixe de l’URL de l’API, entrez
ignite-provider
.Sélectionnez Créer.
Répétez les étapes pour le fichier
gcz-openapi-transformer.yaml
, mais utilisezgcz/transformer/admin
comme Suffixe de l’URL de l’API.
Configurer des stratégies
Nous devons ensuite configurer les stratégies pour valider les jetons JWT (JSON Web Token).
Les informations suivantes sont nécessaires :
- Votre ID client Microsoft Entra ID.
- ID client Azure Data Manager for Energy (ou ID client émetteur de jetons s’il est distinct).
Remarque
Si vous avez plusieurs inscriptions d’application qui émettent des jetons, vous pouvez ajouter plusieurs éléments <application-id>
à l’élément <client-application-ids>
.
Dans l’API
Geospatial Consumption Zone - Provider
récemment créée, vérifiez que l’option Toutes les opérations est sélectionnée.Sous Traitement entrant, sélectionnez ..., puis Éditeur de code.
Collez la définition de stratégie suivante dans l’éditeur :
<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>
Remplacez
%tenant-id%
par votre ID de locataire Microsoft Entra ID et%client-id%
par l’ID client Azure Data Manager for Energy.Cliquez sur Enregistrer.
Répétez les étapes pour l’API
Geospatial Consumption Zone - Transformer
.
Test du service GCZ
Téléchargez la collection de client API à partir du OSDU GitLab et importez-la dans votre client API de votre choix (par exemple, Bruno, Postman).
Ajoutez les variables d’environnement suivantes à votre client d’API :
PROVIDER_URL
: URL vers l’API du fournisseur GCZ.AMBASSADOR_URL
: URL vers l’API du transformateur GCZ.access_token
: jeton d’accès ADME valide.
Pour vérifier que GCZ fonctionne comme prévu, exécutez les appels d’API dans la collection.
Étapes suivantes
Une fois que vous disposez d’un déploiement réussi de GCZ, vous pouvez :
- Visualiser vos données GCZ à l’aide de GCZ WebApps à partir du GitLab OSDU.
Important
Les applications web GCZ sont en cours de développement et ne prennent pas en charge l’authentification. Nous vous recommandons de déployer les applications web dans un réseau privé et de les exposer avec Azure Application Gateway ou Azure Front Door pour activer l’authentification et l’autorisation.
Vous pouvez également ingérer les données dans votre instance Azure Data Manager pour Energy :
Références
- Pour plus d’informations sur Geospatial Consumption Zone, consultez le GitLab OSDU.