Aracılığıyla paylaş


Jeo-Uzamsal Tüketim Bölgesini Dağıtma

OSDU Jeo-Uzamsal Tüketim Bölgesi (GCZ), jeo-uzamsal verilerin daha iyi yönetilmesini ve kullanımını sağlayan bir hizmettir. GCZ, konum tabanlı bilgilerin işlenmesini kolaylaştırır. Teknik karmaşıklıkları soyutlayarak yazılım uygulamalarının karmaşık ayrıntılarla uğraşmaya gerek kalmadan jeo-uzamsal verilere erişmesini sağlar. GCZ, kullanıma hazır harita hizmetleri sağlayarak OSDU özellikli uygulamalarla sorunsuz tümleştirmeyi kolaylaştırır.

Bu kılavuzda, Enerji için Azure Data Manager (ADME) ile tümleştirilmiş Jeo-Uzamsal Tüketim Bölgesi (GCZ) hizmetinin nasıl dağıtılacağı gösterilmektedir.

Microsoft Entra Id'de Uygulama Kaydı Oluşturma

GCZ'yi dağıtmak için Microsoft Entra Id'de bir Uygulama Kaydı oluşturmanız gerekir. Uygulama Kaydı, jeo-uzamsal verilerin önbelleğini oluşturabilmek için GCZ API'lerinin kimliğini Enerji için Azure Data Manager ile doğrulamak için kullanılır.

  1. Uygulama Kaydı oluşturma yönergeleri için bkz . Microsoft Entra ID'de Uygulama Kaydı Oluşturma.

  2. Enerji için Azure Data Manager'da ilgili verileri okumak için Uygulama Kaydı izni verin. Diğer yönergeler için bkz . OSDU grubuna üye ekleme.

Ayarlama

GCZ hizmeti için iki ana dağıtım seçeneği vardır:

  • Azure Kubernetes Service (AKS):GCZ hizmetini aks kümesine dağıtın. Bu dağıtım seçeneği üretim ortamları için önerilir. Ayarlamak, yapılandırmak ve bakımını yapmak için daha fazla çaba gerektirir.
  • Windows: GCZ hizmetini bir Windows'a dağıtın. Geliştirme ve test ortamları için bu dağıtım seçeneği önerilir.

Azure Kubernetes Service'te (AKS) Jeo-Uzamsal Tüketim Bölgesi (GCZ) dağıtma

Azure Kubernetes Service'te (AKS) Jeo-Uzamsal Tüketim Bölgesi'ni (GCZ) dağıtmayı öğrenin.

Önkoşullar

Jeo-Uzamsal Tüketim Bölgesi (GCZ) HELM GrafiğiNi Dağıtma

  1. GCZ deposunu yerel ortamınıza kopyalayın:

    git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
    
  2. Dizini klasör olarak geospatial değiştirin:

    cd geospatial/devops/azure/charts/geospatial
    
  3. Dağıtım için değişkenleri tanımlayın:

    # 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. HELM grafiğini oluşturma:

    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. ve transformer hizmetleri yapılandırma dosyaları için provider hizmet türünü olarak LoadBalancer değiştirin.

    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. Doğru şemaların dahil olduğundan emin olmak için transformatör yapılandırma dosyasını application.yml gözden geçirin.

    nano ../transformer/application.yml
    
  7. Sağlayıcı yapılandırma dosyasını koop-config.jsongözden geçirin.

    nano ../provider/koop-config.json
    
  8. Azure Kubernetes Service (AKS) kümesinde kimlik doğrulaması yapın:

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
    
  9. AKS Ad Alanı Oluştur:

    kubectl create namespace $NAMESPACE
    
  10. HELM bağımlılıklarını dağıtma:

    helm dependency build
    
  11. GCZ HELM grafiğini dağıtma:

    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. Dağıtımı doğrulayın:

    kubectl get pods -n $NAMESPACE
    

    Şimdi , providerve transformer hizmetlerinin ignitepodlarını görmeniz gerekir.

  13. Ardından ve transformer hizmetleri için Dış IP'leri provider not alın.

    kubectl get service -n $NAMESPACE
    

    Bu IP'ler GCZ API uç noktalarına bağlanmak için kullanılır.

Önemli

