Поделиться через


Подключение к управляемому администратору для Spring в приложениях контейнеров Azure

Управляемый компонент Admin for Spring предоставляет административный интерфейс для веб-приложений Spring Boot, предоставляющих конечные точки актатора. В качестве управляемого компонента в приложениях контейнеров Azure вы можете легко привязать приложение контейнера к admin for Spring для простой интеграции и управления.

В этом руководстве показано, как создать компонент Admin for Spring Java и привязать его к приложению-контейнеру, чтобы отслеживать приложения Spring и управлять ими с легкостью.

Снимок экрана: обзор панели мониторинга Admin for Spring Insights.

В этом руководстве описано следующее:

  • Создайте компонент Admin for Spring Java.
  • Привязка приложения-контейнера к компоненту Admin for Spring Java.

Если вы хотите интегрировать admin for Spring с Eureka Server for Spring, см . статью "Интеграция администратора для Spring с Eureka Server для Spring в контейнерных приложениях ".

Внимание

В этом руководстве используются службы, которые могут повлиять на счет Azure. Если вы решите продолжить работу, удалите ресурсы, описанные в этой статье, чтобы избежать непредвиденных выставления счетов.

Необходимые компоненты

Рекомендации

При запуске компонента Admin for Spring в контейнерных приложениях помните о следующих сведениях:

Товар Описание
Область Компоненты выполняются в той же среде, что и подключенное приложение контейнера.
Масштабирование Компонент не может масштабироваться. Свойства minReplicas масштабирования и maxReplicas имеют значение . 1.
Ресурсы Исправлено выделение ресурсов контейнера для компонентов. Число ядер ЦП равно 0,5, а размер памяти — 1 Ги.
Цены Выставление счетов на основе компонентов зависит от цен на основе потребления. Счета за ресурсы, потребляемые управляемыми компонентами, выставляются по тарифам "активный или простой". Вы можете удалить компоненты, которые больше не используются для остановки выставления счетов.
Привязка Приложения-контейнеры подключаются к компоненту через привязку. Привязки внедряют конфигурации в переменные среды приложения-контейнера. После установки привязки приложение-контейнер может считывать значения конфигурации из переменных среды и подключаться к компоненту.

Настройка

Прежде чем приступить к работе с компонентом Admin for Spring, сначала необходимо создать необходимые ресурсы.

Следующие команды помогут вам создать группу ресурсов и среду приложения контейнера.

  1. Создайте переменные для поддержки конфигурации приложения. Эти значения предоставляются для вас в целях этого урока.

    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 Образ контейнера, используемый в приложении контейнера.
  2. Войдите в Azure с помощью Azure CLI.

    az login
    
  3. Создать группу ресурсов.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    При использовании --query параметра ответ фильтруется до простого сообщения об успешном выполнении или сбое.

  4. Создайте среду приложения-контейнера.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION
    

Использование компонентов

Теперь, когда у вас есть существующая среда, вы можете создать приложение-контейнер и привязать его к экземпляру компонента Java компонента Admin for Spring.

  1. Создайте компонент 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
    
  2. Обновите компонент 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

  1. Создайте приложение-контейнер и привязите его к компоненту 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.

  1. Создайте определение настраиваемой роли.

    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>"]
    }'
    

    Обязательно замените заполнители между <> квадратными скобками своими значениями.

  2. Назначьте настраиваемую роль учетной записи в ресурсе управляемой среды.

    Получите идентификатор ресурса управляемой среды:

    export ENVIRONMENT_ID=$(az containerapp env show \
        --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ 
        --query id \
        --output tsv)
    
  3. Назначьте роль учетной записи.

    Перед выполнением этой команды замените заполнитель ( как указано <> в скобках) идентификатором пользователя или субъекта-службы или именем роли.

    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.

  4. Получите 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. С помощью панели мониторинга вы также можете увидеть приложение контейнера, как показано на следующем снимке экрана.

    Снимок экрана: обзор панели мониторинга 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