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
- Istniejące wystąpienie planu usługi Azure Spring Apps Enterprise z włączoną usługą Spring Cloud Gateway.
- Istniejąca aplikacja kontenera platformy Azure. Aby uzyskać więcej informacji, zobacz temat Szybki start: Wdrażanie pierwszej aplikacji kontenera przy użyciu witryny Azure Portal.
- Interfejs wiersza polecenia platformy Azure.
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 id
właściwości , , uri
predicates
ifilters
, 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 naid
. - Wartości
appName
iprotocol
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-app
Azure 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:
W witrynie Azure Portal przejdź do środowiska usługi Azure Container Apps.
W okienku nawigacji wybierz pozycję Dzienniki monitorowania>.
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.