Aracılığıyla paylaş


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

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.

Önemli

Jeo-Uzamsal Tüketim Bölgesi (GCZ) hizmeti OSDU Forumu'nda mezun bir hizmet olmakla birlikte, güvenlik ve kullanım açısından sınırlamaları vardır. Ortamın güvenliğini sağlamak için bazı ek hizmetler ve ilkeler dağıtacağız, ancak hizmetin OSDU Gitlab'de geliştirilmesini izlemenizi öneririz.

Açıklama

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.

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ğrulamaktı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. Daha fazla kurulum, yapılandırma ve bakım gerektirir. Ayrıca, sağlanan kapsayıcı görüntülerinde bazı sınırlamalar vardır.
  • Windows: GCZ hizmetini bir Windows'a dağıtın. Kurulumu ve yapılandırılması daha kolay olduğundan ve daha az bakım gerektirdiği için 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.

Önemli

AKS kullanarak GCZ'nin geçerli dağıtımı, eklenen şemaların varsayılan yapılandırmasıyla sınırlıdır. Desteklenen şemalarla ilgili bilgi için lütfen OSDU GitLab'e bakın. Şema eklemek veya değiştirmek için (daha yeni sürümler) özel bir kapsayıcı görüntüsü oluşturulması gerekir.

Ö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: 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
    
  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: 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
    
  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:
            {{- 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
    
  6. Azure Kubernetes Service (AKS) kümesinde kimlik doğrulaması yapın:

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
    
  7. HELM bağımlılıklarını dağıtma:

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

    helm install $CHART ../$CHART --values osdu_gcz_custom_values.yaml
    
  9. Dağıtımı doğrulayın:

    kubectl get pods -n $NAMESPACE
    

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

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

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 (Dış IP) karşılık gelen IP'leriyle değiştirin servers .

    servers:
    - url: "http://<GCZ-Service-External-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 (örneğin Postman) 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.