Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Os planos Basic, Standard e Enterprise entraram em um período de aposentadoria em 17 de março de 2025. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.
Este artigo se aplica a: ❎ Básico/Padrão ✅ Enterprise
Este artigo mostra como migrar um projeto do Spring Cloud Gateway para VMWare Tanzu em execução no plano Enterprise dos Aplicativos Spring do Azure para um projeto do Spring Cloud Gateway auto-hospedado de software de código aberto em execução como um aplicativo dos Aplicativos de Contêiner do Azure.
A versão de software de código aberto do Spring Cloud Gateway mencionada nesta página é fornecida como exemplo para referência. Você pode escolher outras distribuições do Spring Cloud Gateway conforme seus requisitos.
Observação
Os recursos oferecidos pelo Spring Cloud Gateway para VMWare Tanzu são mais extensos do que os recursos da versão de software de código aberto. Lembre-se de analisar as diferenças e garantir a compatibilidade antes de migrar para a produção.
Pré-requisitos
- Uma instância do plano Enterprise dos Aplicativos Spring do Azure com o Spring Cloud Gateway habilitado.
- Uma instância dos Aplicativos de Contêiner do Azure. Para obter mais informações, confira 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 compilar e enviar imagens do Docker por push. Para obter mais informações, veja Início Rápido: Criar um registro de contêiner privado usando a CLI do Azure.
Preparar o código do aplicativo do Spring Cloud Gateway auto-hospedado
Para obter o código do aplicativo do Spring Cloud Gateway, use as seguintes etapas:
- Navegue até https://start.spring.io.
- Atualize os metadados do projeto definindo o campo Grupo como o nome da sua organização. Altere os campos Artefato e Nome para gateway.
- Adicione as dependências Gateway Reativo e Atuador do Spring Boot.
- Mantenha as outras propriedades com os valores padrão.
- Selecione Gerar para baixar o projeto.
- Após o download do projeto, extraia-o.
Configurar o aplicativo do Spring Cloud Gateway
Agora que você baixou o aplicativo do Spring Cloud Gateway, configure-o 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 como 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 de CORS
Para migrar a configuração do CORS do seu projeto do Spring Cloud Gateway para VMWare Tanzu, veja Configuração do CORS para a configuração global do CORS e a configuração de rota do CORS.
Escala
Quando você migra para um aplicativo do Spring Cloud Gateway nos Aplicativos de Contêiner do Azure, o comportamento de escala deve estar alinhado com o modelo dos 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 a escala automática para o aplicativo de gateway definindo regras de escala. Para saber mais, confira Definir regras de escala nos Aplicativos de Contêiner do Azure.
As combinações de CPU e memória disponíveis nos Aplicativos Spring do Azure são diferentes das combinações disponíveis nos Aplicativos de Contêiner do Azure. Ao mapear alocações de recursos, verifique se as configurações de CPU e memória selecionadas nos Aplicativos de Contêiner do Azure atendem às suas necessidades de desempenho e às opções com suporte.
Certificados e domínios personalizados
Os Aplicativos de Contêiner do Azure dão suporte a certificados e domínios personalizados. Para obter mais informações sobre como migrar domínios personalizados configurados no Spring Cloud Gateway para VMWare Tanzu, veja Certificados nos Aplicativos de Contêiner do Azure.
Rotas
Você pode migrar as rotas no Spring Cloud Gateway para Tanzu para o Spring Cloud Gateway, como mostra o exemplo de application.yml. A seguinte lista descreve a relação de mapeamento entre as rotas do Spring Cloud Gateway para VMWare Tanzu e as rotas do Spring Cloud Gateway:
- A propriedade
nameda rota é mapeada paraid. - As propriedades
appNameeprotocolsão mapeadas para o URI da rota, que deve ser o URI acessível para a instância dos Aplicativos de Contêiner do Azure. Verifique se os aplicativos dos Aplicativos de Contêiner do Azure permitem a entrada. - Os predicados e os filtros do Spring Cloud Gateway para VMWare Tanzu são mapeados para os predicados e os filtros do Spring Cloud Gateway. Não há suporte para predicados e filtros comerciais. Para obter mais informações, veja Filtros de rota comercial no Spring Cloud Gateway para K8s.
Por exemplo, considere o seguinte arquivo JSON de configuração de rota, test-api.json, que define a rota test-api no Spring Cloud Gateway para VMWare Tanzu para o aplicativo test:
{
"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 do 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
O Spring Cloud Gateway para VMWare Tanzu é definido 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 permitir que o aplicativo do Spring Cloud Gateway acesse outros aplicativos por meio do nome do aplicativo, você precisa habilitar a entrada para seus aplicativos do Aplicativo de Contêiner do Azure. Você também pode definir o FQDN (nome de domínio totalmente qualificado) acessível do aplicativo dos Aplicativos de Contêiner do Azure como o URI da rota, seguindo o formato https://<app-name>.<container-app-env-name>.<region>.azurecontainerapps.io.
Observação
Há alguns predicados comerciais e filtros comerciais que não têm suporte no Spring Cloud Gateway.
Cache de resposta
Se você habilitar o cache de resposta globalmente no Spring Cloud Gateway para VMWare Tanzu, use a configuração a seguir no Spring Cloud Gateway. Para obter mais informações, veja 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 filtro LocalResponseCache na configuração de regra de roteamento do Gateway Gerenciado para Spring como o seguinte exemplo:
spring:
cloud:
gateway:
routes:
- id: test-api
uri: http://test
predicates:
- Path=/resource
filters:
- LocalResponseCache=30m,500MB
Integração ao APM
Você pode habilitar o APM para seu aplicativo do Spring Cloud Gateway. Para obter mais informações, confira Integrar o monitoramento de desempenho do aplicativo em imagens de contêiner.
Implantar nos Aplicativos de Contêiner do Azure
Depois que a configuração do Spring Cloud Gateway estiver pronta, compile a imagem usando o Registro de Contêiner do Azure e implante-a nos Aplicativos de Contêiner do Azure.
Compilar e enviar a imagem do Docker
Para compilar e enviar a imagem do Docker por push, use as seguintes etapas:
No diretório do projeto do Spring Cloud Gateway, crie um Dockerfile com o seguinte conteúdo:
Observação
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 compilar 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 .Garanta que a imagem do gateway seja criada e obtenha a marca de imagem, que usa o seguinte formato:
<azure-container-registry-name>.azurecr.io/gateway:acrbuild-spring-cloud-gateway-0.0.1-SNAPSHOT.
Implantar a imagem nos Aplicativos de Contêiner do Azure
Depois que a imagem do aplicativo de gateway estiver pronta, implante-a como um aplicativo dos Aplicativos de Contêiner do Azure usando o comando a seguir. Substitua o espaço reservado <container-image-of-gateway> pela marca de imagem recuperada 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 do Spring Cloud Gateway para verificar se ele está em execução.
Solução de problemas
Se você encontrar problemas ao executar o aplicativo do Spring Cloud Gateway, veja os logs históricos e em tempo real do aplicativo gateway nos Aplicativos de Contêiner do Azure. Para saber mais, veja Application Logging nos Aplicativos de Contêiner do Azure.
Você também pode monitorar as métricas de um aplicativo de gateway. Para obter mais informações, veja Monitorar métricas dos Aplicativos de Contêiner do Azure.
Limitações conhecidas
O Spring Cloud Gateway de software de código aberto não dá suporte nativo aos seguintes recursos comerciais:
- Metadados usados para gerar a documentação do OpenAPI.
- Funcionalidade de SSO (logon único).
Se você precisa desses recursos, talvez seja necessário considerar outras soluções comerciais, como o Spring Cloud Gateway para VMWare Tanzu.