Tutorial: Conectar-se a um administrador gerenciado para o Spring nos Aplicativos de Contêiner do Azure
O componente gerenciado Administrador do Spring oferece uma interface administrativa para aplicativos web do Spring Boot que expõe os pontos de extremidade de atuador. Como um componente gerenciado nos Aplicativos de Contêiner do Azure, você pode facilmente vincular seu aplicativo de contêiner ao Administrador do Spring para integração e gerenciamento contínuos.
Este tutorial mostra como criar um componente Java do Administrador do Spring e associá-lo ao seu aplicativo de contêiner para que você possa monitorar e gerenciar seus aplicativos Spring com facilidade.
Neste tutorial, você aprenderá a:
- Criar um componente Java do Administrador do Spring.
- Associar seu aplicativo de contêiner ao componente Java do Administrador do Spring.
Se você quiser integrar o Administrador para Spring com o Servidor Eureka para Spring, consulte Integrar o Administrador para Spring com o Servidor Eureka para Spring em Aplicativos de Contêiner do Azure.
Importante
Este tutorial usa serviços que podem afetar sua fatura do Azure. Se você decidir seguir o passo a passo, certifique-se de excluir os recursos apresentados neste artigo para evitar cobranças inesperadas.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Se você ainda não tiver uma, você pode criar uma gratuitamente.
- CLI do Azure.
Considerações
Ao executar o componente Administrador do Spring nos Aplicativos de Contêiner, lembre-se dos seguintes detalhes:
Item | Explicação |
---|---|
Escopo | Os componentes são executados no mesmo ambiente que o aplicativo de contêiner conectado. |
Dimensionamento | O componente não pode ser escalado. As propriedades de dimensionamento minReplicas e maxReplicas estão definidas como 1 . |
Recursos | A alocação de recursos do contêiner para componentes é fixa. O número de núcleos de CPU é 0,5 e o tamanho da memória é 1 Gi. |
Preços | A cobrança do complemento é incluída na categoria de preços baseados em consumo. Os recursos consumidos por componentes gerenciados são cobrados de acordo com as tarifas de uso ativo/ocioso. Você pode excluir componentes que não estão mais em uso para interromper a cobrança. |
Associação | Os aplicativos de contêiner se conectam a um componente por meio de uma vinculação. As associações injetam as configurações nas variáveis de ambiente do aplicativo de contêiner. Depois que uma associação é estabelecida, o aplicativo de contêiner pode ler os valores de configuração das variáveis de ambiente e se conectar ao componente. |
Instalação
Antes de começar a trabalhar com o Administrador do Spring, você precisa primeiro criar os recursos necessários.
Os comandos a seguir ajudarão você a criar seu grupo de recursos e o ambiente do seu aplicativo de contêiner.
Crie variáveis para dar suporte à configuração do aplicativo. Esses valores são fornecidos para você para os fins desta lição.
export LOCATION=eastus export RESOURCE_GROUP=my-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=admin export APP_NAME=sample-admin-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"
Variável Descrição LOCATION
O local da região do Azure na qual você deve criar o aplicativo de contêiner e o componente Java. ENVIRONMENT
O nome do ambiente do aplicativo de contêiner para seu aplicativo de demonstração. RESOURCE_GROUP
O nome do grupo de recursos do Azure para seu aplicativo de demonstração. JAVA_COMPONENT_NAME
O nome do componente Java criado para o seu aplicativo de contêiner. Nesse caso, você deve criar um componente Java do Administrador do Spring. IMAGE
A imagem do contêiner usada no seu aplicativo de contêiner. Entre no Azure com a CLI do Azure.
az login
Crie um grupos de recursos.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
Quando você usa o parâmetro
--query
, a resposta é filtrada para uma mensagem simples de êxito ou falha.Crie o ambiente do seu aplicativo de contêiner.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Usar o componente
Agora que você tem um ambiente existente, pode criar seu aplicativo de contêiner e associá-lo uma instância do componente Java do componente Administrador do Spring.
Crie o componente Java do Administrador do Spring.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1
Atualize o componente Administrador do Spring Java.
az containerapp env java-component admin-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2
Associe seu aplicativo contêiner ao componente Administrador do Spring Java
Crie o aplicativo de contêiner e associe-o ao componente Administrador do Spring.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $JAVA_COMPONENT_NAME
A operação de associações vincula o aplicativo de contêiner ao componente Administrador do Spring Java. O aplicativo de contêiner agora pode ler os valores de configuração das variáveis de ambiente, principalmente a propriedade SPRING_BOOT_ADMIN_CLIENT_URL
e conectar-se ao Administrador do Spring.
A associação também injeta a seguinte propriedade:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Esta propriedade indica que o cliente do componente Administrador do Spring deve preferir o endereço IP da instância do aplicativo de contêiner ao se conectar ao servidor do Administrador do Spring.
(Opcional): desassociar seu aplicativo de contêiner do componente Java do Administrador do Spring
Para remover uma associação de um aplicativo de contêiner, use a opção --unbind
.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Exibir o painel
Importante
Para exibir o painel, você precisa ter pelo menos a função Microsoft.App/managedEnvironments/write
atribuída à sua conta no recurso de ambiente gerenciado. Você pode atribuir explicitamente a função Owner
ou a função Contributor
no recurso. Você também pode seguir as etapas para criar uma definição de função personalizada e atribuí-la à sua conta.
Criar a definição de função personalizada.
az role definition create --role-definition '{ "Name": "<ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'
Certifique-se de substituir os espaços reservados entre os colchetes
<>
por seus valores.Atribua a função personalizada à sua conta no recurso de ambiente gerenciado.
Obtenha a ID do recurso do ambiente gerenciado:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Atribua a função de à sua conta de usuário.
Antes de executar esse comando, substitua o espaço reservado – conforme indicado pelos colchetes
<>
– por sua ID de entidade de serviço ou usuário ou nome de função.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Observação
O valor
<USER_OR_SERVICE_PRINCIPAL_ID>
deve ser a identidade que você usa para acessar o portal do Azure. O valor<ROLE_NAME>
é o nome atribuído na etapa 1.Obtenha a URL do painel do Administrador do Spring.
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsv
Esse comando retorna a URL que você pode usar para acessar o painel do Administrador do Spring. Com o painel, você também pode ver seu aplicativo de contêiner, conforme mostrado na captura de tela a seguir.
Limpar os recursos
Os recursos criados neste tutorial têm um efeito na sua fatura do Azure. Se você não for usar esses serviços a longo prazo, execute o comando a seguir para remover tudo o que foi criado neste tutorial.
az group delete --resource-group $RESOURCE_GROUP
Dependência
Ao usar o componente de administrador no seu aplicativo de contêiner, você precisa adicionar a dependência a seguir ao seu arquivo pom.xml. Substitua o número de versão pela versão mais recente disponível no Repositório do Maven.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Propriedades configuráveis
A partir do Spring Boot 2, pontos de extremidade diferentes health
e info
não são expostos por padrão. Você pode expô-los adicionando a seguinte configuração no arquivo application.properties.
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Lista de configurações permitidas para o seu Administrador do Spring
A lista a seguir detalha as propriedades do componente de administrador que você pode configurar para o seu aplicativo. Para obter mais informações, confira Spring Boot Admin.
Nome da propriedade | Descrição | Valor padrão |
---|---|---|
spring.boot.admin.server.enabled |
Habilita o Servidor do Administrador do Spring Boot. | true |
spring.boot.admin.context-path |
O prefixo de caminho em que os ativos estáticos e a API do Servidor do Administrador são fornecidos. Com relação ao Dispatcher-Servlet. | |
spring.boot.admin.monitor.status-interval |
Intervalo de tempo em milissegundos para verificar o status de instâncias. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Tempo de vida do status em milissegundos. O status não é atualizado enquanto o último status não tiver expirado. | 10.000 ms |
spring.boot.admin.monitor.info-interval |
Intervalo de tempo em milissegundos para verificar as informações de instâncias. | 1m |
spring.boot.admin.monitor.info-lifetime |
Tempo de vida das informações em minutos. As informações não são atualizadas desde que as últimas informações não tiverem expirado. | 1m |
spring.boot.admin.monitor.default-timeout |
Tempo limite padrão ao fazer solicitações. Valores individuais para pontos de extremidade específicos podem ser substituídos usando spring.boot.admin.monitor.timeout.* . |
10,000 |
spring.boot.admin.monitor.timeout.* |
Pares de chave-valor com o tempo limite por endpointId . |
O padrão é o valor default-timeout . |
spring.boot.admin.monitor.default-retries |
Número padrão de repetições para solicitações com falha. Solicitações que modificam dados (PUT , POST , PATCH , DELETE ) nunca são repetidas. Valores individuais para pontos de extremidade específicos podem ser substituídos usando spring.boot.admin.monitor.retries.* . |
0 |
spring.boot.admin.monitor.retries.* |
Pares de chave-valor com o número de repetições por endpointId . Solicitações que modificam dados (PUT , POST , PATCH , DELETE ) nunca são repetidas. |
O padrão é o valor default-retries . |
spring.boot.admin.metadata-keys-to-sanitize |
Valores de metadados para as chaves correspondentes a esses padrões regex usados para purificar em todas as saídas JSON. A partir do Spring Boot 3, todos os valores do atuador são obliterados por padrão. Para obter mais informações sobre como configurar o processo de limpeza, confira (Limpeza de Valores Confidenciais). | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
Para aplicativos cliente do Spring Boot 1.x, o Spring Boot Admin sonda os pontos de extremidade especificados usando uma solicitação OPTIONS . Se o caminho for diferente da ID, você poderá especificar esse valor como id:path – por exemplo, health:ping . |
"health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents" |
spring.boot.admin.instance-proxy.ignored-headers |
Cabeçalhos não encaminhados ao fazer solicitações aos clientes. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
O título da página que aparece. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Duração da sondagem em milissegundos para buscar novos dados de cache. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Duração da sondagem em milissegundos para buscar novos dados da fonte de dados. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Duração da sondagem em milissegundos para buscar novos dados de GC. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Duração da sondagem em milissegundos para buscar novos dados de processo. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Duração da sondagem em milissegundos para buscar novos dados de memória. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Duração da sondagem em milissegundos para buscar novos dados de threads. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Duração da sondagem em milissegundos para buscar novos dados de logfile. | 1000 |
spring.boot.admin.ui.enable-toasts |
Habilita ou desabilita notificações do sistema. | false |
spring.boot.admin.ui.title |
Valor do título da janela do navegador. | "" |
spring.boot.admin.ui.brand |
Código HTML renderizado no cabeçalho de navegação, o padrão sendo o rótulo de Administrador do Spring Boot. Por padrão, o logotipo do Spring Boot Admin é seguido do nome. | "" |
management.scheme |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade de atuador. | |
management.address |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade de atuador. | |
management.port |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade de atuador. | |
management.context-path |
Valor acrescentado à URL de serviço usada para acessar os pontos de extremidade de atuador. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Valor acrescentado à URL de serviço usada para verificação de integridade. Ignorado pelo EurekaServiceInstanceConverter . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
Habilita o suporte a DiscoveryClient para o servidor do administrador. |
true |
spring.boot.admin.discovery.converter.management-context-path |
Valor acrescentado à service-url do serviço descoberto quando o valor management-url é convertido pelo DefaultServiceInstanceConverter . |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Valor acrescentado à management-url do serviço descoberto quando o valor health-url é convertido pelo DefaultServiceInstanceConverter . |
"health" |
spring.boot.admin.discovery.ignored-services |
Serviços que são ignorados ao usar a descoberta e não registrados como um aplicativo. Dá suporte a padrões simples, como "foo*" , "*bar" , "foo*bar*" . |
|
spring.boot.admin.discovery.services |
Serviços incluídos ao usar a descoberta e registrados como um aplicativo. Dá suporte a padrões simples, como "foo*" , "*bar" , "foo*bar*" . |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
Os serviços serão ignorados se contiverem pelo menos um item de metadados que corresponda aos padrões incluídos nessa lista. Dá suporte a padrões como "discoverable=false" . |
|
spring.boot.admin.discovery.instances-metadata |
Serviços incluídos se contiverem pelo menos um item de metadados que corresponda aos padrões na lista. Dá suporte a padrões como "discoverable=true" . |
Configurações comuns
- Configurações relacionadas ao registro em log:
- logging.level.*
- logging.group.*
- Quaisquer outras configurações no âmbito do namespace
logging.*
devem ser proibidas. Por exemplo, a gravação de arquivos de log usandologging.file
deve ser proibida.
Conteúdo relacionado
Integrar o Administrador Gerenciado para Spring com o Servidor Eureka para Spring