Развертывание геопространственной зоны потребления
Зона геопространственного потребления OSDU (GCZ) — это служба, которая обеспечивает расширенное управление и использование геопространственных данных. GCZ упрощает обработку сведений на основе расположения. Он абстрагирует технические сложности, позволяя программным приложениям получать доступ к геопространственным данным без необходимости иметь дело с сложными деталями. Предоставляя готовые службы карт, GCZ упрощает простую интеграцию с приложениями с поддержкой OSDU.
В этом руководстве показано, как развернуть службу геопространственного потребления (GCZ), интегрированную с Azure Data Manager для энергетики (ADME).
Создание регистрации приложений в идентификаторе Microsoft Entra
Чтобы развернуть GCZ, необходимо создать регистрацию приложений в идентификаторе Microsoft Entra. Регистрация приложений используется для проверки подлинности API GCZ с помощью Azure Data Manager для энергетики, чтобы создать кэш геопространственных данных.
Инструкции по созданию регистрации приложений см. в разделе "Создание регистрации приложений" в идентификаторе Microsoft Entra.
Предоставьте разрешение на регистрацию приложений для чтения соответствующих данных в Azure Data Manager для энергетики. Дополнительные инструкции см. в статье о добавлении участников в группу OSDU.
Настройка
Существует два основных варианта развертывания для службы GCZ:
- Служба Azure Kubernetes (AKS): разверните службу GCZ в кластере AKS. Этот вариант развертывания рекомендуется использовать для рабочих сред. Для этого требуется больше усилий по настройке, настройке и обслуживанию.
- Windows: развертывание службы GCZ в Windows. Этот вариант развертывания рекомендуется для сред разработки и тестирования.
Развертывание геопространственной зоны потребления (GCZ) на Служба Azure Kubernetes (AKS)
Узнайте, как развернуть зону геопространственного потребления (GCZ) в Служба Azure Kubernetes (AKS).
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
- Кластер Azure Kubernetes (AKS) с интеграцией виртуальной сети. Дополнительные инструкции см. в статье "Создание кластера Служба Azure Kubernetes (AKS) и сетевых интерфейсов контейнеров Azure (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
Измените
provider
типLoadBalancer
службы на файлы конфигурации и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 (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
Теперь вы увидите модули pod для
ignite
служб иtransformer
службprovider
.Затем обратите внимание на внешние IP-адреса для
provider
служб иtransformer
служб.kubectl get service -n $NAMESPACE
Эти IP-адреса используются для подключения к конечным точкам API GCZ.
Внимание
Если вы хотите обновить файлы конфигурации (например, application.yml
или koop-config.json
), необходимо обновить конфигурацию AKS (конфигурацию configmap), а затем удалить существующие модули pod для provider
служб и transformer
служб. Модули pod будут повторно созданы с новой конфигурацией. Если изменить конфигурацию с помощью API GCZ, изменения не будут сохраняться после перезапуска pod.
Развертывание геопространственной зоны потребления (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.
Скачайте следующие файлы из репозитория GitLab OSDU:
Откройте 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 (требуется только для интерполяции журналов Well).
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
.
Публикация API GCZ публично (необязательно)
Если вы хотите публично предоставлять API GCZ, вы можете использовать Azure Управление API (APIM). Azure Управление API позволяет безопасно предоставлять службу GCZ в Интернет, так как служба GCZ еще не имеет встроенной проверки подлинности и авторизации. С помощью APIM мы можем добавлять политики для защиты, мониторинга и управления API.
Необходимые компоненты
- Экземпляр Azure API Management. Если у вас нет экземпляра Azure Управление API, см. статью "Создание экземпляра Управление API Azure".
- API GCZ развертываются и выполняются.
Внимание
Экземпляр Azure Управление API необходимо внедрить в виртуальную сеть, которая может быть routable в кластер AKS, чтобы иметь возможность взаимодействовать с API GCZ.
Добавление API GCZ в Azure Управление API
Скачивание спецификаций GCZ OpenAPI
Скачайте две спецификации OpenAPI на локальный компьютер.
Откройте каждый файл спецификации OpenAPI в текстовом редакторе и замените
servers
раздел соответствующими IP-адресами подсистемы балансировки нагрузки AKS GCZ Services.servers: - url: "http://<GCZ-Service-LoadBalancer-IP>/ignite-provider"
Добавление API GCZ в Azure Управление API
Перейдите к службе Azure Управление API в портал Azure.
В области навигации слева выберите API.
Выберите Add API Key (Добавить ключ API).
Выберите OpenAPI.
Выберите файл и отправьте
gcz-openapi-provider.yaml
файл.В поле суффикса URL-адреса API введите
ignite-provider
.Нажмите кнопку создания.
Повторите шаги для
gcz-openapi-transformer.yaml
файла, но используйтеgcz/transformer/admin
в качестве суффикса URL-адреса API.
Настройка политик
Затем необходимо настроить политики для проверки веб-маркеров JSON (JWT).
Потребуются следующие сведения:
- Ваш идентификатор клиента Microsoft Entra ID.
- Идентификатор клиента Azure Data Manager для энергетики (или идентификатор клиента, выдаваемого маркером, если он разделяется).
Примечание.
Если у вас несколько маркеров регистрации приложений, можно добавить несколько <application-id>
элементов в <client-application-ids>
элемент.
В созданном
Geospatial Consumption Zone - Provider
API убедитесь, что выбраны все операции .В разделе "Входящий трафик" выберите ... , а затем редактор кода.
Вставьте следующее определение политики в редакторе:
<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 для energy.Выберите Сохранить.
Повторите шаги для
Geospatial Consumption Zone - Transformer
API.
Тестирование службы GCZ
Скачайте коллекцию клиентов API из OSDU GitLab и импортируйте ее в выбранный клиент API (т. е. Бруно, Postman).
Добавьте следующие переменные среды в клиент API:
PROVIDER_URL
— URL-адрес API поставщика GCZ.AMBASSADOR_URL
— URL-адрес API преобразователя GCZ.access_token
— допустимый маркер доступа ADME.
Чтобы убедиться, что GCZ работает должным образом, выполните вызовы API в коллекции.
Следующие шаги
После успешного развертывания GCZ вы можете:
- Визуализировать данные GCZ с помощью GCZ WebApps из OSDU GitLab.
Внимание
В настоящее время веб-приложения GCZ находятся в разработке и не поддерживают проверку подлинности. Мы рекомендуем развертывать веб-приложения в частной сети и предоставлять их с помощью Шлюз приложений Azure или Azure Front Door для включения проверки подлинности и авторизации.
Вы также можете получать данные в экземпляр Azure Data Manager для энергетики:
- Руководство по приему синтаксического анализатора CSV.
- Руководство по приему манифеста.
Ссылки
- Сведения о зоне геопространственного потребления см. в разделе OSDU GitLab.