Tutorial: Conectar-se a um administrador gerenciado para o Spring em aplicativos de contêiner do Azure
O componente gerenciado Admin for Spring oferece uma interface administrativa para aplicativos Web Spring Boot que expõem pontos de extremidade atuadores. Como um componente gerenciado nos Aplicativos de Contêiner do Azure, você pode vincular facilmente seu aplicativo de contêiner ao Admin for Spring para integração e gerenciamento perfeitos.
Este tutorial mostra como criar um componente Admin for Spring Java e vinculá-lo ao seu aplicativo de contêiner para que você possa monitorar e gerenciar seus aplicativos Spring com facilidade.
Neste tutorial, irá aprender a:
- Crie um componente Admin para Spring Java.
- Associe seu aplicativo de contêiner a um componente Admin for Spring Java.
Se você quiser integrar o Admin for Spring com o Eureka Server for Spring, consulte Integrar o Admin for Spring com o Eureka Server for Spring em aplicativos de contêiner.
Importante
Este tutorial usa serviços que podem afetar sua fatura do Azure. Se você decidir acompanhar, certifique-se de excluir os recursos apresentados neste artigo para evitar cobranças inesperadas.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Se ainda não tiver um, pode criar um gratuitamente.
- CLI do Azure.
Considerações
Ao executar o componente Admin for Spring em Aplicativos de Contêiner, esteja ciente dos seguintes detalhes:
Item | Explicação |
---|---|
Âmbito | Os componentes são executados no mesmo ambiente que o aplicativo de contêiner conectado. |
Dimensionamento | O componente não pode ser dimensionado. As propriedades minReplicas de dimensionamento e maxReplicas estão ambas definidas como 1 . |
Recursos | A alocação de recursos de contêiner para componentes é fixa. O número de núcleos da CPU é 0.5 e o tamanho da memória é 1 Gi. |
Preços | A faturação dos componentes enquadra-se nos preços baseados no consumo. Os recursos consumidos pelos componentes gerenciados são cobrados pelas taxas ativas/ociosas. Você pode excluir componentes que não estão mais em uso para interromper a cobrança. |
Enlace | Os aplicativos de contêiner se conectam a um componente por meio de uma ligação. As associações injetam configurações em variáveis de ambiente do aplicativo de contêiner. Depois que uma associação é estabelecida, o aplicativo contêiner pode ler os valores de configuração das variáveis de ambiente e se conectar ao componente. |
Configurar
Antes de começar a trabalhar com o componente Admin for Spring, primeiro você precisa criar os recursos necessários.
Os comandos a seguir ajudam você a criar seu grupo de recursos e ambiente de 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 Description LOCATION
O local da região do Azure onde você cria seu 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 seu aplicativo de contêiner. Nesse caso, você cria um componente Admin para Spring Java. IMAGE
A imagem de contêiner usada em seu aplicativo de contêiner. Entre no Azure com a CLI do Azure.
az login
Crie um grupo de recursos.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
Quando você usa o
--query
parâmetro, a resposta filtra até uma simples mensagem de sucesso ou falha.Crie seu ambiente de aplicativo de contêiner.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Use o componente
Agora que você tem um ambiente existente, pode criar seu aplicativo de contêiner e vinculá-lo a uma instância do componente Java de um componente Admin for Spring.
Crie o componente Admin for Spring Java.
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 Admin for 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
Vincular seu aplicativo de contêiner ao componente Admin for Spring Java
Crie o aplicativo de contêiner e associe-o ao componente Admin for 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 bind vincula o aplicativo contêiner ao componente Admin for Spring Java. O aplicativo contêiner agora pode ler os valores de configuração de variáveis de ambiente, principalmente a SPRING_BOOT_ADMIN_CLIENT_URL
propriedade, e conectar-se ao componente Admin for Spring.
A ligação também injeta a seguinte propriedade:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Essa propriedade indica que o cliente do componente Admin for Spring deve preferir o endereço IP da instância do aplicativo contêiner quando você se conectar ao servidor Admin for Spring.
Opcional: Desvincule seu aplicativo contêiner do componente Admin for Spring Java
Para remover uma associação de um aplicativo contêiner, use a --unbind
opção.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Ver o dashboard
Importante
Para exibir o painel, você precisa ter pelo menos a Microsoft.App/managedEnvironments/write
função atribuída à sua conta no recurso de ambiente gerenciado. Você pode atribuir explicitamente a Owner
função ou Contributor
no recurso. Você também pode seguir as etapas para criar uma definição de função personalizada e atribuí-la à sua conta.
Crie 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
<>
colchetes pelos 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 à sua conta.
Antes de executar esse comando, substitua o espaço reservado - conforme indicado pelos
<>
colchetes - pelo ID do usuário ou da entidade de serviço ou nome da função.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Nota
O
<USER_OR_SERVICE_PRINCIPAL_ID>
valor deve ser a identidade que você usa para acessar o portal do Azure. O<ROLE_NAME>
valor é o nome que você atribuiu na etapa 1.Obtenha o URL do painel Admin for 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
Este comando retorna a URL que você pode usar para acessar o painel Admin for Spring. Com o painel, você também pode ver seu aplicativo de contêiner, conforme mostrado na captura de tela a seguir.
Clean up resources (Limpar recursos)
Os recursos criados neste tutorial têm um efeito na sua fatura do Azure. Se você não vai usar esses serviços a longo prazo, execute o seguinte comando para remover tudo o que você criou neste tutorial.
az group delete --resource-group $RESOURCE_GROUP
Dependency
Ao usar o componente admin em seu próprio aplicativo de contêiner, você precisa adicionar a seguinte dependência em seu arquivo pom.xml . Substitua o número da versão pela versão mais recente disponível no repositório 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, os pontos de extremidade diferentes health
info
e 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ção permitida para o seu Admin for Spring
A lista a seguir detalha as propriedades do componente admin que você pode configurar para seu aplicativo. Para obter mais informações, consulte Spring Boot Admin.
Property name | Description | Default value |
---|---|---|
spring.boot.admin.server.enabled |
Habilita o Spring Boot Admin Server. | true |
spring.boot.admin.context-path |
O prefixo de caminho onde os ativos estáticos e a API do Admin Server são servidos. Em relação ao Dispatcher-Servlet. | |
spring.boot.admin.monitor.status-interval |
Intervalo de tempo em milissegundos para verificar o status das 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 das 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 enquanto as últimas informações não expirarem. | 1m |
spring.boot.admin.monitor.default-timeout |
Tempo limite padrão ao fazer solicitações. Os 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.* |
Emparelhamento chave-valor com o tempo limite por endpointId . |
O valor é default-timeout padronizado. |
spring.boot.admin.monitor.default-retries |
Número padrão de novas tentativas para solicitações com falha. As solicitações que modificam dados (PUT , POST , PATCH , DELETE ) nunca são repetidas. Os valores individuais para pontos de extremidade específicos podem ser substituídos usando spring.boot.admin.monitor.retries.* . |
0 |
spring.boot.admin.monitor.retries.* |
Emparelhamento chave-valor com o número de novas tentativas por endpointId . As solicitações que modificam dados (PUT , POST , PATCH , DELETE ) nunca são repetidas. |
O valor é default-retries padronizado. |
spring.boot.admin.metadata-keys-to-sanitize |
Valores de metadados para as chaves que correspondem a esses padrões de regex usados para limpar em todas as saídas JSON. A partir do Spring Boot 3, todos os valores do atuador são mascarados por padrão. Para obter mais informações sobre como configurar o processo de desincanização, consulte Limpar 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 investiga os pontos de extremidade especificados usando uma OPTIONS solicitação. Se o caminho for diferente do 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 que não devem ser encaminhados ao fazer solicitações a clientes. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
O título da página exibida. | "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 obter novos dados gc. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Duração da sondagem em milissegundos para obter novos dados de processo. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Duração da sondagem em milissegundos para obter 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 obter novos dados do arquivo de log. | 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 e padrão para o rótulo Spring Boot Admin. Por padrão, o logotipo do Spring Boot Admin é seguido por seu nome. | "" |
management.scheme |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade do atuador. | |
management.address |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade do atuador. | |
management.port |
Valor que é substituído na URL de serviço usada para acessar os pontos de extremidade do atuador. | |
management.context-path |
Valor que é anexado à URL de serviço usada para acessar os pontos de extremidade do atuador. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Valor que é anexado à URL de serviço usada para verificação de integridade. Ignorado EurekaServiceInstanceConverter pelo . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
Habilita o DiscoveryClient suporte para o servidor de administração. |
true |
spring.boot.admin.discovery.converter.management-context-path |
Valor que é anexado service-url ao do serviço descoberto quando o management-url valor é convertido pelo DefaultServiceInstanceConverter . |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Valor que é anexado management-url ao do serviço descoberto quando o health-url valor é 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 aplicativo. Suporta padrões simples, como "foo*" , "*bar" e "foo*bar*" . |
|
spring.boot.admin.discovery.services |
Serviços incluídos ao usar a descoberta e registrados como aplicativo. Suporta padrões simples, como "foo*" , "*bar" e "foo*bar*" . |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
Serviços ignorados se contiverem pelo menos um item de metadados que corresponda aos padrões nesta lista. Suporta 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. Suporta padrões como "discoverable=true" . |
Configurações comuns
- Configurações relacionadas ao registro:
- logging.level.*
- logging.group.*
- Quaisquer outras configurações em
logging.*
namespace devem ser proibidas. Por exemplo, escrever arquivos de log usandologging.file
deve ser proibido.
Conteúdos relacionados
Integre o Admin gerenciado para o Spring com o Eureka Server for Spring