Udostępnij za pośrednictwem


Migrowanie usługi Spring Cloud Gateway for Tanzu do zarządzanej bramy platformy Spring w usłudze Azure Container Apps

Uwaga

Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.

Ten artykuł dotyczy: ❎ Podstawowa/Standardowa ✅ Enterprise

W tym artykule pokazano, jak przeprowadzić migrację bramy VMware Spring Cloud Gateway w usłudze Azure Spring Apps Enterprise do zarządzanej bramy dla platformy Spring w usłudze Azure Container Apps przy użyciu interfejsu wiersza polecenia platformy Azure.

Wymagania wstępne

Aprowizuj bramę zarządzaną dla platformy Spring

Użyj następującego polecenia, aby aprowizować składnik Gateway for Spring Java w środowisku Azure Container Apps utworzonym w wymaganiach wstępnych:

az containerapp env java-component gateway-for-spring create \
    --resource-group <resource-group-name> \
    --name <gateway-name> \
    --environment <azure-container-app-environment-name>

Po pomyślnym utworzeniu składnika zobaczysz, że wartość Stan aprowizacji dla usługi Spring Cloud Gateway to Powodzenie.

Zarządzanie zasobami

Alokacja zasobów kontenera dla usługi Gateway for Spring w usłudze Azure Container Apps jest stała na następujące wartości:

  • Procesor CPU: 0,5 procesorów wirtualnych
  • Pamięć: 1 Gi

Aby skonfigurować liczbę wystąpień dla usługi Gateway dla platformy Spring, użyj parametrów --min-replicas i --max-replicas, ustawiając obie wartości na tę samą wartość. Ta konfiguracja gwarantuje, że liczba wystąpień pozostaje stała. System obecnie nie obsługuje dynamicznych konfiguracji skalowania automatycznego.

Konfigurowanie bramy dla platformy Spring

Po aprowizacji bramy następnym krokiem jest skonfigurowanie jej pod kątem bezproblemowej migracji.

Konfigurację i trasy składnika Gateway for Spring można zaktualizować przy użyciu update polecenia , jak pokazano w poniższym przykładzie:

az containerapp env java-component gateway-for-spring update \
    --resource-group <resource-group-name> \
    --name <gateway-name> \
    --environment <azure-container-app-environment-name> \
    --configuration <configuration-key>="<configuration-value>" \
    --route-yaml <path-to-route-YAML-file>

Konfiguracja mechanizmu CORS

Aby przeprowadzić migrację globalnej konfiguracji współużytkowania zasobów między źródłami (CORS) bramy VMware Spring Cloud Gateway, należy zamapować właściwości na format <configuration-key>="<configuration-value>". Relacja mapowania jest pokazana w poniższej tabeli:

