Partager via


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.

  1. Pour obtenir des instructions sur la création d’une inscription d’application, consultez Créer une inscription d’application dans Microsoft Entra ID.

  2. 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

Déployer le graphique HELM de Geospatial Consumption Zone (GCZ)

  1. Clonez le référentiel GCZ dans votre environnement local :

    git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
    
  2. Changez de répertoire en choisissant le dossier geospatial :

    cd geospatial/devops/azure/charts/geospatial
    
  3. 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
    
  4. 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
    
  5. Remplacez le type de service par LoadBalancer pour les fichiers de configuration de services provider et transformer.

    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
    
  6. 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
    
  7. Passez en revue le fichier de configuration du fournisseur koop-config.json.

    nano ../provider/koop-config.json
    
  8. Authentifiez-vous auprès du cluster Azure Kubernetes Service (AKS) :

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
    
  9. Créer un espace de noms AKS :

    kubectl create namespace $NAMESPACE
    
  10. Déployez les dépendances HELM :

    helm dependency build
    
  11. 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"
    
  12. Vérifiez le déploiement :

    kubectl get pods -n $NAMESPACE
    

    Vous devez maintenant voir les pods des services ignite, provider et transformer.

  13. Notez ensuite les adresses IP externes des services provider et transformer.

    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

Déployer GCZ sur Windows

  1. Connectez-vous à votre machine virtuelle Windows.

  2. Téléchargez les fichiers suivants à partir du référentiel du GitLab OSDU :

    1. Fournisseur GCZ
    2. Transformateur GCZ
    3. Dépendances Python
  3. Ouvrez PowerShell en tant qu’administrateur, puis accédez au dossier dans lequel vous avez téléchargé les fichiers.

  4. 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\
    
  5. 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.

  6. 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.

  7. (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
    
  8. Démarrez le transformateur GCZ.

    C:\gcz\transformer\transformer.bat local
    
  9. 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

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

  1. Téléchargez les deux spécifications OpenAPI sur votre ordinateur local.

  2. 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

  1. Accédez à votre service Gestion des API Azure dans le Portail Azure.

  2. Dans le volet de navigation de gauche, sélectionnez API.

  3. Sélectionnez + Ajouter API.

  4. Sélectionnez OpenAPI.

  5. Choisissez Sélectionner un fichier et chargez le fichier gcz-openapi-provider.yaml.

  6. Dans le champ Suffixe de l’URL de l’API, entrez ignite-provider.

  7. Sélectionnez Créer.

  8. Répétez les étapes pour le fichier gcz-openapi-transformer.yaml, mais utilisez gcz/transformer/admin comme Suffixe de l’URL de l’API.

    Ajouter l’API GCZ à APIM

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>.

  1. Dans l’API Geospatial Consumption Zone - Provider récemment créée, vérifiez que l’option Toutes les opérations est sélectionnée.

  2. Sous Traitement entrant, sélectionnez ..., puis Éditeur de code.

  3. 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>
    
  4. Remplacez %tenant-id% par votre ID de locataire Microsoft Entra ID et %client-id% par l’ID client Azure Data Manager for Energy.

  5. Cliquez sur Enregistrer.

  6. Répétez les étapes pour l’API Geospatial Consumption Zone - Transformer.

Test du service GCZ

  1. 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).

  2. 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.
  3. 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.