Yapılandırma dosyalarını (örneğin, application.yml veya koop-config.json) güncelleştirmek istiyorsanız AKS yapılandırmasını (configmap) güncelleştirmeli ve ardından ve transformer hizmetleri için provider mevcut podları silmelisiniz. Podlar yeni yapılandırmayla yeniden oluşturulur. GCZ API'lerini kullanarak yapılandırmayı değiştirirseniz, pod yeniden başlatıldıktan sonra değişiklikler kalıcı olmaz .

Bir Windows Sanal Makinesinde Jeo-Uzamsal Tüketim Bölgesi (GCZ) Dağıtma

Windows'da Jeo-Uzamsal Tüketim Bölgesi'nin (GCZ) nasıl dağıtılacağı hakkında bilgi edinin. Kurulumu ve yapılandırılması daha kolay olduğundan ve daha az bakım gerektirdiği için bu dağıtım seçeneği geliştirme ve test ortamları için önerilir.

Önkoşullar

  • Enerji için Azure Data Manager örneği. Enerji için Azure Data Manager örneğine sahip değilseniz bkz . Enerji için Azure Data Manager örneği oluşturma.
  • Bir Windows Sanal Makinesi. Windows Sanal Makineniz yoksa bkz . Azure'da Windows Sanal Makinesi oluşturma. Yerel makinenizi de kullanabilirsiniz.
  • Windows Sanal Makinesi'ne java JDK 17 yüklendi. Java yüklü değilse bkz . Windows'a Java yükleme.
  • Düğüm 18.19.1 (LTS) Windows Sanal Makinesi'ne yüklendi. Node yüklü değilse bkz . Windows'a Node.js ve npm yükleme.
  • Python 3.11.4 veya üzeri Windows Sanal Makinesi'ne yüklenmiştir. Python yüklü değilse bkz . Windows'a Python yükleme.
    • Yükleme işlemi sırasında eklediğinizden pip emin olun. eklemeyi pipunutursanız el ile yükleyebilirsiniz.

Windows'da GCZ'yi dağıtma

  1. Windows Sanal Makinenize bağlanın.

  2. OSDU GitLab deposundan aşağıdaki dosyaları indirin:

    1. GCZ Sağlayıcısı
    2. GCZ Transformatörü
    3. Python bağımlılıkları
  3. PowerShell'i yönetici olarak açın ve dosyaları indirdiğiniz klasöre gidin.

  4. Dosyaları ayıklamak için aşağıdaki komutları çalıştırın:

    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. Ortam değişkenlerini yapılandırın:

    $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
    

    Daha fazla ortam değişkeni için OSDU GitLab belgelerine bakın.

  6. Yapılandırma dosyalarını bir metin düzenleyicisinde açarak ve gerekirse değerleri güncelleştirerek GCZ Sağlayıcısı ve Transformer için yapılandırma dosyalarını doğrulayın.

    • Sağlayıcı: C:\gcz\gcz-provider\gcz-provider-core\config\koop-config.json
    • Trafo: C:\gcz\gcz-transformer-core\config\application.yml

    Önemli

    Yapılandırma dosyalarındaki şemalarda değişiklik yaparsanız, bu şemaların her iki yapılandırma dosyasında da temsil edildiklerinden emin olmanız gerekir.

  7. (isteğe bağlı) Python Bağımlılıklarını yükleyin (yalnızca İyi Günlük İlişkilendirmesi için gereklidir).

    pip install -r C:\gcz\gcz-transformer-core\src\main\resources\script\requirements.txt --no-index --find-links python-dependencies
    
  8. GCZ Transformer'ı başlatın.

    C:\gcz\transformer\transformer.bat local
    
  9. GCZ Sağlayıcısını oluşturun.

    cd C:\gcz\gcz-provider\gcz-provider-core
    npm install
    npm start
    

Varsayılan olarak Sağlayıcı açık http://localhost:8083 , Transformer ise üzerinde http://localhost:8080dinliyordur.

GCZ API'lerini genel olarak yayımlama (isteğe bağlı)

GCZ API'lerini genel kullanıma açmak istiyorsanız Azure API Management'ı (APIM) kullanabilirsiniz. Azure API Management, GCZ hizmetinde henüz yerleşik kimlik doğrulaması ve yetkilendirme olmadığından GCZ hizmetini güvenli bir şekilde İnternet'te kullanıma sunmamıza olanak tanır. APIM aracılığıyla API'leri güvenli hale getirmek, izlemek ve yönetmek için ilkeler ekleyebiliriz.