Nazwa właściwości w usłudze VMware Spring Cloud Gateway Konfiguracja w bramie dla platformy Spring
Dozwolone źródła spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[<id>]
Dozwolone wzorce pochodzenia spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOriginPatterns[<id>]
Dozwolone metody spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[<id>]
Dozwolone nagłówki spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedHeaders[<id>]
Maksymalny wiek spring.cloud.gateway.globalcors.cors-configurations.[/**].maxAge
Zezwalaj na poświadczenia spring.cloud.gateway.globalcors.cors-configurations.[/**].allowCredentials
Uwidocznione nagłówki spring.cloud.gateway.globalcors.cors-configurations.[/**].exposedHeaders[<id>]

Jeśli na przykład masz konfigurację podobną allowedOrigins:["https://example.com","https://example1.com"] do usługi VMware Spring Cloud Gateway, zaktualizuj bramę platformy Spring przy użyciu następującego parametru:

--configuration spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[0]=https://example.com spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedOrigins[1]=https://example1.com

W przypadku konfiguracji mechanizmu CORS trasy należy zastąpić ciąg "/**" w kluczu konfiguracji jako ścieżkę trasy. Jeśli na przykład masz trasę ze ścieżką /v1/**, należy skonfigurować spring.cloud.gateway.globalcors.cors-configurations.[/v1/**].allowedOrigins[<id>]element .

Trasy

Składnik Gateway for Spring obsługuje definiowanie tras za pośrednictwem idwłaściwości , , uripredicatesifilters, jak pokazano w poniższym przykładzie:

springCloudGatewayRoutes:
  - id: "route1"
    uri: "https://otherjavacomponent.myenvironment.test.net"
    predicates:
      - "Path=/v1/{path}"
      - "After=2024-01-01T00:00:00.000-00:00[America/Denver]"
    filters:
      - "SetPath=/{path}"
  - id: "route2"
    uri: "https://otherjavacomponent.myenvironment.test.net"
    predicates:
      - "Path=/v2/{path}"
      - "After=2024-01-01T00:00:00.000-00:00[America/Denver]"
    filters:
      - "SetPath=/{path}"

Poniższa lista zawiera opis relacji mapowania między trasami bramy VMware Spring Cloud Gateway i trasami bramy dla platformy Spring:

  • Trasa name jest mapowana na id.
  • Wartości appName i protocol są mapowane na identyfikator URI trasy, która powinna być dostępnym identyfikatorem URI wystąpienia usługi Azure Container Apps.
  • Predykaty i filtry usługi Spring Cloud Gateway są mapowane na bramę dla predykatów i filtrów spring.

Załóżmy na przykład, że dla bramy VMware Spring Cloud Gateway jest tworzony następujący plik konfiguracji trasy json o nazwie test-api.json :

{
  "protocol": "HTTP",
  "routes": [
    {
      "title": "Test API",
      "predicates": [
        "Path=/test/api/healthcheck",
        "Method=GET"
      ],
      "filters": [
        "AddResponseHeader=X-Response-Red, Blue"
      ]
    }
  ]
}

Załóżmy, że użyjesz następującego polecenia, aby zastosować regułę do aplikacji test-appAzure Spring Apps:

az spring gateway route-config create \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name test-api \
    --app-name test-app \
    --routes-file test-api.json

Następnie w poniższym przykładzie pokazano odpowiedni plik YAML trasy test-api.yml dla usługi Gateway for Spring w usłudze Azure Container Apps:

springCloudGatewayRoutes:
  - id: "test-api"
    uri: "<app-fqdn-in-Container-Apps>"
    predicates:
      - Path=/test/api/healthcheck
      - Method=GET
    filters:
      - AddResponseHeader=X-Response-Red, Blue

Aby zaktualizować aplikację kontenera, użyj następującego polecenia:

az containerapp env java-component gateway-for-spring update \
    --route-yaml test-api.yml

Aby uzyskać w pełni kwalifikowaną nazwę domeny (FQDN), musisz włączyć ruch przychodzący dla aplikacji kontenera platformy Azure. Następnie zastąp identyfikator <app-FQDN-in-Azure-Container-Apps> URI trasy dostępnym punktem końcowym aplikacji. Format identyfikatora URI to https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.

Istnieją pewne komercyjne predykaty i filtry komercyjne, które nie są obsługiwane w usłudze Gateway for Spring w usłudze Azure Container Apps.

Pamięć podręczna odpowiedzi

Jeśli pamięć podręczna odpowiedzi zostanie włączona globalnie, możesz zaktualizować bramę zarządzaną platformy Spring przy użyciu następującej konfiguracji:

spring.cloud.gateway.filter.local-response-cache.enabled=true
spring.cloud.gateway.filter.local-response-cache.time-to-live=<response-cache-ttl>
spring.cloud.gateway.filter.local-response-cache.size=<response-cache-size>

Jeśli włączysz pamięć podręczną odpowiedzi dla trasy, możesz użyć LocalResponseCache filtru w konfiguracji reguły routingu zarządzanej bramy dla platformy Spring jako następującego kodu YAML:

springCloudGatewayRoutes:
  - id: "test-api"
    uri: "<app-fqdn-in-Container-Apps>"
    predicates:
      - Path=/v1/**
      - Method=GET
    filters:
      - LocalResponseCache=3m, 1MB

Rozwiązywanie problemów

Dzienniki usługi Gateway for Spring w usłudze Azure Container Apps można wyświetlić, Log Analytics wykonując następujące kroki:

  1. W witrynie Azure Portal przejdź do środowiska usługi Azure Container Apps.

  2. W okienku nawigacji wybierz pozycję Dzienniki monitorowania>.

  3. Aby wyświetlić dzienniki, wykonaj zapytanie względem ContainerAppSystemLogs_CL tabeli przy użyciu edytora zapytań, jak pokazano w poniższym przykładzie:

    ContainerAppSystemLogs_CL
    | where ComponentType_s == "SpringCloudGateway"
    | project Time=TimeGenerated, ComponentName=ComponentName_s, Message=Log_s
    | take 100
    

Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących dzienników, zobacz Obserwowanie zarządzanych składników Java w usłudze Azure Container Apps.

Znane ograniczenie

Na razie usługa Gateway for Spring w usłudze Azure Container Apps nie obsługuje niektórych funkcji komercyjnych, w tym metadanych używanych do generowania dokumentacji interfejsu OpenAPI, logowania jednokrotnego i integracji monitorowania wydajności aplikacji (APM).

Istnieje znany problem polegający na tym, że włączenie bramy dla platformy Spring uniemożliwia otwarcie sekcji Usługi w witrynie Azure Portal. Oczekujemy, że wkrótce rozwiążemy ten problem.