Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Nota
Os planos Basic, Standard e Enterprise entraram em um período de aposentadoria em 17 de março de 2025. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
Este artigo aplica-se a: ❎ Basic/Standard ✅ Enterprise
Este artigo mostra como migrar um projeto do Spring Cloud Gateway para VMWare Tanzu em execução no plano do Azure Spring Apps Enterprise para um projeto Spring Cloud Gateway auto-hospedado e de software de código aberto (OSS) em execução como um aplicativo do Azure Container Apps.
A versão OSS do Spring Cloud Gateway mencionada nesta página é fornecida como um exemplo para referência. Você pode escolher outras distribuições do Spring Cloud Gateway com base em suas necessidades.
Nota
Os recursos oferecidos pelo Spring Cloud Gateway para VMWare Tanzu são mais extensos do que os recursos na versão OSS. Certifique-se de examinar as diferenças e garantir a compatibilidade antes de passar para a produção.
Pré-requisitos
- Uma instância do plano do Azure Spring Apps Enterprise com o Spring Cloud Gateway habilitado.
- Uma instância de Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Guia de início rápido: implantar seu primeiro aplicativo de contêiner usando o portal do Azure.
- Azure CLI
- Uma instância do Registro de Contêiner do Azure com permissões suficientes para criar e enviar imagens do Docker por push. Para obter mais informações, consulte Guia de início rápido: criar um registro de contêiner privado usando a CLI do Azure.
Preparar o código do aplicativo Spring Cloud Gateway auto-hospedado
Para obter o código do aplicativo Spring Cloud Gateway, use as seguintes etapas:
- Navegue até https://start.spring.io.
- Atualize os metadados do projeto definindo o campo Grupo com o nome da sua organização. Altere os campos Artefato e Nome para gateway.
- Adicione as dependências Reative Gateway e Spring Boot Actuator .
- Deixe as outras propriedades em seus valores padrão.
- Selecione Gerar para baixar o projeto.
- Após o download do projeto, extraia-o.
Configurar o aplicativo Spring Cloud Gateway
Agora que você baixou o aplicativo Spring Cloud Gateway, você o configura nas próximas seções.
Configurar o arquivo de propriedades do aplicativo
Para configurar o arquivo de propriedades do aplicativo, use as seguintes etapas:
Navegue até o diretório gateway/src/main/resources do projeto.
Renomeie o arquivo application.properties para application.yml.
Edite o arquivo application.yml . O seguinte arquivo application.yml é típico:
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
Configuração do CORS
Para migrar a configuração de compartilhamento de recursos entre origens (CORS) do seu projeto Spring Cloud Gateway para VMWare Tanzu, consulte Configuração de CORS para configuração global de CORS e configuração de CORS de rota.
Escala
Quando você migra para um aplicativo Spring Cloud Gateway em Aplicativos de Contêiner do Azure, o comportamento de dimensionamento deve se alinhar com o modelo de Aplicativos de Contêiner do Azure. A contagem de instâncias do Spring Cloud Gateway para VMWare Tanzu é mapeada para min-replica e max-replica nos Aplicativos de Contêiner do Azure. Você pode configurar o dimensionamento automático para o aplicativo de gateway definindo regras de dimensionamento. Para obter mais informações, consulte Definir regras de dimensionamento em Aplicativos de Contêiner do Azure.
As combinações de CPU e memória disponíveis nos Aplicativos Azure Spring diferem das combinações disponíveis nos Aplicativos de Contêiner do Azure. Ao mapear alocações de recursos, certifique-se de que as configurações de CPU e memória selecionadas nos Aplicativos de Contêiner do Azure atendam às suas necessidades de desempenho e às opções com suporte.
Domínios personalizados e certificados
Os Aplicativos de Contêiner do Azure dão suporte a domínios e certificados personalizados. Para obter mais informações sobre como migrar domínios personalizados configurados no Spring Cloud Gateway para VMWare Tanzu, consulte Certificados em aplicativos de contêiner do Azure.
Rotas
Pode migrar as rotas do Spring Cloud Gateway for Tanzu para o Spring Cloud Gateway, como mostra o exemplo application.yml. A lista a seguir descreve a relação de mapeamento entre as rotas do Spring Cloud Gateway para VMWare Tanzu e as rotas do Spring Cloud Gateway:
- A
namepropriedade da rota é mapeada paraid. - As propriedades
appNameeprotocolsão mapeadas para o URI da rota, que deve ser o URI acessível para a instância das Aplicações de Contentor do Azure. Verifique se os aplicativos de Aplicativos de Contêiner do Azure habilitam a entrada. - Predicados e filtros do Spring Cloud Gateway para VMWare Tanzu são mapeados para predicados e filtros do Spring Cloud Gateway. Não há suporte para predicados e filtros comerciais. Para obter mais informações, consulte Filtros de rota comercial no Spring Cloud Gateway for K8s.
Como exemplo, considere o seguinte arquivo JSON de configuração de rota, test-api.json, que define a test-api rota no Spring Cloud Gateway para VMWare Tanzu para o test aplicativo:
{
"protocol": "HTTP",
"routes": [
{
"title": "Test API",
"predicates": [
"Path=/test/api/healthcheck",
"Method=GET"
],
"filters": [
"AddRequestHeader=X-Request-red, blue"
]
}
]
}
Em seguida, o seguinte arquivo YAML mostra a configuração de rota correspondente para o aplicativo 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
Spring Cloud Gateway para VMWare Tanzu define StripPrefix=1 por padrão em todas as rotas. Para migrar para o Spring Cloud Gateway, você precisa definir StripPrefix=1 explicitamente na configuração do filtro.
Para habilitar o seu aplicativo Spring Cloud Gateway para aceder a outras aplicações através do nome da aplicação, precisa de habilitar o ingresso para as suas aplicações Azure Container Apps. Você também pode definir o FQDN (nome de domínio totalmente qualificado) acessível do aplicativo Aplicativos de Contêiner do Azure como o URI da rota, seguindo o formato https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.
Nota
Existem alguns predicados comerciais e filtros comerciais que não são suportados no Spring Cloud Gateway.
Cache de resposta
Se você habilitar o cache de resposta globalmente no Spring Cloud Gateway para VMWare Tanzu, use a seguinte configuração no Spring Cloud Gateway. Para obter mais informações, consulte O filtro de cache de resposta local.
spring:
cloud:
gateway:
filter:
local-response-cache:
enabled: true
time-to-live: <response-cache-ttl>
size: <response-cache-size>
Se você habilitar o cache de resposta para a rota, poderá usar o LocalResponseCache filtro na configuração da regra de roteamento do Gateway gerenciado para Spring usando o exemplo a seguir:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/resource
filters:
- LocalResponseCache=30m,500MB
Integrar com APM
Você pode habilitar o monitoramento de desempenho de aplicativos (APM) para seu aplicativo Spring Cloud Gateway. Para obter mais informações, consulte Integrar o monitoramento de desempenho do aplicativo em imagens de contêiner.
Implantar em aplicativos de contêiner do Azure
Depois que a configuração do Spring Cloud Gateway estiver pronta, crie a imagem usando o Registro de Contêiner do Azure e implante-a nos Aplicativos de Contêiner do Azure.
Crie e envie por push a imagem do Docker
Para criar e enviar por push a imagem do Docker, use as seguintes etapas:
No diretório do projeto do Spring Cloud Gateway, crie um Dockerfile com o seguinte conteúdo:
Nota
Como alternativa, use o Dockerfile de exemplo da 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"]Use os seguintes comandos para criar a imagem do gateway:
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 .Verifique se a imagem do gateway foi criada e obtenha a tag da imagem, que usa o seguinte formato:
<azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT.
Implantar a imagem em Aplicativos de Contêiner do Azure
Depois que a imagem do aplicativo de gateway estiver pronta, implante-a como um aplicativo de Aplicativos de Contêiner do Azure usando o comando a seguir. Substitua o espaço reservado <container-image-of-gateway> pelo tag de imagem recuperado na etapa anterior.
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
Acesse o FQDN do aplicativo Spring Cloud Gateway para verificar se ele está em execução.
Resolução de Problemas
Se você encontrar problemas ao executar o aplicativo Spring Cloud Gateway, poderá exibir logs históricos e em tempo real do gateway aplicativo nos Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Registo de Aplicações em Aplicações de Contentores do Azure.
Você também pode monitorar as métricas de um aplicativo de gateway. Para obter mais informações, consulte Monitorar métricas de aplicativos de contêiner do Azure.
Limitação conhecida
O OSS Spring Cloud Gateway não suporta nativamente os seguintes recursos comerciais:
- Metadados usados para gerar documentação OpenAPI.
- Funcionalidade de logon único (SSO).
Se você precisar desses recursos, talvez seja necessário considerar outras soluções comerciais, como o Spring Cloud Gateway para VMWare Tanzu.