Déployer Geospatial Consumption Zone
Ce guide vous montre comment déployer le service Geospatial Consumption Zone (GCZ) intégré à Azure Data Manager for Energy (ADME).
Important
Bien que le service Geospatial Consumption Zone (GCZ) soit un service finalisé dans le Forum OSDU, il présente des limitations en termes de sécurité et d’utilisation. Nous déploierons des services et des stratégies supplémentaires pour sécuriser l’environnement, mais nous vous encouragerons à suivre le développement du service sur le GitLab OSDU.
Description
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.
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 consiste à authentifier les API GCZ auprès d’Azure Data Manager for Energy pour 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. Elle nécessite davantage d’opérations d’installation, de configuration et de maintenance. Elle présente également certaines limitations dans les images conteneur fournies.
- Windows : déployez le service 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.
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).
Important
Le déploiement actuel de GCZ avec AKS est limité à une configuration par défaut de schémas inclus. Pour plus d’informations sur les schémas pris en charge, consultez le GitLab OSDU. Pour ajouter ou modifier des schémas (c’est-à-dire des versions plus récentes), vous devez créer une image conteneur personnalisée.
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: 557963fb-ede7-4a88-9e3e-19ace7f1e36b AZURE_CLIENT_ID="<clientId>" # App Registration client ID. Example: b149dc73-ed8c-4ad3-bbaf-882a208f87eb AZURE_CLIENT_SECRET="<clientSecret>" # App Registration client secret. CALLBACK_URL="http://localhost:5050" #ie: http://localhost:8080 # 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 VERSION=0.1.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: community.opengroup.org:5555/osdu/platform/consumption/geospatial/gridgain-community tag: 8.8.34 configuration: gcz_ignite_namespace: "$GCZ_IGNITE_NAMESPACE" gcz_ignite_service: "$GCZ_IGNITE_SERVICE" provider: namespace: $NAMESPACE image: repository: community.opengroup.org:5555 name: osdu/platform/consumption/geospatial/geospatial-provider-master tag: latest service: type: LoadBalancer annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" transformer: namespace: $NAMESPACE image: repository: community.opengroup.org:5555 name: osdu/platform/consumption/geospatial/geospatial-transformer-master tag: latest service: type: LoadBalancer annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" configuration: datapartitionid: $DATA_PARTITION_ID clientId: $AZURE_CLIENT_ID tenantId: $AZURE_TENANT_ID callbackURL: $CALLBACK_URL 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: {{- range $key, $value := $.Values.global.provider.service.annotations }} {{ $key }}: {{ $value | quote }} {{- end }} 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: {{- range $key, $value := $.Values.global.transformer.service.annotations }} {{ $key }}: {{ $value | quote }} {{- end }} spec: selector: app: transformer ports: - port: 80 protocol: TCP targetPort: 8080 type: {{ $.Values.global.transformer.service.type }} EOF
Authentifiez-vous auprès du cluster Azure Kubernetes Service (AKS) :
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
Déployez les dépendances HELM :
helm dependency build
Déployez le graphique HELM GCZ :
helm install $CHART ../$CHART --values osdu_gcz_custom_values.yaml
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.
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 (adresse IP externe).servers: - url: "http://<GCZ-Service-External-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 clients d’API à partir du GitLab OSDU et importez-la dans le client API de votre choix (par exemple, 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.