توزيع منطقة الاستهلاك الجيوفضائي
منطقة الاستهلاك الجيوفضائي OSDU (GCZ) هي خدمة تمكن من تعزيز إدارة البيانات الجغرافية المكانية واستخدامها. يبسط GCZ معالجة المعلومات المستندة إلى الموقع. فهو يلخص التعقيدات التقنية، ما يسمح لتطبيقات البرامج بالوصول إلى البيانات الجغرافية المكانية دون الحاجة إلى التعامل مع التفاصيل المعقدة. من خلال توفير خدمات الخرائط الجاهزة للاستخدام، تسهل GCZ التكامل السلس مع التطبيقات التي تدعم OSDU.
يوضح لك هذا الدليل كيفية نشر خدمة منطقة الاستهلاك الجيوفضائي (GCZ) المتكاملة مع Azure Data Manager for Energy (ADME).
إنشاء تسجيل تطبيق في معرف Microsoft Entra
لنشر GCZ، تحتاج إلى إنشاء تسجيل تطبيق في معرف Microsoft Entra. يتم استخدام تسجيل التطبيق لمصادقة واجهات برمجة التطبيقات GCZ مع Azure Data Manager for Energy لتكون قادرة على إنشاء ذاكرة التخزين المؤقت للبيانات الجغرافية المكانية.
راجع إنشاء تسجيل تطبيق في معرف Microsoft Entra للحصول على إرشادات حول كيفية إنشاء تسجيل تطبيق.
امنح إذن تسجيل التطبيق لقراءة البيانات ذات الصلة في Azure Data Manager for Energy. راجع كيفية إضافة أعضاء إلى مجموعة OSDU للحصول على مزيد من الإرشادات.
الإعداد
هناك خياران رئيسيان للتوزيع لخدمة GCZ:
- Azure Kubernetes Service (AKS): نشر خدمة GCZ على نظام مجموعة AKS. يوصى بخيار النشر هذا لبيئات الإنتاج. يتطلب المزيد من الجهد لإعداد وتكوين وصيانة.
- Windows: نشر خدمة GCZ على Windows. يوصى بخيار النشر هذا لبيئات التطوير والاختبار.
توزيع منطقة الاستهلاك الجيوفضائي (GCZ) على خدمة Azure Kubernetes (AKS)
تعرف على كيفية نشر منطقة الاستهلاك الجيوفضائي (GCZ) على خدمة Azure Kubernetes (AKS).
المتطلبات الأساسية
- Azure Subscription. إذا لم يكن لديك اشتراك Azure، فأنشئ حسابًا مجانًا.
- نظام مجموعة Azure Kubernetes (AKS) مع تكامل الشبكة الظاهرية. راجع إنشاء نظام مجموعة Azure Kubernetes Service (AKS) وشبكة Azure Container Networking Interface (CNI) للحصول على مزيد من الإرشادات.
- Azure Cloud Shell أو Azure CLI وkubectl وGit CLI.
توزيع مخطط HELM لمنطقة الاستهلاك الجيوفضائي (GCZ)
استنساخ مستودع GCZ إلى البيئة المحلية الخاصة بك:
git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
تغيير الدليل إلى
geospatial
المجلد:cd geospatial/devops/azure/charts/geospatial
تعريف المتغيرات للتوزيع:
# 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
إنشاء مخطط 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
تغيير نوع الخدمة إلى
LoadBalancer
لملفاتprovider
تكوين الخدمات و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
راجع ملف
application.yml
تكوين المحول للتأكد من تضمين المخططات الصحيحة.nano ../transformer/application.yml
راجع ملف
koop-config.json
تكوين الموفر .nano ../provider/koop-config.json
المصادقة على نظام مجموعة Azure Kubernetes Service (AKS):
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
إنشاء مساحة اسم AKS:
kubectl create namespace $NAMESPACE
توزيع تبعيات HELM:
helm dependency build
نشر مخطط GCZ HELM:
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"
تحقق من النشر:
kubectl get pods -n $NAMESPACE
الآن يجب أن تشاهد pods للخدمات
ignite
provider
و وtransformer
.بعد ذلك، لاحظ عناوين IP الخارجية للخدمات
provider
وtransformer
.kubectl get service -n $NAMESPACE
يتم استخدام عناوين IP هذه للاتصال بنقاط نهاية واجهة برمجة تطبيقات GCZ.
هام
إذا كنت ترغب في تحديث ملفات التكوين (على سبيل المثال، application.yml
أو koop-config.json
)، يجب تحديث تكوين AKS (configmap) ثم حذف pods الموجودة للخدمات provider
و transformer
. ستتم إعادة إنشاء الحجيرات مع التكوين الجديد. إذا قمت بتغيير التكوين باستخدام واجهات برمجة تطبيقات GCZ، فلن تستمر التغييرات بعد إعادة تشغيل الجراب.
توزيع منطقة الاستهلاك الجيوفضائي (GCZ) على جهاز ظاهري يعمل بنظام Windows
تعرف على كيفية نشر منطقة الاستهلاك الجيوفضائي (GCZ) على Windows. يوصى بخيار النشر هذا لبيئات التطوير والاختبار، حيث إنه من الأسهل إعداده وتكوينه، ويتطلب صيانة أقل.
المتطلبات الأساسية
- Azure Data Manager لمثيل الطاقة. إذا لم يكن لديك Azure Data Manager لمثيل الطاقة، فشاهد إنشاء Azure Data Manager لمثيل الطاقة.
- جهاز ظاهري يعمل بنظام Windows. إذا لم يكن لديك جهاز ظاهري يعمل بنظام Windows، فشاهد إنشاء جهاز ظاهري ل Windows في Azure. من الممكن أيضا استخدام جهازك المحلي.
- Java JDK 17 مثبت على الجهاز الظاهري ل Windows. إذا لم يكن لديك Java مثبتا، فشاهد تثبيت Java على Windows.
- العقدة 18.19.1 (LTS) المثبتة على الجهاز الظاهري ل Windows. إذا لم تكن العقدة مثبتة لديك، فشاهد تثبيت Node.js وnpm على Windows.
- Python 3.11.4 أو أحدث مثبت على الجهاز الظاهري ل Windows. إذا لم يكن Python مثبتا لديك، فشاهد تثبيت Python على Windows.
- تأكد من إضافة
pip
أثناء عملية التثبيت. إذا نسيت إضافةpip
، يمكنك تثبيته يدويا.
- تأكد من إضافة
نشر GCZ على Windows
الاتصال بجهاز Windows الظاهري الخاص بك.
قم بتنزيل الملفات التالية من مستودع OSDU GitLab:
افتح PowerShell كمسؤول وانتقل إلى المجلد حيث قمت بتنزيل الملفات.
قم بتشغيل الأوامر التالية لاستخراج الملفات:
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\
تكوين متغيرات البيئة:
$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
لمزيد من متغيرات البيئة، راجع وثائق OSDU GitLab.
تحقق من صحة ملفات التكوين لموفر GCZ والمحول عن طريق فتح ملفات التكوين في محرر نص وتحديث القيم إذا لزم الأمر.
- كاسب:
C:\gcz\gcz-provider\gcz-provider-core\config\koop-config.json
- محول:
C:\gcz\gcz-transformer-core\config\application.yml
هام
إذا قمت بإجراء تغييرات على المخططات في ملفات التكوين، يجب عليك التأكد من تمثيل هذه المخططات في كل من ملفات التكوين.
- كاسب:
(اختياري) تثبيت تبعيات Python (مطلوب فقط لإقبول سجل جيد).
pip install -r C:\gcz\gcz-transformer-core\src\main\resources\script\requirements.txt --no-index --find-links python-dependencies
ابدأ تشغيل محول GCZ.
C:\gcz\transformer\transformer.bat local
إنشاء موفر GCZ.
cd C:\gcz\gcz-provider\gcz-provider-core npm install npm start
بشكل افتراضي، يستمع http://localhost:8083
الموفر ويستمع المحول إلى http://localhost:8080
.
نشر واجهات برمجة تطبيقات GCZ بشكل عام (اختياري)
إذا كنت ترغب في كشف واجهات برمجة تطبيقات GCZ بشكل عام، يمكنك استخدام Azure API Management (APIM). تسمح لنا إدارة واجهة برمجة تطبيقات Azure بعرض خدمة GCZ على الإنترنت بشكل آمن، حيث لا تحتوي خدمة GCZ بعد على المصادقة والتخويل المضمنة. من خلال APIM يمكننا إضافة نهج لتأمين واجهات برمجة التطبيقات ومراقبتها وإدارتها.
المتطلبات الأساسية
- مثيل Azure API Management. إذا لم يكن لديك مثيل إدارة واجهة برمجة تطبيقات Azure، فشاهد إنشاء مثيل إدارة واجهة برمجة تطبيقات Azure.
- يتم نشر واجهات برمجة تطبيقات GCZ وتشغيلها.
هام
سيحتاج مثيل Azure API Management إلى إدخاله في شبكة ظاهرية قابلة للتوجيه إلى مجموعة AKS لتكون قادرة على الاتصال بواجهة برمجة تطبيقات GCZ.
إضافة واجهات برمجة تطبيقات GCZ إلى Azure API Management
تنزيل مواصفات GCZ OpenAPI
قم بتنزيل مواصفة OpenAPI على الكمبيوتر المحلي.
افتح كل ملف مواصفات OpenAPI في محرر نصوص واستبدل
servers
القسم ب IPs المقابلة من موازن تحميل خدمات AKS GCZ.servers: - url: "http://<GCZ-Service-LoadBalancer-IP>/ignite-provider"
إضافة واجهات برمجة تطبيقات GCZ إلى Azure API Management
انتقل إلى خدمة Azure API Management في مدخل Microsoft Azure.
في جزء التنقل الأيسر، حدد واجهات برمجة التطبيقات.
حدد + Add API.
حدد OpenAPI.
حدد Select a file وقم بتحميل
gcz-openapi-provider.yaml
الملف.في حقل لاحقة عنوان URL لواجهة برمجة التطبيقات، أدخل
ignite-provider
.حدد إنشاء.
كرر الخطوات للملف
gcz-openapi-transformer.yaml
، ولكن استخدمgcz/transformer/admin
كلاحقة عنوان URL لواجهة برمجة التطبيقات.
تكوين النهج
بعد ذلك، نحتاج إلى تكوين النهج للتحقق من صحة رموز ويب JSON المميزة (JWT).
تحتاج إلى المعلومات التالية:
- معرف مستأجر Microsoft Entra ID الخاص بك.
- معرف عميل Azure Data Manager for Energy (أو معرف العميل الذي يصدر الرمز المميز إذا كان منفصلا).
إشعار
إذا كان لديك العديد من تسجيلات التطبيقات التي تصدر الرموز المميزة، يمكنك إضافة عناصر متعددة <application-id>
إلى <client-application-ids>
العنصر.
في واجهة برمجة التطبيقات التي تم إنشاؤها
Geospatial Consumption Zone - Provider
حديثا، تأكد من تحديد جميع العمليات .ضمن Inbound processing، حدد ... ثم Code editor.
الصق تعريف النهج التالي في المحرر:
<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>
استبدل
%tenant-id%
بمعرف مستأجر Microsoft Entra ID الخاص بك، و%client-id%
بمعرف عميل Azure Data Manager for Energy.حدد حفظ.
كرر الخطوات لواجهة
Geospatial Consumption Zone - Transformer
برمجة التطبيقات.
اختبار خدمة GCZ
قم بتنزيل مجموعة عملاء واجهة برمجة التطبيقات من OSDU GitLab واستوردها إلى عميل واجهة برمجة التطبيقات الذي تختاره (أي برونو، Postman).
أضف متغيرات البيئة التالية إلى عميل API الخاص بك:
-
PROVIDER_URL
- عنوان URL لواجهة برمجة تطبيقات موفر GCZ. -
AMBASSADOR_URL
- عنوان URL لواجهة برمجة تطبيقات محول GCZ. -
access_token
- رمز مميز صالح للوصول إلى ADME.
-
للتحقق من أن GCZ يعمل كما هو متوقع، قم بتشغيل استدعاءات واجهة برمجة التطبيقات في المجموعة.
الخطوات التالية
بعد النشر الناجح ل GCZ، يمكنك:
- تصور بيانات GCZ باستخدام GCZ WebApps من OSDU GitLab.
هام
تطبيقات ويب GCZ قيد التطوير حاليا ولا تدعم المصادقة. نوصي بنشر WebApps في شبكة خاصة وكشفها باستخدام Azure Application Gateway أو Azure Front Door لتمكين المصادقة والتخويل.
يمكنك أيضا استيعاب البيانات في Azure Data Manager لمثيل الطاقة:
- البرنامج التعليمي حول استيعاب محلل CSV.
- البرنامج التعليمي حول استيعاب البيان.
المراجع
- للحصول على معلومات حول منطقة الاستهلاك الجيوفضائي، راجع OSDU GitLab.