Wdrażanie strefy zużycia geoprzestrzennych
W tym przewodniku pokazano, jak wdrożyć usługę Geospatial Consumption Zone (GCZ) zintegrowaną z usługą Azure Data Manager for Energy (ADME).
Ważne
Chociaż usługa Geoprzestrzennej strefy zużycia (GCZ) jest usługą stopniową na forum OSDU, ma ograniczenia dotyczące zabezpieczeń i użycia. Wdrożymy kilka dodatkowych usług i zasad w celu zabezpieczenia środowiska, ale zachęcamy do opracowywania usługi w narzędziu Gitlab OSDU.
opis
Strefa zużycia geoprzestrzennego OSDU (GCZ) to usługa, która umożliwia ulepszone zarządzanie danymi geoprzestrzennym i korzystanie z tych danych. GCZ usprawnia obsługę informacji opartych na lokalizacji. Wyodrębnia ona złożoność techniczną, umożliwiając aplikacjom oprogramowania dostęp do danych geoprzestrzennych bez konieczności radzenia sobie ze skomplikowanymi szczegółami. Zapewniając gotowe do użycia usługi mapy, GCZ ułatwia bezproblemową integrację z aplikacjami z obsługą OSDU.
Tworzenie rejestracji aplikacji w usłudze Microsoft Entra ID
Aby wdrożyć GCZ, należy utworzyć rejestrację aplikacji w usłudze Microsoft Entra ID. Rejestracja aplikacji polega na uwierzytelnieniu interfejsów API GCZ za pomocą usługi Azure Data Manager for Energy w celu wygenerowania pamięci podręcznej danych geoprzestrzennych.
- Aby uzyskać instrukcje dotyczące tworzenia rejestracji aplikacji, zobacz Tworzenie rejestracji aplikacji w usłudze Microsoft Entra ID .
- Udziel uprawnienia Rejestracja aplikacji, aby odczytać odpowiednie dane w usłudze Azure Data Manager for Energy. Aby uzyskać dalsze instrukcje, zobacz How to add members to an OSDU group (Jak dodać członków do grupy OSDU).
Ustawienia
Istnieją dwie główne opcje wdrażania usługi GCZ:
- Azure Kubernetes Service (AKS): wdrażanie usługi GCZ w klastrze usługi AKS. Ta opcja wdrożenia jest zalecana w środowiskach produkcyjnych. Wymaga to większej liczby konfiguracji, konfiguracji i konserwacji. Ma również pewne ograniczenia w podanych obrazach kontenerów.
- Windows: wdróż usługę GCZ w systemie Windows. Ta opcja wdrażania zalecana dla środowisk programistycznych i testowych, ponieważ jest łatwiejsza do skonfigurowania i skonfigurowania oraz wymaga mniejszej konserwacji.
Wdrażanie strefy zużycia geoprzestrzennego (GCZ) w usłudze Azure Kubernetes Service (AKS)
Dowiedz się, jak wdrożyć strefę zużycia geoprzestrzennego (GCZ) w usłudze Azure Kubernetes Service (AKS).
Ważne
Bieżące wdrożenie usługi GCZ przy użyciu usługi AKS jest ograniczone do domyślnej konfiguracji dołączonych schematów. Aby uzyskać informacje dotyczące obsługiwanych schematów, zobacz OSDU GitLab . Aby dodać lub zmienić schematy (tj. nowsze wersje), należy utworzyć niestandardowy obraz kontenera.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Klaster Usługi Azure Kubernetes (AKS) z integracją sieci wirtualnej. Aby uzyskać dalsze instrukcje, zobacz Tworzenie klastra usługi Azure Kubernetes Service (AKS) i sieci azure Container Networking Interface (CNI).
- Usługa Azure Cloud Shell lub interfejs wiersza polecenia platformy Azure, kubectl i interfejs wiersza polecenia usługi Git.
Wdrażanie wykresu HELM strefy zużycia geoprzestrzennych (GCZ)
Sklonuj repozytorium GCZ do środowiska lokalnego:
git clone https://community.opengroup.org/osdu/platform/consumption/geospatial.git
Zmień katalog na
geospatial
folder:cd geospatial/devops/azure/charts/geospatial
Zdefiniuj zmienne dla wdrożenia:
# 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
Utwórz wykres 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: 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
Zmień typ usługi na
LoadBalancer
dlaprovider
plików konfiguracji usług itransformer
.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
Uwierzytelnij się w klastrze usługi Azure Kubernetes Service (AKS):
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
Wdrażanie zależności programu HELM:
helm dependency build
Wdróż wykres HELM GCZ:
helm install $CHART ../$CHART --values osdu_gcz_custom_values.yaml
Zweryfikuj wdrożenie:
kubectl get pods -n $NAMESPACE
Teraz powinny zostać wyświetlone zasobniki dla
ignite
usług ,provider
itransformer
.Następnie zwróć uwagę na zewnętrzne adresy IP dla
provider
usług itransformer
.kubectl get service -n $NAMESPACE
Te adresy IP są używane do nawiązywania połączenia z punktami końcowymi interfejsu API GCZ.
Wdrażanie strefy zużycia geoprzestrzennego (GCZ) na maszynie wirtualnej z systemem Windows
Dowiedz się, jak wdrożyć strefę zużycia geoprzestrzennych (GCZ) w systemie Windows. Ta opcja wdrażania jest zalecana w środowiskach deweloperskich i testowych, ponieważ łatwiej jest ją skonfigurować i skonfigurować oraz wymaga mniejszej konserwacji.
Wymagania wstępne
- Wystąpienie usługi Azure Data Manager dla energii. Jeśli nie masz wystąpienia usługi Azure Data Manager for Energy, zobacz Tworzenie wystąpienia usługi Azure Data Manager dla energii.
- Maszyna wirtualna z systemem Windows. Jeśli nie masz maszyny wirtualnej z systemem Windows, zobacz Tworzenie maszyny wirtualnej z systemem Windows na platformie Azure. Można również użyć maszyny lokalnej.
- Zestaw Java JDK 17 zainstalowany na maszynie wirtualnej z systemem Windows. Jeśli nie masz zainstalowanego języka Java, zobacz Instalowanie języka Java w systemie Windows.
- Węzeł 18.19.1 (LTS) zainstalowany na maszynie wirtualnej z systemem Windows. Jeśli nie masz zainstalowanego środowiska Node, zobacz Instalowanie Node.js i narzędzia npm w systemie Windows.
- Język Python 3.11.4 lub nowszy zainstalowany na maszynie wirtualnej z systemem Windows. Jeśli nie masz zainstalowanego języka Python, zobacz Instalowanie języka Python w systemie Windows.
- Upewnij się, że dodano
pip
cię podczas procesu instalacji. Jeśli zapomnisz dodaćpip
element , możesz zainstalować go ręcznie.
- Upewnij się, że dodano
Wdrażanie usługi GCZ w systemie Windows
Połącz się z maszyną wirtualną z systemem Windows.
Pobierz następujące pliki z repozytorium GitLab OSDU:
Otwórz program PowerShell jako administrator i przejdź do folderu, w którym pobrano pliki.
Uruchom następujące polecenia, aby wyodrębnić pliki:
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\
Skonfiguruj zmienne środowiskowe:
$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
Aby uzyskać więcej zmiennych środowiskowych, zobacz dokumentację narzędzia GitLab OSDU.
Zweryfikuj pliki konfiguracji dostawcy GCZ i transformatora, otwierając pliki konfiguracji w edytorze tekstów i aktualizując wartości w razie potrzeby.
- Dostawca:
C:\gcz\gcz-provider\gcz-provider-core\config\koop-config.json
- Transformator:
C:\gcz\gcz-transformer-core\config\application.yml
Ważne
Jeśli wprowadzisz zmiany w schematach w plikach konfiguracji, musisz upewnić się, że te schematy są reprezentowane w obu plikach konfiguracji.
- Dostawca:
(opcjonalnie) Zainstaluj zależności języka Python (wymagane tylko w przypadku interpolacji dzienników dobrze).
pip install -r C:\gcz\gcz-transformer-core\src\main\resources\script\requirements.txt --no-index --find-links python-dependencies
Uruchom transformator GCZ.
C:\gcz\transformer\transformer.bat local
Skompiluj dostawcę GCZ.
cd C:\gcz\gcz-provider\gcz-provider-core npm install npm start
Domyślnie dostawca nasłuchujehttp://localhost:8083
, a funkcja Transformer nasłuchuje na .http://localhost:8080
Publikowanie interfejsów API GCZ publicznie (opcjonalnie)
Jeśli chcesz udostępnić publicznie interfejsy API GCZ, możesz użyć usługi Azure API Management (APIM). Usługa Azure API Management umożliwia bezpieczne uwidocznienie usługi GCZ w Internecie, ponieważ usługa GCZ nie ma jeszcze wbudowanego uwierzytelniania i autoryzacji. Za pomocą usługi APIM możemy dodawać zasady do zabezpieczania, monitorowania interfejsów API i zarządzania nimi.
Wymagania wstępne
- Wystąpienie usługi Azure API Management. Jeśli nie masz wystąpienia usługi Azure API Management, zobacz Tworzenie wystąpienia usługi Azure API Management.
- Interfejsy API GCZ są wdrażane i uruchomione.
Ważne
Wystąpienie usługi Azure API Management musi zostać wprowadzone do sieci wirtualnej, która jest routingiem do klastra usługi AKS, aby móc komunikować się z interfejsami API GCZ.
Dodawanie interfejsów API GCZ do usługi Azure API Management
Pobieranie specyfikacji interfejsu OpenAPI GCZ
Pobierz dwie specyfikacje interfejsu OpenAPI na komputer lokalny.
Otwórz każdy plik specyfikacji interfejsu OpenAPI w edytorze tekstów i zastąp
servers
sekcję odpowiednimi adresami IP modułu równoważenia obciążenia usług AKS GCZ Services (zewnętrznym adresem IP).servers: - url: "http://<GCZ-Service-External-IP>/ignite-provider"
Dodawanie interfejsów API GCZ do usługi Azure API Management
Przejdź do usługi Azure API Management w witrynie Azure Portal.
W okienku nawigacji po lewej stronie wybierz pozycję Interfejsy API.
Wybierz pozycję + Dodaj interfejs API.
Wybierz pozycję OpenAPI.
Wybierz pozycję Wybierz plik i przekaż
gcz-openapi-provider.yaml
plik.W polu sufiks adresu URL interfejsu API wprowadź wartość
ignite-provider
.Wybierz pozycję Utwórz.
Powtórz kroki dla
gcz-openapi-transformer.yaml
pliku, ale użyj gogcz/transformer/admin
jako sufiksu adresu URL interfejsu API.
Konfigurowanie zasad
Następnie należy skonfigurować zasady w celu zweryfikowania tokenów sieci Web JSON (JWT).
Potrzebne są następujące informacje:
- Identyfikator dzierżawy Tożsamości Microsoft Entra.
- Identyfikator klienta usługi Azure Data Manager for Energy (lub identyfikator klienta wystawiającego tokeny, jeśli jest oddzielny).
Uwaga
Jeśli masz wiele tokenów wystawiających rejestracje aplikacji, możesz dodać wiele <application-id>
elementów do <client-application-ids>
elementu.
W nowo utworzonym
Geospatial Consumption Zone - Provider
interfejsie API upewnij się, że wybrano pozycję Wszystkie operacje .W obszarze Przetwarzanie przychodzące wybierz pozycję ... a następnie edytor kodu.
Wklej następującą definicję zasad w edytorze:
<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>
Zastąp
%tenant-id%
ciąg identyfikatorem dzierżawy entra firmy Microsoft i%client-id%
identyfikatorem klienta usługi Azure Data Manager for Energy.Wybierz pozycję Zapisz.
Powtórz kroki dla interfejsu
Geospatial Consumption Zone - Transformer
API.
Testowanie usługi GCZ
Pobierz kolekcję klienta interfejsu API z narzędzia GitLab OSDU i zaimportuj ją do wybranego klienta interfejsu API (na przykład Postman).
Dodaj następujące zmienne środowiskowe do klienta interfejsu API:
PROVIDER_URL
- Adres URL interfejsu API dostawcy GCZ.AMBASSADOR_URL
- Adres URL interfejsu API przekształcania GCZ.access_token
- Prawidłowy token dostępu ADME.
Aby sprawdzić, czy GCZ działa zgodnie z oczekiwaniami, uruchom wywołania interfejsu API w kolekcji.
Następne kroki
Po pomyślnym wdrożeniu usługi GCZ można wykonać następujące czynności:
- Wizualizowanie danych GCZ przy użyciu aplikacji internetowych GCZ z narzędzia GitLab OSDU.
Ważne
Aplikacje internetowe GCZ są obecnie opracowywane i nie obsługują uwierzytelniania. Zalecamy wdrożenie aplikacji internetowych w sieci prywatnej i ujawnienie ich przy użyciu usługi aplikacja systemu Azure Gateway lub Azure Front Door w celu włączenia uwierzytelniania i autoryzacji.
Możesz również pozyskiwać dane do wystąpienia usługi Azure Data Manager for Energy:
- Samouczek dotyczący pozyskiwania analizatora CSV.
- Samouczek dotyczący pozyskiwania manifestu.
Informacje
- Aby uzyskać informacje o strefie zużycia geoprzestrzennych, zobacz OSDU GitLab.