Önkoşullar

  • Azure API Management örneği. Azure API Management örneğine sahip değilseniz bkz . Azure API Management örneği oluşturma.
  • GCZ API'leri dağıtılır ve çalışır.

Önemli

Azure API Management örneğinin GCZ API'leriyle iletişim kurabilmesi için AKS kümesine yönlendirilebilen bir sanal ağa eklenmiş olması gerekir.

GCZ API'lerini Azure API Management'a ekleme

GCZ OpenAPI belirtimlerini indirme

  1. İki OpenAPI belirtimini yerel bilgisayarınıza indirin.

  2. Her OpenAPI belirtimi dosyasını bir metin düzenleyicisinde açın ve bölümünü AKS GCZ Services Load Balancer'ın karşılık gelen IP'leriyle değiştirin servers .

    servers:
      - url: "http://<GCZ-Service-LoadBalancer-IP>/ignite-provider"
    

GCZ API'lerini Azure API Management'a ekleme

  1. Azure portalında Azure API Management hizmetinize gidin.

  2. Sol gezinti bölmesinde API'ler'i seçin.

  3. + API Ekle'yi seçin.

  4. OpenAPI'yi seçin.

  5. Dosya seçin'i seçin ve dosyayı karşıya yükleyingcz-openapi-provider.yaml.

  6. API URL'si soneki alanına girinignite-provider.

  7. Oluştur'u belirleyin.

  8. Dosyanın adımlarını gcz-openapi-transformer.yaml yineleyin, ancak API URL'si son eki olarak kullanıngcz/transformer/admin.

    APIM'ye GCZ API'sini ekleme

İlkeleri yapılandırma

Ardından JSON Web Belirteçlerini (JWT) doğrulamak için ilkeleri yapılandırmamız gerekir.

Aşağıdaki bilgiler gerekir:

  • Microsoft Entra ID kiracısı kimliğiniz.
  • Enerji için Azure Data Manager istemci kimliği (veya ayrıysa belirteç veren istemci kimliği).

Not

Belirteç veren birden çok Uygulama Kaydınız varsa, öğesine birden çok <application-id> öğe <client-application-ids> ekleyebilirsiniz.

  1. Yeni oluşturulan Geospatial Consumption Zone - Provider API'de Tüm işlemler'in seçili olduğundan emin olun.

  2. Gelen işleme'nin altında ... ve ardından Kod düzenleyicisi'ni seçin.

  3. Aşağıdaki ilke tanımını düzenleyiciye yapıştırın:

    <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. değerini Microsoft Entra Id kiracı kimliğinizle ve %client-id% Enerji için Azure Data Manager istemci kimliğiyle değiştirin%tenant-id%.

  5. Kaydet'i seçin.

  6. API için Geospatial Consumption Zone - Transformer adımları yineleyin.

GCZ hizmetini test etme

  1. OSDU GitLab'den API istemci koleksiyonunu indirin ve istediğiniz API istemcinize (bruno, Postman gibi) aktarın.

  2. API istemcinize aşağıdaki ortam değişkenlerini ekleyin:

    • PROVIDER_URL - GCZ Sağlayıcı API'sinin URL'si.
    • AMBASSADOR_URL - GCZ Transformer API'sinin URL'si.
    • access_token - Geçerli bir ADME erişim belirteci.
  3. GCZ'nin beklendiği gibi çalıştığını doğrulamak için api çağrılarını koleksiyonda çalıştırın.

Sonraki adımlar

GCZ'nin başarılı bir dağıtımını yaptıktan sonra şunları yapabilirsiniz:

Önemli

GCZ WebApps şu anda geliştirme aşamasındadır ve kimlik doğrulamasını desteklemez. Kimlik doğrulaması ve yetkilendirmeyi etkinleştirmek için WebApps'i özel bir ağa dağıtmanızı ve Azure Uygulaması lication Gateway veya Azure Front Door kullanarak kullanıma sunmanızı öneririz.

Ayrıca Verileri Enerji için Azure Data Manager örneğine de alabilirsiniz:

Başvurular

  • Jeo-Uzamsal Tüketim Bölgesi hakkında bilgi için bkz . OSDU GitLab.