Este artigo explica como implantar aplicativos de microsserviço nos Aplicativos Spring do Azure por meio do aplicativo de exemplo bem conhecido PetClinic.
O exemplo Pet Clinic demonstra o padrão de arquitetura de microsserviço e realça o detalhamento dos serviços. O diagrama a seguir mostra a arquitetura do aplicativo PetClinic no plano Enterprise dos Aplicativos Spring do Azure.
O diagrama mostra os seguintes fluxos arquitetônicos e relações do exemplo Pet Clinic:
- Usa os Aplicativos Spring do Azure Apps para gerenciar os aplicativos de front-end e de back-end. Os aplicativos de back-end são criados com o Spring Boot e cada aplicativo usa HSQLDB como o repositório persistente. O aplicativo front-end reformulado baseia-se no aplicativo Pet Clinic API Gateway com Node.js servindo como um aplicativo Web de front-end independente.
- Usa os componentes gerenciados nos Aplicativos Spring do Azure, incluindo o Registro de Serviço, o Serviço de Configuração de Aplicativos, o Spring Cloud Gateway e o Application Live View. O Serviço de Configuração de Aplicativos lê a configuração do repositório Git.
- Expõe o URL do Spring Cloud Gateway para rotear a solicitação para aplicativos de serviço de back-end e expõe o URL do Application Live View para monitorar os aplicativos de back-end.
- Analisa logs usando o workspace do Log Analytics.
- Monitoramento de Desempenho com o Application Insights.
O exemplo Pet Clinic demonstra o padrão de arquitetura de microsserviço e realça o detalhamento dos serviços. O diagrama a seguir mostra a arquitetura do aplicativo PetClinic no plano Standard dos Aplicativos Spring do Azure.
O diagrama mostra os seguintes fluxos arquitetônicos e relações do exemplo Pet Clinic:
- Usa os Aplicativos Spring do Azure para gerenciar os aplicativos Spring Boot. Cada aplicativo usa HSQLDB como o armazenamento persistente.
- Usa os componentes gerenciados do Spring Cloud Config Server e Eureka Service Registry nos Aplicativos Spring do Azure. O Config Server lê a configuração do repositório Git.
- Expõe a URL do Gateway de API para balancear a carga de solicitações para aplicativos de serviço e expõe a URL do Servidor Administração para gerenciar os aplicativos.
- Analisa logs usando o workspace do Log Analytics.
- Monitoramento de Desempenho com o Application Insights.
Observação
Este artigo usa uma versão simplificada do PetClinic, usando um banco de dados em memória que não está pronto para produção para implantar rapidamente nos Aplicativos Spring do Azure.
O aplicativo admin-server implantado expõe o acesso público, que é um ponto de risco. O ambiente de produção precisa proteger o aplicativo Administrador do Spring Boot.
Este artigo fornece as seguintes opções para implantação em Aplicativos Spring do Azure:
- A opção do portal do Microsoft Azure é a maneira mais fácil e rápida de criar recursos e implantar aplicativos com apenas um clique. Essa opção é adequada para os desenvolvedores do Spring que desejam implantar rapidamente aplicativos nos serviços de nuvem do Azure.
- A opção do portal do Microsoft Azure + plug-in do Maven fornece uma maneira mais convencional de criar recursos e implantar aplicativos passo a passo. Esta opção é adequada para os desenvolvedores do Spring que estão usando os serviços de nuvem do Azure pela primeira vez.
- A opção CLI do Azure é uma ferramenta de linha de comando poderosa para gerenciar recursos do Azure. Essa opção é adequada para os desenvolvedores do Spring que estão familiarizados com os serviços de nuvem do Azure.
- A opção do portal do Microsoft Azure + plug-in do Maven fornece uma maneira mais convencional de criar recursos e implantar aplicativos passo a passo. Esta opção é adequada para os desenvolvedores do Spring que estão usando os serviços de nuvem do Azure pela primeira vez.
- A opção do Azure Developer CLI é a maneira mais eficiente de criar recursos e implantar aplicativos automaticamente por meio de comandos simples. O Azure Developer CLI usa um modelo para provisionar os recursos do Azure necessários e implantar o código do aplicativo. Essa opção é adequada para os desenvolvedores do Spring que estão familiarizados com os serviços de nuvem do Azure.
1. Pré-requisitos
2. Preparar o projeto Spring
Use as seguintes etapas para preparar o exemplo localmente:
Clone o projeto de exemplo usando o seguinte comando:
git clone https://github.com/Azure-Samples/spring-petclinic-microservices.git
Navegue até o diretório raiz do projeto e use o seguinte comando para executar o projeto de exemplo localmente:
bash ./scripts/run_all_without_infra.sh
Depois que o script for concluído com sucesso, vá para http://localhost:8080 no navegador para acessar o aplicativo PetClinic.
Use as etapas a seguir para inicializar o aplicativo Pet Clinic usando os modelos do Azure Developer CLI:
Na janela do Bash, crie uma pasta nova e vazia e navegue até ela.
Use o seguinte comando para inicializar o projeto:
azd init --template Azure-Samples/spring-petclinic-microservices
A lista a seguir descreve a interação de comando:
-
Insira um novo nome de ambiente: forneça um nome de ambiente, que é usado como um sufixo para o grupo de recursos criado para manter todos os recursos do Azure. Esse nome deve ser exclusivo em sua assinatura do Azure.
O console gera mensagens semelhantes ao exemplo a seguir:
Initializing a new project (azd init)
Downloading template code to: <your-local-path>
(✓) Done: Initialized git repository
Enter a new environment name: <your-env-name>
SUCCESS: New project initialized!
You can view the template code in your directory: <your-local-path>
Learn more about running 3rd party code on our DevHub: https://aka.ms/azd-third-party-code-notice
3. Preparar o ambiente de nuvem
Esta seção descreve como criar uma instância de serviço dos Aplicativos Spring do Azure e preparar o ambiente de nuvem do Azure.
3.1. Entre no Portal do Azure
No portal do Azure, insira suas credenciais e entre no portal. A exibição padrão é o painel de serviço.
3.2. Criar uma instância do Azure Spring Apps
Use as etapas a seguir para criar a instância de serviço:
Selecione Criar um recurso no canto do portal do Azure.
Na guia Serviços do Azure, selecione Computação>Aplicativos Spring do Azure.
Na página Criar Aplicativos Spring do Azure , preencha o formulário na guia Noções Básicas .
Use a tabela a seguir como um guia para concluir o formulário. O Plano recomendado é o Standard.
| Configuração |
Valor sugerido |
Descrição |
|
Assinatura |
O nome da sua assinatura. |
A assinatura do Azure que você deseja usar para o servidor. Caso você tenha várias assinaturas, escolha a assinatura na qual você deseja receber a cobrança do recurso. |
|
Grupo de recursos |
myresourcegroup |
Um novo nome do grupo de recursos ou um existente de sua assinatura. |
|
Nome |
myasa |
Um nome exclusivo que identifica sua instância dos Aplicativos Spring do Azure. O nome deve ter entre 4 e 32 caracteres e pode conter apenas letras minúsculas, números e hifens. O primeiro caractere do nome do serviço deve ser uma letra e o último caractere deve ser uma letra ou um número. |
|
Plano |
Standard |
O plano de preços determina os recursos e o custo associados à sua instância. |
|
Região |
A região mais próxima de seus usuários. |
A localização mais próxima dos usuários. |
|
Com redundância de zona |
Não selecionado |
Cria seu serviço dos Aplicativos Spring do Azure em uma zona de disponibilidade do Azure. Atualmente, não há suporte em todas as regiões. |
Navegue até a guia Configurações de diagnóstico na página Criar Aplicativos Spring do Azure e selecione Criar novo para criar uma nova instância de workspaces do Log Analytics. Na página Criar workspace do Log Analytics , atualize o nome do workspace do Log Analytics conforme necessário e selecione OK para confirmar a criação.
Navegue até a guia Application Insights na página Criar Aplicativos Spring do Azure e selecione Criar novo para criar uma nova instância do Application Insights. Na página Criar novo recurso do Application Insights, atualize o nome do Application Insights conforme necessário, selecione Baseado em workspace para Modo de recurso e, em seguida, selecione OK para confirmar a criação.
Selecione Revisar e criar para revisar suas seleções. Em seguida, selecione Criar para provisionar a instância dos Aplicativos Spring do Azure.
Na barra de ferramentas, selecione o íconeNotificações (um sino) para monitorar o processo de implantação. Depois que a implantação terminar, você pode selecionar Fixar no painel para criar um atalho para a página Visão geral do serviço no seu painel do portal do Azure.
Selecione Ir para o recurso para ir para a página Visão geral dos Aplicativos Spring do Azure.
Escolha Config Server no painel de navegação.
Na página Config Server, em URI, insira https://github.com/Azure-Samples/spring-petclinic-microservices-config.git e depois selecione Validar.
Após a validação, selecione Aplicar para concluir a configuração do Config Server.
Use as seguintes etapas para criar os recursos necessários:
Use o seguinte comando para entrar no Azure com OAuth2. Ignore esta etapa se já tiver entrado.
azd auth login
O console gera mensagens semelhantes ao exemplo a seguir:
Logged in to Azure.
Use o seguinte comando para empacotar uma cópia implantável do aplicativo, provisionar a infraestrutura do modelo no Azure e depois implantar o código do aplicativo nesses recursos recém-provisionados:
azd provision
A lista a seguir descreve as interações de comando:
-
Selecione uma assinatura do Azure para usar: use as setas para mover, digite para filtrar e pressione Enter.
-
Selecione um local do Azure para usar: use as setas para mover, digite para filtrar e pressione Enter.
O console gera mensagens semelhantes ao exemplo a seguir:
SUCCESS: Your application was provisioned in Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
Observação
Esse comando pode demorar algum tempo para ser concluído. Você verá um indicador de progresso ao provisionar recursos do Azure.
4. Implantar os aplicativos nos Aplicativos Spring do Azure
Agora você pode implantar o aplicativo em Aplicativos Spring do Azure.
Use as etapas a seguir para implantar os aplicativos de microsserviço por meio do plug-in do Maven para os Aplicativos Spring do Azure:
Navegue até o diretório do projeto de exemplo e, em seguida, use o comando a seguir para configurar os aplicativos dos Aplicativos Spring do Azure:
./mvnw -P spring-apps com.microsoft.azure:azure-spring-apps-maven-plugin:1.17.0:config
A lista a seguir descreve as interações de comando:
-
Selecione módulos filho para configurar (números de entrada separados por vírgula, por exemplo: [1-2,4,6], ENTER para selecionar TUDO): Pressione Enter para selecionar tudo.
-
Login do OAuth2: autorize o login no Azure com base no protocolo OAuth2.
-
Selecionar assinatura: selecione o número da lista de assinaturas da instância dos Aplicativos Spring do Azure que você criou, que usa como padrão a primeira assinatura na lista. Se você usar o número padrão, pressione Enter diretamente.
-
Selecionar os Aplicativos Spring do Azure para implantação: selecione o número da lista da instância dos Aplicativos Spring do Azure que você criou. Se você usar o número padrão, pressione Enter diretamente.
-
Selecionar aplicativos para expor o acesso público:(números de entrada separados por vírgula, por exemplo: [1-2,4,6], ENTER para selecionar NENHUM): insira1,5 para
admin-server e api-gateway.
-
Confirme para salvar todas as configurações acima (S/n): Pressione s. Se você pressionar n, a configuração não será salva nos arquivos POM.
Use o seguinte comando para criar e implantar o aplicativo de front-end:
./mvnw azure-spring-apps:deploy
Para o prompt de Logon do OAuth2: autorize o logon no Azure com base no protocolo OAuth2.
Observação
A implantação nos Aplicativos Spring do Azure pode levar até 25 minutos.
Depois que o comando é executado, um log exibe uma saída semelhante ao exemplo a seguir, que indica que todas as implantações foram bem-sucedidas:
[INFO] Deployment(default) is successfully updated.
[INFO] Deployment Status: Running
[INFO] InstanceName:admin-server-default-xx-xx-xxx Status:Running Reason:null DiscoverStatus:UP
[INFO] Getting public url of app(admin-server)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-admin-server.azuremicroservices.io
...
[INFO] Getting public url of app(api-gateway)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io
Use as etapas a seguir para empacotar o aplicativo, provisionar os recursos do Azure exigidos pelo aplicativo Web e, em seguida, implantar em Aplicativos Spring do Azure:
Use o seguinte comando para empacotar uma cópia implantável do aplicativo:
azd package
O console gera mensagens semelhantes ao exemplo a seguir:
SUCCESS: Your application was packaged for Azure in xx minutes xx seconds.
Use o seguinte comando para implantar o código do aplicativo nesses recursos recém-provisionados:
azd deploy
O console gera mensagens semelhantes ao exemplo a seguir:
Deploying services (azd deploy)
(✓) Done: Deploying service admin-server
- Endpoint: https://<your-Azure-Spring-Apps-instance-name>-admin-server.azuremicroservices.io
(✓) Done: Deploying service api-gateway
- Endpoint: https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io
(✓) Done: Deploying service customers-service
- No endpoints were found
(✓) Done: Deploying service vets-service
- No endpoints were found
(✓) Done: Deploying service visits-service
- No endpoints were found
SUCCESS: Your application was deployed to Azure in xx minutes xx seconds.
You can view the resources created under the resource group rg-<your-environment-name> in Azure Portal:
https://portal.azure.com/#@/resource/subscriptions/<your-subscription-id>/resourceGroups/rg-<your-environment-name>/overview
Observação
Você também pode usar azd up para combinar os três comandos anteriores: azd package (empacota uma cópia implantável do aplicativo), azd provision (provisiona recursos do Azure) e azd deploy (implanta o código do aplicativo). Para obter mais informações, confira Azure-Samples/spring-petclinic-microservices.
2. Preparar o projeto Spring
O botão Implantar no Azure na próxima seção inicia uma experiência do portal do Azure que implanta o código-fonte do repositório Spring PetClinic. Nenhuma etapa de preparação local é necessária.
Use as etapas a seguir em seu computador local quando quiser verificar o aplicativo antes de implantá-lo na nuvem:
Use o seguinte comando para clonar o aplicativo Pet Clinic do GitHub:
git clone https://github.com/Azure-Samples/spring-petclinic-microservices.git
Navegue até o diretório raiz do projeto e use o seguinte comando para compilar o projeto:
./mvnw clean package -DskipTests
Use as etapas a seguir se quiser executar o aplicativo localmente. Caso contrário, você poderá ignorar essas etapas.
Abra uma nova janela do Bash e, em seguida, use o seguinte comando para iniciar o Config Server:
./mvnw spring-boot:run -pl spring-petclinic-config-server
Abra uma nova janela do Bash e use o seguinte comando para iniciar o Discovery Server:
./mvnw spring-boot:run -pl spring-petclinic-discovery-server
Para os serviços Clientes, Veterinários, Visitas e Spring Cloud Gateway, abra uma nova janela do Bash e use os seguintes comandos para iniciar os serviços:
./mvnw spring-boot:run -pl spring-petclinic-customers-service
./mvnw spring-boot:run -pl spring-petclinic-vets-service
./mvnw spring-boot:run -pl spring-petclinic-visits-service
./mvnw spring-boot:run -Dspring-boot.run.profiles=default,development \
-pl spring-petclinic-api-gateway
Abra uma nova janela bash e navegue até o diretório spring-petclinic-frontend do projeto. Use os seguintes comandos para instalar dependências e executar o aplicativo de front-end:
npm install
npm run start
Depois que o script for concluído com sucesso, vá para http://localhost:8080 no navegador para acessar o aplicativo PetClinic.
Use as etapas a seguir em seu computador local quando quiser verificar o aplicativo antes de implantá-lo na nuvem:
Use o seguinte comando para clonar o aplicativo Pet Clinic do GitHub:
git clone https://github.com/Azure-Samples/spring-petclinic-microservices.git
Navegue até o diretório raiz do projeto e use o seguinte comando para compilar o projeto:
./mvnw clean package -DskipTests
Use as etapas a seguir se quiser executar o aplicativo localmente. Caso contrário, você poderá ignorar essas etapas.
Abra uma nova janela do Bash e, em seguida, use o seguinte comando para iniciar o Config Server:
./mvnw spring-boot:run -pl spring-petclinic-config-server
Abra uma nova janela do Bash e use o seguinte comando para iniciar o Discovery Server:
./mvnw spring-boot:run -pl spring-petclinic-discovery-server
Para os serviços Clientes, Veterinários, Visitas e Spring Cloud Gateway, abra uma nova janela do Bash e use os seguintes comandos para iniciar os serviços:
./mvnw spring-boot:run -pl spring-petclinic-customers-service
./mvnw spring-boot:run -pl spring-petclinic-vets-service
./mvnw spring-boot:run -pl spring-petclinic-visits-service
./mvnw spring-boot:run -Dspring-boot.run.profiles=default,development \
-pl spring-petclinic-api-gateway
Abra uma nova janela bash e navegue até o diretório spring-petclinic-frontend do projeto. Use os seguintes comandos para instalar dependências e executar o aplicativo de front-end:
npm install
npm run start
Depois que o script for concluído com sucesso, vá para http://localhost:8080 no navegador para acessar o aplicativo PetClinic.
3. Preparar o ambiente de nuvem
O principal recurso necessário para executar esse exemplo é uma instância dos Aplicativos Spring do Azure. Esta seção descreve como criar esse recurso.
Esta seção usa um botão Implantar no Azure para iniciar uma experiência de implantação no portal do Microsoft Azure. Essa experiência usa um modelo do ARM para criar recursos do Azure.
3.1. Entre no Portal do Azure
No portal do Azure, insira suas credenciais e entre no portal. A exibição padrão é o painel de serviço.
3.2. Criar recursos do Azure
Use as seguintes etapas para criar todos os recursos do Azure dos quais o aplicativo depende:
Selecione o botão Implantar no Azure para iniciar a experiência de implantação no portal do Azure:
Preencha o formulário na guia Noções básicas. Use a tabela a seguir como uma guia para concluir o formulário:
| Configuração |
Valor sugerido |
Descrição |
|
Assinatura |
O nome da sua assinatura. |
A assinatura do Azure que você deseja usar para o servidor. Caso você tenha várias assinaturas, escolha a assinatura na qual você deseja receber a cobrança do recurso. |
|
Grupo de recursos |
myresourcegroup |
Um novo nome do grupo de recursos ou um existente de sua assinatura. |
|
Região |
A região mais próxima de seus usuários. |
A região é usada para criar o grupo de recursos. |
Selecione Revisar e criar para revisar suas seleções. Em seguida, selecione Criar para implantar o aplicativo nos Aplicativos Spring do Azure.
Na barra de ferramentas, selecione o ícone (sino) Notificações para monitorar o processo de implantação. Após a conclusão da implantação, selecione Fixar no painel, que cria um bloco para esse serviço no painel do portal do Microsoft Azure como um atalho para a página de Visão Geral do serviço. Selecione Ir para o recurso para abrir a página Visão geral do serviço.
3.1. Entre no Portal do Azure
Acesse o portal do Microsoft Azure e insira suas credenciais para entrar no portal. A exibição padrão é o painel de serviço.
3.2. Criar uma instância do Azure Spring Apps
Use as etapas a seguir para criar a instância de serviço:
Selecione Criar um recurso no canto do portal do Azure.
Selecione Computação>Aplicativos Spring do Azure.
Preencha o formulário na guia Noções básicas. Use a tabela a seguir como uma guia para concluir o formulário:
| Configuração |
Valor sugerido |
Descrição |
|
Assinatura |
O nome da sua assinatura. |
A assinatura do Azure que você deseja usar para o servidor. Caso você tenha várias assinaturas, escolha a assinatura na qual você deseja receber a cobrança do recurso. |
|
Grupo de recursos |
myresourcegroup |
Um novo nome do grupo de recursos ou um existente de sua assinatura. |
|
Nome |
myasa |
Um nome exclusivo que identifica o serviço Aplicativos Spring do Azure. O nome deve ter entre 4 e 32 caracteres e pode conter apenas letras minúsculas, números e hifens. O primeiro caractere do nome do serviço deve ser uma letra e o último caractere deve ser uma letra ou um número. |
|
Região |
A região mais próxima de seus usuários. |
A localização mais próxima dos usuários. |
|
Opções e planos de hospedagem |
Enterprise |
O plano de preços determina os recursos e o custo associados à sua instância. |
|
Com redundância de zona |
Não selecionado |
A opção para criar o serviço do Aplicativos Spring do Azure em uma zona de disponibilidade do Azure. Atualmente, não há suporte para esse recurso em todas as regiões. |
|
Plano IP de software |
Pague-conforme-o-uso |
O plano de preços que permite pagar conforme o uso dos Aplicativos Spring do Azure. |
|
Implantar um projeto de exemplo |
Não selecionado |
A opção para usar o aplicativo de exemplo interno. |
Navegue até a guia Configurações de diagnóstico na página Criar Aplicativos Spring do Azure e selecione Criar novo para criar uma nova instância de workspaces do Log Analytics. Na página Criar novo workspace do Log Analytics, atualize o nome do workspace do Log Analytics conforme necessário e selecione OK para confirmar a criação.
Navegue até a guia Application Insights na página Criar Aplicativos Spring do Azure e selecione Criar novo para criar uma nova instância do Application Insights. Na página Criar novo recurso do Application Insights, atualize o nome do Application Insights conforme necessário, selecione Baseado em workspace para Modo de recurso e, em seguida, selecione OK para confirmar a criação.
Selecione Revisar e criar para revisar suas seleções. Em seguida, selecione Criar para provisionar a instância dos Aplicativos Spring do Azure.
Na barra de ferramentas, selecione o íconeNotificações (um sino) para monitorar o processo de implantação. Depois que a implantação terminar, você pode selecionar Fixar no painel para criar um atalho para a página Visão geral do serviço no seu painel do portal do Azure.
Selecione Ir para o recurso para ir para a página Visão geral dos Aplicativos Spring do Azure.
As seções a seguir mostram como configurar a instância de serviço.
Criar os aplicativos
Use as seguintes etapas para criar os aplicativos:
No painel de navegação, selecione Aplicativos e selecione Criar Aplicativo.
Na página Criar Aplicativo, para o Nome do aplicativo, use front-end e deixe todos os outros campos com seus valores padrão.
Repita a etapa anterior usando cada um dos seguintes nomes de aplicativo:
customers-service
vets-service
visits-service
Selecione Criar para concluir a criação do aplicativo.
Use as seguintes etapas para configurar o Registro de Serviço:
No painel de navegação, selecione Registro de Serviço.
Selecione Associação de aplicativos, selecione Associar aplicativo, selecione customers-service na lista e, em seguida, selecione Aplicar.
Repita a etapa anterior para associar os seguintes aplicativos:
vets-service
visits-service
Use as etapas a seguir para configurar o Serviço de Configuração de Aplicativos:
No painel de navegação, selecione Serviço de Configuração de Aplicativos e, em seguida, selecione Configurações.
Preencha o repositório com as seguintes informações e selecione Validar:
Após a validação, selecione Aplicar para concluir a configuração do Serviço de Configuração de Aplicativos.
Selecione Associação de aplicativos, selecione Associar aplicativo, selecione customers-service na lista e, em seguida, selecione Aplicar.
Repita a etapa anterior para associar os seguintes aplicativos:
vets-service
visits-service
Definir os padrões de arquivo de configuração para aplicativos
Use as seguintes etapas para definir os padrões de arquivo de configuração:
No painel de navegação, selecione Aplicativos e selecione o aplicativo customers-service.
Na página Visão geral do aplicativo, selecione Configuração, selecione Padrões do arquivo de configuração na guia Configurações gerais e selecione aplicativo e customers-service. Selecione Salvar para definir os padrões do arquivo de configuração.
Repita a etapa anterior para salvar os padrões do arquivo de configuração para os seguintes aplicativos:
-
vets-service: selecione aplicativo e vets-service.
-
visits-service: selecione aplicativo e visits-service.
Esta seção mostra como configurar o Spring Cloud Gateway.
Primeiro, use as seguintes etapas para atribuir um ponto de extremidade para o acesso ao gateway:
No painel de navegação, selecione Spring Cloud Gateway.
Na guia Visão geral, selecione Sim para atribuir um ponto de extremidade. Salve o URL do ponto de extremidade a ser usado posteriormente.
Em seguida, configure o roteamento do Spring Cloud Gateway. Como o portal do Azure não suporta atualmente a configuração de rota do Spring Cloud Gateway, abra uma janela do Bash e use as seguintes etapas da CLI do Azure para configurar o roteamento:
Use o seguinte comando para fazer logon na CLI do Azure:
az login
Use os seguintes comandos para instalar a extensão dos Aplicativos Spring do Azure para a CLI do Azure e registrar o namespaces Microsoft.SaaS:
az extension add --name spring --upgrade
az provider register --namespace Microsoft.SaaS
Use o seguinte comando para aceitar os termos legais e as políticas de privacidade:
Observação
Essa etapa só será necessária se sua assinatura nunca tiver sido usada para criar uma instância do plano Enterprise dos Aplicativos Spring do Azure.
az term accept \
--publisher vmware-inc \
--product azure-spring-cloud-vmware-tanzu-2 \
--plan asa-ent-hr-mtr
Crie variáveis para manter os nomes dos recursos usando os comandos a seguir. Substitua os espaços reservados pelos seus valores.
export SUBSCRIPTION_ID=<subscription-ID>
export RESOURCE_GROUP=<resource-group-name>
export SPRING_APPS_NAME=<Azure-Spring-Apps-instance-name>
export APP_CUSTOMERS_SERVICE=customers-service
export APP_VETS_SERVICE=vets-service
export APP_VISITS_SERVICE=visits-service
export APP_FRONTEND=frontend
Use o comando a seguir para definir a assinatura padrão:
az account set --subscription ${SUBSCRIPTION_ID}
Use o seguinte comando para definir o roteamento para o aplicativo customers-service:
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_CUSTOMERS_SERVICE} \
--app-name ${APP_CUSTOMERS_SERVICE} \
--routes-json \
'[
{
"predicates": [
"Path=/api/customer/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
Use o seguinte comando para definir o roteamento para o aplicativo vets-service:
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_VETS_SERVICE} \
--app-name ${APP_VETS_SERVICE} \
--routes-json \
'[
{
"predicates": [
"Path=/api/vet/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
Use o seguinte comando para definir o roteamento para o aplicativo visits-service:
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_VISITS_SERVICE} \
--app-name ${APP_VISITS_SERVICE} \
--routes-json \
'[
{
"predicates": [
"Path=/api/visit/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
Use o seguinte comando para definir o roteamento para o aplicativo de front-end:
az spring gateway route-config create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_FRONTEND} \
--app-name ${APP_FRONTEND} \
--routes-json \
'[
{
"predicates": [
"Path=/**"
],
"filters": [
"StripPrefix=0"
],
"order": 1000
}
]'
Use as etapas a seguir para configurar as Ferramentas para Desenvolvedores.
No painel de navegação, selecione Ferramentas para Desenvolvedores.
Selecione Atribuir ponto de extremidade para atribuir um ponto de extremidade para Ferramentas para Desenvolvedores.
Salve o ponto de extremidade do App Live View para usar posteriormente.
3.1. Fornecer nomes para cada recurso
Crie variáveis para manter os nomes dos recursos usando os comandos a seguir. Substitua os espaços reservados pelos seus valores.
export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP_FRONTEND=frontend
export APP_CUSTOMERS_SERVICE=customers-service
export APP_VETS_SERVICE=vets-service
export APP_VISITS_SERVICE=visits-service
export GIT_CONFIG_REPO=default
3.2. Fazer logon na CLI do Azure
Use as etapas a seguir para entrar:
Use o seguinte comando para fazer logon na CLI do Azure:
az login
Use o comando a seguir para listar todas as assinaturas disponíveis e determinar a ID de assinatura a ser usada:
az account list --output table
Use o comando a seguir para definir a assinatura padrão:
az account set --subscription <subscription-ID>
3.3. Criar um novo grupo de recursos
Use as etapas a seguir para criar um novo grupo de recursos:
Use o seguinte comando para definir o local padrão:
az configure --defaults location=${LOCATION}
Use o comando a seguir para criar um grupo de recursos:
az group create --resource-group ${RESOURCE_GROUP}
Use o seguinte comando para definir o grupo de recursos recém-criado como o grupo de recursos padrão:
az configure --defaults group=${RESOURCE_GROUP}
3.4. Instalar a extensão e registrar o namespace
Use os seguintes comandos para instalar a extensão dos Aplicativos Spring do Azure para a CLI do Azure e registrar o namespaces Microsoft.SaaS:
az extension add --name spring --upgrade
az provider register --namespace Microsoft.SaaS
3.5. Criar uma instância do Azure Spring Apps
Use as etapas a seguir para criar a instância de serviço:
Use o comando a seguir para aceitar os termos legais e as declarações de privacidade do plano Enterprise:
Observação
Essa etapa só será necessária se sua assinatura nunca tiver sido usada para criar uma instância do plano Enterprise dos Aplicativos Spring do Azure.
az term accept \
--publisher vmware-inc \
--product azure-spring-cloud-vmware-tanzu-2 \
--plan asa-ent-hr-mtr
Use o seguinte comando para criar uma instância de serviço dos Aplicativos Spring do Azure com os componentes do Tanzu necessários:
az spring create \
--name ${SPRING_APPS} \
--sku Enterprise \
--enable-application-configuration-service \
--enable-service-registry \
--enable-gateway \
--enable-application-live-view
Use as etapas a seguir para configurar a instância de serviço:
Use o seguinte comando para definir as configurações de diagnóstico para a instância dos Aplicativos Spring do Azure:
export SPRING_APPS_RESOURCE_ID=$(az spring show \
--name ${SPRING_APPS} \
--query id \
--output tsv)
az monitor diagnostic-settings create \
--resource ${SPRING_APPS_RESOURCE_ID} \
--name logs-and-metrics \
--workspace ${SPRING_APPS} \
--logs '[
{
"category": "ApplicationConsole",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
},
{
"category": "SystemLogs",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
},
{
"category": "IngressLogs",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
}
]' \
--metrics '[
{
"category": "AllMetrics",
"enabled": true,
"retentionPolicy": {
"enabled": false,
"days": 0
}
}
]'
Use os seguintes comandos para criar aplicativos para a instância dos Aplicativos Spring do Azure:
az spring app create --service ${SPRING_APPS} --name ${APP_FRONTEND}
az spring app create --service ${SPRING_APPS} --name ${APP_CUSTOMERS_SERVICE}
az spring app create --service ${SPRING_APPS} --name ${APP_VETS_SERVICE}
az spring app create --service ${SPRING_APPS} --name ${APP_VISITS_SERVICE}
Use os seguintes comandos para associar aplicativos para o Registro de Serviço:
az spring service-registry bind --service ${SPRING_APPS} --app ${APP_CUSTOMERS_SERVICE}
az spring service-registry bind --service ${SPRING_APPS} --app ${APP_VETS_SERVICE}
az spring service-registry bind --service ${SPRING_APPS} --app ${APP_VISITS_SERVICE}
Use o seguinte comando para criar um repositório de configuração para o Serviço de Configuração de Aplicativos:
az spring application-configuration-service git repo add \
--service ${SPRING_APPS} \
--name ${GIT_CONFIG_REPO} \
--patterns application,api-gateway,customers-service,vets-service,visits-service \
--uri https://github.com/Azure-Samples/spring-petclinic-microservices-config.git \
--label master
Use os seguintes comandos para associar aplicativos ao Serviço de Configuração de Aplicativos:
az spring application-configuration-service bind \
--service ${SPRING_APPS} \
--app ${APP_CUSTOMERS_SERVICE}
az spring application-configuration-service bind \
--service ${SPRING_APPS} \
--app ${APP_VETS_SERVICE}
az spring application-configuration-service bind \
--service ${SPRING_APPS} \
--app ${APP_VISITS_SERVICE}
Use o seguinte comando para atribuir um ponto de extremidade ao Spring Cloud Gateway:
az spring gateway update --service ${SPRING_APPS} --assign-endpoint
Use o seguinte comando para definir o roteamento para o aplicativo customers-service:
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_CUSTOMERS_SERVICE} \
--app-name ${APP_CUSTOMERS_SERVICE} \
--routes-json '[
{
"predicates": [
"Path=/api/customer/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
Use o seguinte comando para definir o roteamento para o aplicativo vets-service:
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_VETS_SERVICE} \
--app-name ${APP_VETS_SERVICE} \
--routes-json '[
{
"predicates": [
"Path=/api/vet/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
Use o seguinte comando para definir o roteamento para o aplicativo visits-service:
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_VISITS_SERVICE} \
--app-name ${APP_VISITS_SERVICE} \
--routes-json '[
{
"predicates": [
"Path=/api/visit/**"
],
"filters": [
"StripPrefix=2"
]
}
]'
Use o seguinte comando para definir o roteamento para o aplicativo frontend:
az spring gateway route-config create \
--service ${SPRING_APPS} \
--name ${APP_FRONTEND} \
--app-name ${APP_FRONTEND} \
--routes-json '[
{
"predicates": [
"Path=/**"
],
"filters": [
"StripPrefix=0"
],
"order": 1000
}
]'
Use o seguinte comando para atribuir um ponto de extremidade à Exibição ao vivo de aplicativos:
az spring dev-tool update --service ${SPRING_APPS} --assign-endpoint
4. Implantar os aplicativos nos Aplicativos Spring do Azure
O botão Implantar no Azure na seção anterior inicia uma experiência do portal do Microsoft Azure que inclui a implantação do aplicativo, portanto, nada mais é necessário.
Use as etapas a seguir para implantar usando o plug-in Maven para Aplicativos Spring do Azure:
Navegue até o diretório raiz do projeto e execute o seguinte comando para configurar os aplicativos nos Aplicativos Spring do Azure:
./mvnw -P spring-apps-enterprise com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
A lista a seguir descreve as interações de comando:
-
Selecione os módulos filho para configurar: pressione Enter para selecionar todos.
-
Selecionar assinatura: selecione o número da lista de assinaturas da instância dos Aplicativos Spring do Azure que você criou, que usa como padrão a primeira assinatura na lista. Se você usar o número padrão, pressione Enter diretamente.
-
Usar os Aplicativos Spring do Azure existente: pressione S para usar a instância existente dos Aplicativos Spring do Azure.
-
Selecione os aplicativos para expor o acesso público: pressione Enter para selecionar nenhum.
-
Confirme para salvar todas as configurações acima: pressione S. Se você pressionar n, a configuração não será salva nos arquivos POM.
Use o seguinte comando para implantar os aplicativos de back-end:
./mvnw azure-spring-apps:deploy
Depois que o comando for executado, você poderá ver nas seguintes mensagens de log que a implantação foi bem-sucedida:
[INFO] Start deploying artifact(customers-service-3.0.1.jar) to deployment(default) of app(customers-service)...
[INFO] Artifact(customers-service-3.0.1.jar) is successfully deployed to deployment(default) of app(customers-service).
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
...
[INFO] Start deploying artifact(vets-service-3.0.1.jar) to deployment(default) of app(vets-service)...
[INFO] Artifact(vets-service-3.0.1.jar) is successfully deployed to deployment(default) of app(vets-service).
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
...
[INFO] Start deploying artifact(visits-service-3.0.1.jar) to deployment(default) of app(visits-service)...
[INFO] Artifact(visits-service-3.0.1.jar) is successfully deployed to deployment(default) of app(visits-service).
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
O portal do Azure não dá suporte à implantação dos aplicativos de front-end, portanto, use o seguinte comando da CLI do Azure para implantar o aplicativo de front-end:
az spring app deploy \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS_NAME} \
--name ${APP_FRONTEND} \
--source-path spring-petclinic-frontend \
--build-env BP_WEB_SERVER=nginx
Depois que o comando for executado, você poderá ver nas seguintes mensagens de log que a implantação foi bem-sucedida:
[5/5] Updating deployment in app "frontend" (this operation can take a while to complete)
Azure Spring Apps will use rolling upgrade to update your deployment, you have 1 instance, Azure Spring Apps will update the deployment in 1 round.
The deployment is in round 1, 1 old instance is deleted/deleting and 1 new instance is started/starting
Your application is successfully deployed.
Use as seguintes etapas para implantar os aplicativos:
Insira o diretório raiz do projeto e use o seguinte comando para criar e implantar o aplicativo front-end:
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_FRONTEND} \
--build-env BP_WEB_SERVER=nginx \
--source-path ./spring-petclinic-frontend
Use o seguinte comando para criar e implantar o aplicativo customers-service:
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_CUSTOMERS_SERVICE} \
--source-path \
--config-file-pattern application,customers-service \
--build-env \
BP_MAVEN_BUILT_MODULE=spring-petclinic-customers-service \
BP_JVM_VERSION=17
Use o seguinte comando para criar e implantar o aplicativo vets-service:
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_VETS_SERVICE} \
--source-path \
--config-file-pattern application,vets-service \
--build-env \
BP_MAVEN_BUILT_MODULE=spring-petclinic-vets-service \
BP_JVM_VERSION=17
Use o seguinte comando para criar e implantar o aplicativo visits-service:
az spring app deploy \
--service ${SPRING_APPS} \
--name ${APP_VISITS_SERVICE} \
--source-path \
--config-file-pattern application,visits-service \
--build-env \
BP_MAVEN_BUILT_MODULE=spring-petclinic-visits-service \
BP_JVM_VERSION=17
5. Validar os aplicativos
As seções a seguir descrevem como validar a implantação.
5.1. Acessar os aplicativos
Após a conclusão da implantação, encontre o URL do Gateway de Spring Cloud nas saídas de implantação, conforme mostrado na seguinte captura de tela:
Abra o URL do gateway. A aparência do aplicativo deve ser similar à captura de tela a seguir:
5.2. Consultar os logs do aplicativo
Depois de procurar cada função do Pet Clinic, o workspace do Log Analytics coleta logs de cada aplicativo. Você pode marcar os logs por meio de consultas personalizadas, conforme mostrado na captura de tela a seguir:
5.3. Monitorar os aplicativos
O Application Insights monitora as dependências do aplicativo, conforme mostrado pelo seguinte mapa de rastreamento de aplicativos:
Encontre o URL da Exibição ao vivo de aplicativos nas saídas de implantação. Abra o URL da Exibição ao vivo de aplicativos para monitorar os runtimes do aplicativo, conforme mostrado na seguinte captura de tela:
5.1. Acessar os aplicativos
Use o ponto de extremidade atribuído do Gateway de Spring Cloud, por exemplo, https://<your-Azure-Spring-Apps-instance-name>-gateway-xxxxx.svc.azuremicroservices.io. A aparência do aplicativo deve ser similar à captura de tela a seguir:
5.2. Consultar os logs do aplicativo
Depois de procurar cada função do Pet Clinic, o workspace do Log Analytics coleta logs de cada aplicativo. Você pode marcar os logs por meio de consultas personalizadas, conforme mostrado na captura de tela a seguir:
5.3. Monitorar os aplicativos
O Application Insights monitora as dependências do aplicativo, conforme mostrado pelo seguinte mapa de rastreamento de aplicativos:
Abra o URL do Application Live View exposto pelas Ferramentas para Desenvolvedores para monitorar os runtimes do aplicativo, conforme mostrado na seguinte captura de tela:
5.1. Acessar os aplicativos
Use os seguintes comandos para recuperar a URL no Spring Cloud Gateway:
export GATEWAY_URL=$(az spring gateway show \
--service ${SPRING_APPS} \
--query properties.url \
--output tsv)
echo "https://${GATEWAY_URL}"
A aparência do aplicativo deve ser similar à captura de tela a seguir:
5.2. Consultar os logs do aplicativo
Depois de procurar cada função do Pet Clinic, o workspace do Log Analytics coleta logs de cada aplicativo. Você pode marcar os logs por meio de consultas personalizadas, conforme mostrado na captura de tela a seguir:
5.3. Monitorar os aplicativos
O Application Insights monitora as dependências do aplicativo, conforme mostrado pelo seguinte mapa de rastreamento de aplicativos:
Use os seguintes comandos para recuperar o URL da Exibição ao vivo de aplicativos:
export DEV_TOOL_URL=$(az spring dev-tool show \
--service ${SPRING_APPS} \
--query properties.url \
--output tsv)
echo "https://${DEV_TOOL_URL}/app-live-view"
Abra o URL da Exibição ao vivo de aplicativos para monitorar os runtimes do aplicativo, conforme mostrado na seguinte captura de tela:
5.1. Acessar os aplicativos
Usando as informações de URL na saída do log de implantação, abra a URL exposta pelo aplicativo chamado api-gateway, por exemplo, https://<your-Azure-Spring-Apps-instance-name>-api-gateway.azuremicroservices.io. A aparência do aplicativo deve ser similar à captura de tela a seguir:
5.2. Consultar os logs do aplicativo
Depois de procurar cada função do Pet Clinic, o workspace do Log Analytics coleta logs de cada aplicativo. Você pode marcar os logs por meio de consultas personalizadas, conforme mostrado na captura de tela a seguir:
5.3. Monitorar os aplicativos
O Application Insights monitora as dependências do aplicativo, conforme mostrado pelo seguinte mapa de rastreamento de aplicativos:
Abra a URL exposta pelo aplicativo admin-server para gerenciar os aplicativos por meio do Servidor de Administração do Spring Boot, conforme mostrado na captura de tela a seguir:
6. Limpar recursos
Se planejar continuar trabalhando com os tutoriais e inícios rápidos subsequentes, deixe esses recursos onde estão. Quando não precisar mais dos recursos, você poderá limpar os recursos desnecessários para evitar cobranças do Azure.
Use as seguintes etapas para excluir todo o grupo de recursos, incluindo a instância de serviço recém-criada:
Encontre o grupo de recursos no portal do Azure. No menu de navegação, selecione Grupos de recursos e, em seguida, selecione o nome do seu grupo de recursos.
Na página Grupo de recursos, selecione Excluir. Insira o nome do seu grupo de recursos na caixa de texto para confirmar a exclusão e selecione Excluir.
Use o seguinte comando para excluir todos os recursos do Azure usados neste aplicativo de exemplo:
azd down
A lista a seguir descreve a interação de comando:
-
Total de recursos a serem excluídos: <resources-total>, tem certeza de que deseja continuar?: Pressione s.
O console gera mensagens semelhantes ao exemplo a seguir:
SUCCESS: Your application was removed from Azure in xx minutes xx seconds.
Exclua os recursos que você criou neste artigo quando não precisar mais deles. Você pode excluir o grupo de recursos do Azure, que inclui todos os recursos do grupo.
Use as seguintes etapas para excluir todo o grupo de recursos:
Encontre o grupo de recursos no portal do Azure. No menu de navegação, selecione Grupos de recursos e, em seguida, selecione o nome do seu grupo de recursos.
Na página Grupo de recursos, selecione Excluir. Insira o nome do seu grupo de recursos na caixa de texto para confirmar a exclusão e selecione Excluir.
Use as seguintes etapas para excluir todo o grupo de recursos:
Encontre o grupo de recursos no portal do Azure. No menu de navegação, selecione Grupos de recursos e, em seguida, selecione o nome do seu grupo de recursos.
Na página Grupo de recursos, selecione Excluir. Insira o nome do seu grupo de recursos na caixa de texto para confirmar a exclusão e selecione Excluir.
Use o seguinte comando para excluir o grupo de recursos:
az group delete --name ${RESOURCE_GROUP}
7. Próximas etapas
Para obter mais informações, consulte os seguintes artigos: