Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Plany Podstawowy, Standardowy i Enterprise weszły w okres wycofania 17 marca 2025 r. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Ten artykuł dotyczy: ❎ Podstawowa/Standardowa ✅ Enterprise
W tym artykule pokazano, jak przeprowadzić migrację projektu Spring Cloud Gateway for VMWare Tanzu działającego w ramach planu usługi Azure Spring Apps Enterprise do własnego projektu oprogramowania typu open source (OSS) Spring Cloud Gateway działającego jako aplikacja usługi Azure Container Apps.
Wersja systemu operacyjnego Spring Cloud Gateway wymieniona na tej stronie jest udostępniana jako przykład do celów referencyjnych. Możesz wybrać inne dystrybucje usługi Spring Cloud Gateway na podstawie Twoich wymagań.
Uwaga
Funkcje oferowane przez Spring Cloud Gateway for VMWare Tanzu są bardziej rozbudowane niż funkcje w wersji OSS. Przed przejściem do środowiska produkcyjnego należy sprawdzić różnice i zapewnić zgodność.
Wymagania wstępne
- Instancja planu Azure Spring Apps Enterprise z włączoną funkcją Spring Cloud Gateway.
- Wystąpienie usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Szybki start: wdrażanie pierwszej aplikacji kontenera przy użyciu witryny Azure Portal.
- Interfejs wiersza polecenia platformy Azure
- Wystąpienie usługi Azure Container Registry z wystarczającymi uprawnieniami do kompilowania i publikowania obrazów platformy Docker. Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie prywatnego rejestru kontenerów przy użyciu interfejsu wiersza polecenia platformy Azure.
Przygotowywanie kodu własnej aplikacji Spring Cloud Gateway
Aby uzyskać kod aplikacji Spring Cloud Gateway, wykonaj następujące kroki:
- Przejdź do strony https://start.spring.io.
- Zaktualizuj metadane projektu, ustawiając pole Grupa na nazwę organizacji. Zmień pola Artefakt i Nazwa na bramę.
- Dodaj zależności Reactive Gateway i Spring Boot Actuator.
- Pozostaw wartości domyślne pozostałych właściwości.
- Wybierz pozycję Generuj , aby pobrać projekt.
- Po pobraniu projektu wyodrębnij go.
Konfigurowanie aplikacji Spring Cloud Gateway
Po pobraniu aplikacji Spring Cloud Gateway skonfigurujesz ją w następnych sekcjach.
Konfigurowanie pliku właściwości aplikacji
Aby skonfigurować plik właściwości aplikacji, wykonaj następujące kroki:
Przejdź do katalogu gateway/src/main/resources projektu.
Zmień nazwę pliku application.properties na application.yml.
Edytuj plik application.yml . Typowy jest następujący plik application.yml :
spring: application: name: gateway cloud: gateway: globalcors: corsConfigurations: '[/**]': allowedOriginPatterns: "*" allowedMethods: - GET - POST - PUT - DELETE allowedHeaders: - "*" allowCredentials: true maxAge: 3600 routes: - id: front uri: http://front-app predicates: - Path=/** - Method=GET order: 1000 filters: - StripPrefix=0 tags: - front
Konfiguracja mechanizmu CORS
Aby przeprowadzić migrację konfiguracji współdzielenia zasobów między źródłami (CORS) w projekcie Spring Cloud Gateway dla VMWare Tanzu, zobacz Konfiguracja CORS dla globalnej konfiguracji CORS oraz konfiguracji tras CORS.
Skala
Podczas migracji do aplikacji Spring Cloud Gateway w usłudze Azure Container Apps zachowanie skalowania powinno być zgodne z modelem usługi Azure Container Apps. Liczba wystąpień w Spring Cloud Gateway for VMWare Tanzu jest odwzorowywana na min-replica i max-replica w usłudze Azure Container Apps. Automatyczne skalowanie aplikacji bramy można skonfigurować, definiując reguły skalowania. Aby uzyskać więcej informacji, zobacz Ustawianie reguł skalowania w usłudze Azure Container Apps.
Kombinacje procesora CPU i pamięci dostępne w usłudze Azure Spring Apps różnią się od kombinacji dostępnych w usłudze Azure Container Apps. Podczas mapowania alokacji zasobów upewnij się, że wybrane konfiguracje procesora CPU i pamięci w usłudze Azure Container Apps odpowiadają potrzebom wydajności i obsługiwanym opcjom.
Domeny niestandardowe i certyfikaty
Usługa Azure Container Apps obsługuje domeny niestandardowe i certyfikaty. Aby uzyskać więcej informacji na temat migrowania domen niestandardowych skonfigurowanych w usłudze Spring Cloud Gateway for VMWare Tanzu, zobacz Certyfikaty w usłudze Azure Container Apps.
Trasy
Można migrować trasy ze Spring Cloud Gateway for Tanzu do Spring Cloud Gateway, jak pokazano w przykładzie application.yml. Poniższa lista opisuje relację mapowania między trasami Spring Cloud Gateway for VMWare Tanzu a trasami Spring Cloud Gateway:
- Właściwość
nametrasy jest mapowana naid. - Właściwości
appNameiprotocolsą mapowane na identyfikator URI trasy, który powinien być identyfikatorem URI dostępnym dla wystąpienia usługi Azure Container Apps. Upewnij się, że aplikacje usługi Azure Container Apps włączają ruch przychodzący. - Predykaty i filtry Spring Cloud Gateway for VMWare Tanzu są mapowane na predykaty i filtry Spring Cloud Gateway. Komercyjne predykaty i filtry nie są obsługiwane. Aby uzyskać więcej informacji, zobacz Filtry tras komercyjnych w usłudze Spring Cloud Gateway dla K8s.
Rozważmy na przykład następujący plik JSON konfiguracji trasy test-api.json, który definiuje test-api trasę w usłudze Spring Cloud Gateway dla VMWare Tanzu dla test aplikacji.
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
}
Następnie poniższy plik YAML przedstawia odpowiednią konfigurację trasy dla aplikacji Spring Cloud Gateway:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/test/api/healthcheck
- Method=GET
filters:
- AddRequestHeader=X-Request-red, blue
- StripPrefix=1
Usługa Spring Cloud Gateway dla programu VMWare Tanzu ustawia StripPrefix=1 domyślnie na każdej trasie. Aby przeprowadzić migrację do usługi Spring Cloud Gateway, należy jawnie ustawić StripPrefix=1 w konfiguracji filtru.
Aby umożliwić aplikacji Spring Cloud Gateway dostęp do innych aplikacji za pośrednictwem nazwy aplikacji, musisz włączyć ingres dla aplikacji w Azure Container App. Można również ustawić dostępną w pełni kwalifikowaną nazwę domeny (FQDN) aplikacji Azure Container Apps na identyfikator URI trasy, zgodnie z formatem https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.
Uwaga
Istnieją pewne komercyjne predykaty i filtry komercyjne, które nie są obsługiwane w usłudze Spring Cloud Gateway.
Pamięć podręczna odpowiedzi
Jeśli chcesz włączyć globalną pamięć podręczną odpowiedzi w Spring Cloud Gateway dla VMware Tanzu, użyj następującej konfiguracji w Spring Cloud Gateway. Aby uzyskać więcej informacji, zobacz Filtr lokalnej pamięci podręcznej odpowiedzi.
spring:
cloud:
gateway:
filter:
local-response-cache:
enabled: true
time-to-live: <response-cache-ttl>
size: <response-cache-size>
Jeśli włączysz pamięć podręczną odpowiedzi dla trasy, możesz użyć filtru LocalResponseCache w konfiguracji reguły routingu w zarządzanej bramie dla platformy Spring, korzystając z następującego przykładu:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/resource
filters:
- LocalResponseCache=30m,500MB
Integracja z APM
Możesz włączyć monitorowanie wydajności aplikacji (APM) dla aplikacji Spring Cloud Gateway. Aby uzyskać więcej informacji, zobacz Integrowanie monitorowania wydajności aplikacji z obrazami kontenerów.
Wdrażanie w usłudze Azure Container Apps
Po zakończeniu konfiguracji usługi Spring Cloud Gateway skompiluj obraz przy użyciu usługi Azure Container Registry i wdróż go w usłudze Azure Container Apps.
Kompilowanie i wypychanie obrazu platformy Docker
Aby zbudować i wypchnąć obraz Docker, wykonaj następujące kroki:
W katalogu projektu Spring Cloud Gateway utwórz plik Dockerfile z następującą zawartością:
Uwaga
Alternatywnie, użyj przykładowego pliku Dockerfile dla sklepu ACME Fitness.
FROM mcr.microsoft.com/openjdk/jdk:17-mariner as build WORKDIR /staging # Install gradle RUN tdnf install -y wget unzip RUN wget https://services.gradle.org/distributions/gradle-8.8-bin.zip && \ unzip -d /opt/gradle gradle-8.8-bin.zip && \ chmod +x /opt/gradle/gradle-8.8/bin/gradle ENV GRADLE_HOME=/opt/gradle/gradle-8.8 ENV PATH=$PATH:$GRADLE_HOME/bin COPY . . # Compile with gradle RUN gradle build -x test FROM mcr.microsoft.com/openjdk/jdk:17-mariner as runtime WORKDIR /app COPY --from=build /staging/build/libs/gateway-0.0.1-SNAPSHOT.jar . ENTRYPOINT ["java", "-jar", "gateway-0.0.1-SNAPSHOT.jar"]Użyj następujących poleceń, aby skompilować obraz bramy:
az acr login --name <azure-container-registry-name> az acr build \ --resource-group <resource-group-name> \ --image gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT \ --registry <azure-container-registry-name> \ --file Dockerfile .Upewnij się, że obraz bramy został utworzony i pobierz tag obrazu, który używa następującego formatu:
<azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT.
Wdrażanie obrazu w usłudze Azure Container Apps
Gdy obraz aplikacji bramy będzie gotowy, wdróż go jako aplikację usługi Azure Container Apps przy użyciu następującego polecenia.
<container-image-of-gateway> Zastąp symbol zastępczy tagiem obrazu pobranym w poprzednim kroku.
az containerapp up \
--resource-group <resource-group-name> \
--name gateway \
--environment <azure-container-app-environment-name> \
--image <container-image-of-gateway> \
--target-port 8080 \
--ingress external
Uzyskaj dostęp do FQDN aplikacji Spring Cloud Gateway, aby sprawdzić, czy działa.
Rozwiązywanie problemów
Jeśli wystąpią problemy podczas uruchamiania aplikacji Spring Cloud Gateway, możesz wyświetlać dzienniki aplikacji w czasie rzeczywistym oraz ich historię w usłudze Azure Container Apps. Aby uzyskać więcej informacji, zobacz Rejestrowanie aplikacji w usłudze Azure Container Apps.
Możesz również monitorować metryki aplikacji bramowej. Aby uzyskać więcej informacji, zobacz Monitorowanie metryk usługi Azure Container Apps.
Znane ograniczenie
Usługa OSS Spring Cloud Gateway nie obsługuje natywnie następujących funkcji komercyjnych:
- Metadane używane do generowania dokumentacji interfejsu OpenAPI.
- Funkcje logowania jednokrotnego.
Jeśli potrzebujesz tych funkcji, może być konieczne rozważenie innych rozwiązań komercyjnych, takich jak Spring Cloud Gateway for VMWare Tanzu.