Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Plány Basic, Standard a Enterprise vstoupily do období vyřazení 17. března 2025. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Tento článek se vztahuje na: ❎ Basic/Standard ✅ Enterprise
V tomto článku se dozvíte, jak migrovat projekt Spring Cloud Gateway pro VMWare Tanzu spuštěný v plánu Azure Spring Apps Enterprise do místního opensourcového softwaru (OSS) Spring Cloud Gateway běžícího jako aplikace Azure Container Apps.
Jako příklad je k dispozici verze brány Spring Cloud uvedené na této stránce. Na základě vašich požadavků můžete zvolit další distribuce brány Spring Cloud.
Poznámka:
Funkce nabízené službou Spring Cloud Gateway pro VMWare Tanzu jsou rozsáhlejší než funkce ve verzi operačního systému. Před přechodem do produkčního prostředí nezapomeňte prozkoumat rozdíly a zajistit kompatibilitu.
Požadavky
- Instance plánu Enterprise Azure Spring Apps s povoleným Spring Cloud Gateway.
- Instance služby Azure Container Apps. Další informace najdete v tématu Rychlý start: Nasazení první aplikace typu kontejner pomocí webu Azure Portal.
- Azure CLI
- Instance Služby Azure Container Registry s dostatečnými oprávněními k sestavení a nasdílení imagí Dockeru. Další informace najdete v tématu Rychlý start: Vytvoření privátního registru kontejneru pomocí Azure CLI.
Příprava kódu aplikace Spring Cloud Gateway v místním prostředí
Kód aplikace Spring Cloud Gateway získáte pomocí následujících kroků:
- Přejděte na https://start.spring.io.
- Aktualizujte metadata projektu nastavením pole Skupina na název vaší organizace. Změňte pole Artefakt a Název na gateway.
- Přidejte závislosti Reactive Gateway a Spring Boot Actuator.
- U ostatních vlastností ponechte výchozí hodnoty.
- Vyberte Možnost Generovat a stáhněte si projekt.
- Po stažení projektu ho extrahujte.
Konfigurace aplikace Spring Cloud Gateway
Teď, když jste stáhli aplikaci Spring Cloud Gateway, ji nakonfigurujete v dalších částech.
Konfigurace souboru vlastností aplikace
Ke konfiguraci souboru vlastností aplikace použijte následující kroky:
Přejděte do adresáře gateway/src/main/resources projektu.
Přejmenujte soubor application.properties na application.yml.
Upravte soubor application.yml . Typický je následující soubor 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
Konfigurace CORS
Pokud chcete migrovat konfiguraci sdílení prostředků mezi zdroji (CORS) brány Spring Cloud pro projekt VMWare Tanzu, přečtěte si téma Konfigurace CORS pro globální konfiguraci CORS a konfiguraci CORS tras.
Škála
Když migrujete do aplikace Spring Cloud Gateway v Azure Container Apps, chování škálování by mělo odpovídat modelu Azure Container Apps. Počet instancí ze Spring Cloud Gateway pro VMWare Tanzu odpovídá min-replica a max-replica v Azure Container Apps. Automatické škálování pro aplikaci brány můžete nakonfigurovat definováním pravidel škálování. Další informace najdete v tématu Nastavení pravidel škálování v Azure Container Apps.
Kombinace procesoru a paměti dostupné v Azure Spring Apps se liší od kombinací dostupných v Azure Container Apps. Při mapování přidělení prostředků se ujistěte, že vybrané konfigurace procesoru a paměti ve službě Azure Container Apps odpovídají vašim potřebám výkonu i podporovaným možnostem.
Vlastní domény a certifikáty
Azure Container Apps podporuje vlastní domény a certifikáty. Další informace o migraci vlastních domén nakonfigurovaných ve službě Spring Cloud Gateway pro VMWare Tanzu najdete v tématu Certifikáty v Azure Container Apps.
Trasy
Trasy můžete migrovat z brány Spring Cloud Gateway pro Tanzu do brány Spring Cloud Gateway, jak je ukázáno na příkladu application.yml. Následující seznam popisuje vztah mapování mezi trasami brány Spring Cloud pro VMWare Tanzu a trasami brány Spring Cloud:
- Vlastnost
nametrasy je mapována naid. - Vlastnosti
appNameaprotocolse mapují na identifikátor URI trasy, což by měl být přístupný identifikátor URI pro instanci Azure Container Apps. Ujistěte se, že aplikace Azure Container Apps umožňují přístup zvenčí. - Predikáty a filtry brány Spring Cloud pro VMWare Tanzu se mapují na predikáty a filtry brány Spring Cloud. Komerční predikáty a filtry se nepodporují. Další informace naleznete v Filtrech komerčních tras v bráně Spring Cloud pro K8s.
Představte si například následující konfigurační soubor JSON trasy test-api.json, který definuje trasu test-api ve službě Spring Cloud Gateway pro VMWare Tanzu pro test aplikaci:
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
}
Následující soubor YAML pak zobrazí odpovídající konfiguraci trasy pro aplikaci 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
Brána Spring Cloud pro VMWare Tanzu se ve výchozím nastavení nastavuje StripPrefix=1 na každé trase. Pokud chcete migrovat na bránu Spring Cloud, musíte v konfiguraci filtru explicitně nastavit StripPrefix=1 .
Pokud chcete, aby vaše aplikace Spring Cloud Gateway mohla přistupovat k jiným aplikacím prostřednictvím názvu aplikace, musíte povolit vstupní datový tok pro vaše aplikace Azure Container Apps. Můžete také nastavit přístupný plně kvalifikovaný název domény (FQDN) aplikace Azure Container Apps tak, aby byl identifikátor URI trasy, a to podle formátu https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.
Poznámka:
Ve službě Spring Cloud Gateway se nepodporují některé komerční predikáty a komerční filtry .
Mezipaměť odpovědí
Pokud v bráně Spring Cloud Gateway pro VMWare Tanzu povolíte globální mezipaměť odpovědí, použijte v bráně Spring Cloud následující konfiguraci. Další informace naleznete v tématu Místní filtr mezipaměti odpovědi.
spring:
cloud:
gateway:
filter:
local-response-cache:
enabled: true
time-to-live: <response-cache-ttl>
size: <response-cache-size>
Pokud pro trasu povolíte mezipaměť odpovědí, můžete použít LocalResponseCache filtr v konfiguraci pravidla směrování spravované brány pro Spring pomocí následujícího příkladu:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/resource
filters:
- LocalResponseCache=30m,500MB
Integrace s APM
Pro aplikaci Spring Cloud Gateway můžete povolit monitorování výkonu aplikací (APM). Další informace najdete v tématu Integrace monitorování výkonu aplikací do imagí kontejnerů.
Nasazení do aplikací Azure Container Apps
Jakmile je konfigurace brány Spring Cloud připravená, sestavte image pomocí služby Azure Container Registry a nasaďte ji do Azure Container Apps.
Sestavení a nasdílení image Dockeru
K sestavení a nasdílení image Dockeru použijte následující postup:
V adresáři projektu Spring Cloud Gateway vytvořte soubor Dockerfile s následujícím obsahem:
Poznámka:
Alternativně použijte ukázkový soubor Dockerfile ACME Fitness Store.
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"]K sestavení image brány použijte následující příkazy:
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 .Ujistěte se, že je vytvořen obraz brány, a získejte štítek obrazu, který používá následující formát:
<azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT.
Nasazení obrazu v Azure Container Apps
Jakmile je image aplikace brány připravená, nasaďte ji jako aplikaci Azure Container Apps pomocí následujícího příkazu. Nahraďte zástupný symbol <container-image-of-gateway> značkou obrázku, která byla načtena v předchozím 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
Získejte přístup k FQDN Spring Cloud Gateway aplikace a ověřte, zda je spuštěna.
Řešení problému
Pokud při spuštění aplikace Spring Cloud Gateway narazíte na problémy, můžete zobrazit záznamy aplikace v reálném čase a historické záznamy aplikace ve službě Azure Container Apps. Další informace najdete v tématu Protokolování aplikace v Azure Container Apps.
Můžete také monitorovat metriky aplikace brány. Další informace najdete v tématu Monitorování metrik Azure Container Apps.
Známé omezení
OSS Spring Cloud Gateway nativně nepodporuje následující komerční funkce.
- Metadata používaná k vygenerování dokumentace OpenAPI
- Funkce jednotného přihlašování (SSO)
Pokud tyto funkce potřebujete, možná budete muset zvážit další komerční řešení, jako je Spring Cloud Gateway pro VMWare Tanzu.