Подключение к управляемому администратору для Spring в приложениях контейнеров Azure
Управляемый компонент Admin for Spring предоставляет административный интерфейс для веб-приложений Spring Boot, предоставляющих конечные точки актатора. В качестве управляемого компонента в приложениях контейнеров Azure вы можете легко привязать приложение контейнера к admin for Spring для простой интеграции и управления.
В этом руководстве показано, как создать компонент Admin for Spring Java и привязать его к приложению-контейнеру, чтобы отслеживать приложения Spring и управлять ими с легкостью.
В этом руководстве описано следующее:
- Создайте компонент Admin for Spring Java.
- Привязка приложения-контейнера к компоненту Admin for Spring Java.
Если вы хотите интегрировать admin for Spring с Eureka Server for Spring, см . статью "Интеграция администратора для Spring с Eureka Server для Spring в контейнерных приложениях ".
Внимание
В этом руководстве используются службы, которые могут повлиять на счет Azure. Если вы решите продолжить работу, удалите ресурсы, описанные в этой статье, чтобы избежать непредвиденных выставления счетов.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Если у вас еще нет, его можно создать бесплатно.
- Azure CLI.
Рекомендации
При запуске компонента Admin for Spring в контейнерных приложениях помните о следующих сведениях:
Товар | Описание |
---|---|
Область | Компоненты выполняются в той же среде, что и подключенное приложение контейнера. |
Масштабирование | Компонент не может масштабироваться. Свойства minReplicas масштабирования и maxReplicas имеют значение . 1 . |
Ресурсы | Исправлено выделение ресурсов контейнера для компонентов. Число ядер ЦП равно 0,5, а размер памяти — 1 Ги. |
Цены | Выставление счетов на основе компонентов зависит от цен на основе потребления. Счета за ресурсы, потребляемые управляемыми компонентами, выставляются по тарифам "активный или простой". Вы можете удалить компоненты, которые больше не используются для остановки выставления счетов. |
Привязка | Приложения-контейнеры подключаются к компоненту через привязку. Привязки внедряют конфигурации в переменные среды приложения-контейнера. После установки привязки приложение-контейнер может считывать значения конфигурации из переменных среды и подключаться к компоненту. |
Настройка
Прежде чем приступить к работе с компонентом Admin for Spring, сначала необходимо создать необходимые ресурсы.
Следующие команды помогут вам создать группу ресурсов и среду приложения контейнера.
Создайте переменные для поддержки конфигурации приложения. Эти значения предоставляются для вас в целях этого урока.
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"
«Переменная» Description LOCATION
Расположение региона Azure, в котором создается приложение контейнера и компонент Java. ENVIRONMENT
Имя среды приложения контейнера для демонстрационного приложения. RESOURCE_GROUP
Имя группы ресурсов Azure для демонстрационного приложения. JAVA_COMPONENT_NAME
Имя компонента Java, созданного для приложения контейнера. В этом случае вы создадите компонент Admin for Spring Java. IMAGE
Образ контейнера, используемый в приложении контейнера. Войдите в Azure с помощью Azure CLI.
az login
Создать группу ресурсов.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"
При использовании
--query
параметра ответ фильтруется до простого сообщения об успешном выполнении или сбое.Создайте среду приложения-контейнера.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Использование компонентов
Теперь, когда у вас есть существующая среда, вы можете создать приложение-контейнер и привязать его к экземпляру компонента Java компонента Admin for Spring.
Создайте компонент 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
Обновите компонент 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
Привязка приложения-контейнера к компоненту Admin for Spring Java
Создайте приложение-контейнер и привязите его к компоненту 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
Операция привязки привязывает приложение контейнера к компоненту Admin for Spring Java. Теперь приложение-контейнер может считывать значения конфигурации из переменных среды, в первую очередь SPRING_BOOT_ADMIN_CLIENT_URL
свойство и подключаться к компоненту Admin for Spring.
Привязка также внедряет следующее свойство:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Это свойство указывает, что клиент компонента Admin for Spring должен предпочитать IP-адрес экземпляра приложения контейнера при подключении к серверу Admin for Spring server.
Необязательно. Отмена привязки приложения-контейнера с помощью компонента Admin for Spring Java
Чтобы удалить привязку из приложения-контейнера, используйте --unbind
этот параметр.
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Просмотр панели мониторинга
Внимание
Чтобы просмотреть панель мониторинга, необходимо иметь по крайней мере Microsoft.App/managedEnvironments/write
роль, назначенную учетной записи в ресурсе управляемой среды. Вы можете явно назначить Owner
Contributor
или роль в ресурсе. Вы также можете выполнить действия, чтобы создать определение пользовательской роли и назначить его учетной записи.
Примечание.
Панель мониторинга недоступна в Azure China 21Vianet.
Создайте определение настраиваемой роли.
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>"] }'
Обязательно замените заполнители между
<>
квадратными скобками своими значениями.Назначьте настраиваемую роль учетной записи в ресурсе управляемой среды.
Получите идентификатор ресурса управляемой среды:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Назначьте роль учетной записи.
Перед выполнением этой команды замените заполнитель ( как указано
<>
в скобках) идентификатором пользователя или субъекта-службы или именем роли.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_ID
Примечание.
Значение
<USER_OR_SERVICE_PRINCIPAL_ID>
должно быть идентификатором, используемым для доступа к портал Azure. Значением<ROLE_NAME>
является имя, назначенное на шаге 1.Получите URL-адрес панели мониторинга 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
Эта команда возвращает URL-адрес, который можно использовать для доступа к панели мониторинга Admin for Spring. С помощью панели мониторинга вы также можете увидеть приложение контейнера, как показано на следующем снимке экрана.
Очистка ресурсов
Ресурсы, созданные в этом руководстве, влияют на счет Azure. Если вы не собираетесь использовать эти службы в долгосрочной перспективе, выполните следующую команду, чтобы удалить все, что вы создали в этом руководстве.
az group delete --resource-group $RESOURCE_GROUP
Dependency
При использовании компонента администратора в собственном приложении контейнера необходимо добавить в файл pom.xml следующую зависимость. Замените номер версии последней версией, доступной в репозитории Maven.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Настраиваемые свойства
Начиная с Spring Boot 2 конечные точки, отличные health
от и info
не предоставляются по умолчанию. Их можно предоставить, добавив следующую конфигурацию в файл application.properties .
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Список разрешенных конфигураций для администратора для Spring
В следующем списке описаны свойства компонента администратора, которые можно настроить для приложения. Дополнительные сведения см. в разделе Spring Boot Admin.
Имя свойства | Description | Default value |
---|---|---|
spring.boot.admin.server.enabled |
Включает сервер администрирования Spring Boot. | true |
spring.boot.admin.context-path |
Префикс пути, в котором обслуживаются статические ресурсы и API сервера администрирования. Относительно диспетчера-сервлета. | |
spring.boot.admin.monitor.status-interval |
Интервал времени в миллисекундах для проверки состояния экземпляров. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Время существования состояния в миллисекундах. Состояние не обновляется до истечения срока действия последнего состояния. | 10 000 мс |
spring.boot.admin.monitor.info-interval |
Интервал времени в миллисекундах для проверки сведений о экземплярах. | 1m |
spring.boot.admin.monitor.info-lifetime |
Время существования информации в минутах. Сведения не обновляются до тех пор, пока последние сведения не истекли. | 1m |
spring.boot.admin.monitor.default-timeout |
Время ожидания по умолчанию при выполнении запросов. С помощью отдельных значений для определенных конечных точек можно переопределить.spring.boot.admin.monitor.timeout.* |
10,000 |
spring.boot.admin.monitor.timeout.* |
Пары "ключ-значение" с тайм-аутом.endpointId |
Значение по умолчанию default-timeout . |
spring.boot.admin.monitor.default-retries |
Число повторных попыток по умолчанию для неудачных запросов. Запросы, которые изменяют данные (PUT , POST , PATCH , ) DELETE никогда не извлекаются. С помощью отдельных значений для определенных конечных точек можно переопределить.spring.boot.admin.monitor.retries.* |
0 |
spring.boot.admin.monitor.retries.* |
Пары "ключ-значение" с числом повторных попыток на endpointId . Запросы, которые изменяют данные (PUT , POST , PATCH , ) DELETE никогда не извлекаются. |
Значение по умолчанию default-retries . |
spring.boot.admin.metadata-keys-to-sanitize |
Значения метаданных для ключей, соответствующих этим шаблонам regex, используемым для очистки во всех выходных данных JSON. Начиная с Spring Boot 3 все значения актатора маскируются по умолчанию. Дополнительные сведения о настройке процесса несанитизации см. в разделе "Санитизация конфиденциальных значений". | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
Для клиентских приложений Spring Boot 1.x проверка администратора Spring Boot для указанных конечных точек с помощью OPTIONS запроса. Если путь отличается от идентификатора, можно указать это значение, id:path например 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 |
Заголовки не пересылаются при выполнении запросов клиентам. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
Отображаемое название страницы. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Длительность опроса в миллисекундах для получения новых данных кэша. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Длительность опроса в миллисекундах для получения новых данных источника данных. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Длительность опроса в миллисекундах для получения новых данных GC. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Длительность опроса в миллисекундах для получения новых данных процесса. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Длительность опроса в миллисекундах для получения новых данных памяти. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Длительность опроса в миллисекундах для получения новых потоков. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Длительность опроса в миллисекундах для получения новых данных журнала. | 1000 |
spring.boot.admin.ui.enable-toasts |
Включает или отключает всплывающие уведомления. | false |
spring.boot.admin.ui.title |
Значение заголовка окна браузера. | "" |
spring.boot.admin.ui.brand |
HTML-код, отображаемый в заголовке навигации и по умолчанию использует метку администратора Spring Boot. По умолчанию за логотипом администратора Spring Boot следует его имя. | "" |
management.scheme |
Значение, заменяемое в URL-адресе службы, используемом для доступа к конечным точкам актатора. | |
management.address |
Значение, заменяемое в URL-адресе службы, используемом для доступа к конечным точкам актатора. | |
management.port |
Значение, заменяемое в URL-адресе службы, используемом для доступа к конечным точкам актатора. | |
management.context-path |
Значение, добавляемое к URL-адресу службы, используемому для доступа к конечным точкам актатора. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Значение, добавляемое к URL-адресу службы, используемому для проверки работоспособности. Игнорируется параметром EurekaServiceInstanceConverter . |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
DiscoveryClient Включает поддержку сервера администрирования. |
true |
spring.boot.admin.discovery.converter.management-context-path |
Значение, которое добавляется в service-url обнаруженную службу при management-url преобразовании DefaultServiceInstanceConverter значения. |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Значение, которое добавляется в management-url обнаруженную службу при health-url преобразовании DefaultServiceInstanceConverter значения. |
"health" |
spring.boot.admin.discovery.ignored-services |
Службы, которые игнорируются при использовании обнаружения и не зарегистрированы в качестве приложения. Поддерживает простые шаблоны, такие как "foo*" , "*bar" и "foo*bar*" . |
|
spring.boot.admin.discovery.services |
Службы, включенные при использовании обнаружения и регистрации в качестве приложения. Поддерживает простые шаблоны, такие как "foo*" , "*bar" и "foo*bar*" . |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
Службы игнорируются, если они содержат по крайней мере один элемент метаданных, соответствующий шаблонам в этом списке. Поддерживает такие шаблоны, как "discoverable=false" . |
|
spring.boot.admin.discovery.instances-metadata |
Службы включаются, если они содержат по крайней мере один элемент метаданных, соответствующий шаблонам в списке. Поддерживает такие шаблоны, как "discoverable=true" . |
Распространенные способы конфигурирования
- Связанные с ведением журнала конфигурации:
- logging.level.*
- logging.group.*
- Любые другие конфигурации в
logging.*
пространстве имен должны быть запрещены. Например, запись файлов журналов с помощьюlogging.file
не должна быть запрещена.
Ограничения
- Панель мониторинга администрирования Spring Boot недоступна в Azure China 21Vianet.
Связанный контент
Интеграция управляемого администратора для Spring с Eureka Server для Spring