Настройка параметров для компонента Config Server for Spring в приложениях контейнеров Azure (предварительная версия)
Сервер конфигурации для Spring предоставляет централизованное расположение, чтобы сделать данные конфигурации доступными для нескольких приложений. Используйте следующее руководство, чтобы узнать, как настроить сервер конфигурации для Spring и управлять ими.
Показать
Сведения о отдельном компоненте можно просмотреть по имени с помощью show
команды.
Перед выполнением следующей команды замените заполнители, окруженные значениями <>
.
az containerapp env java-component config-server-for-spring show \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP> \
--name <JAVA_COMPONENT_NAME>
List
Вы можете перечислить все зарегистрированные компоненты Java с помощью list
команды.
Перед выполнением следующей команды замените заполнители, окруженные значениями <>
.
az containerapp env java-component list \
--environment <ENVIRONMENT_NAME> \
--resource-group <RESOURCE_GROUP>
Bind
--bind
Используйте параметр update
команды, чтобы создать соединение между компонентом Config Server для Spring и приложением контейнера.
Перед выполнением следующей команды замените заполнители, окруженные значениями <>
.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP> \
--bind <JAVA_COMPONENT_NAME>
Unbind
Чтобы разорвать соединение между приложением-контейнером и компонентом Config Server for Spring, используйте --unbind
параметр update
команды.
Перед выполнением следующей команды замените заполнители, окруженные значениями <>
.
az containerapp update \
--name <CONTAINER_APP_NAME> \
--unbind <JAVA_COMPONENT_NAME> \
--resource-group <RESOURCE_GROUP>
Варианты конфигурации
Команда az containerapp update
использует --configuration
параметр для управления настройкой сервера конфигурации для Spring. Вы можете одновременно использовать несколько параметров, если они разделены пробелом. Дополнительные сведения см. в документации по серверу конфигурации Spring Cloud.
В следующей таблице перечислены доступные значения конфигурации.
Конфигурации серверной части Git
Имя | Описание |
---|---|
spring.cloud.config.server.git.uri spring.cloud.config.server.git.repos.{repoName}.uri |
URI удаленный репозиторий. |
spring.cloud.config.server.git.username spring.cloud.config.server.git.repos.{repoName}.username |
Имя пользователя для проверки подлинности с помощью удаленный репозиторий. |
spring.cloud.config.server.git.password spring.cloud.config.server.git.repos.{repoName}.password |
Пароль для проверки подлинности с помощью удаленный репозиторий. |
spring.cloud.config.server.git.search-paths spring.cloud.config.server.git.repos.{repoName}.search-paths |
Пути поиска для использования в локальной рабочей копии. По умолчанию выполняется поиск только корневого каталога. |
spring.cloud.config.server.git.force-pull spring.cloud.config.server.git.repos.{repoName}.force-pull |
Пометка, указывающая, что репозиторий должен принудительно вытягивать. Если значение true dis карта любые локальные изменения и принимается из удаленный репозиторий. |
spring.cloud.config.server.git.default-label spring.cloud.config.server.git.repos.{repoName}.default-label |
Метка по умолчанию, используемая для Git, является основной. Если не задана метка spring.cloud.config.server.git.default-label и ветвь с именем main не существует, сервер конфигурации по умолчанию попытается проверка использовать ветвь с именем master. Если вы хотите отключить поведение резервной ветви, можно задать для spring.cloud.config.server.git.tryMasterBranch значение false. |
spring.cloud.config.server.git.try-master-branch spring.cloud.config.server.git.repos.{repoName}.try-master-branch |
Сервер конфигурации по умолчанию попытается проверка использовать ветвь с именем master. |
spring.cloud.config.server.git.skip-ssl-validation spring.cloud.config.server.git.repos.{repoName}.skip-ssl-validation |
Проверка SSL-сертификата сервера Git сервера конфигурации может быть отключена, установив для свойства git.skipSslValidation значение true. |
spring.cloud.config.server.git.clone-on-start spring.cloud.config.server.git.repos.{repoName}.clone-on-start |
Флаг, указывающий, что репозиторий должен быть клонирован при запуске (не по запросу). Как правило, приводит к более медленному запуску, но более быстрому первому запросу. |
spring.cloud.config.server.git.timeout spring.cloud.config.server.git.repos.{repoName}.timeout |
Время ожидания (в секундах) для получения подключения HTTP или SSH (если применимо). Значение по умолчанию — 5 секунд. |
spring.cloud.config.server.git.refresh-rate spring.cloud.config.server.git.repos.{repoName}.refresh-rate |
Как часто сервер конфигурации извлекает обновленные данные конфигурации из серверной части Git. |
spring.cloud.config.server.git.private-key spring.cloud.config.server.git.repos.{repoName}.private-key |
Допустимый закрытый ключ SSH. Необходимо задать, если параметр ignore-local-ssh-settings имеет значение true, а универсальный код ресурса (URI) Git — SSH-формат. |
spring.cloud.config.server.git.host-key spring.cloud.config.server.git.repos.{repoName}.host-key |
Допустимый ключ узла SSH. Необходимо задать, если также задан алгоритм host-key-. |
spring.cloud.config.server.git.host-key-algorithm spring.cloud.config.server.git.repos.{repoName}.host-key-algorithm |
Один из ssh-dss, ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256, ecdsa-sha2-nistp384 или ecdsa-sha2-nistp521. Необходимо задать, если также задан ключ узла. |
spring.cloud.config.server.git.strict-host-key-checking spring.cloud.config.server.git.repos.{repoName}.strict-host-key-checking |
true или false. Если значение false, игнорируйте ошибки с ключом узла. |
spring.cloud.config.server.git.repos.{repoName} |
URI удаленный репозиторий. |
spring.cloud.config.server.git.repos.{repoName}.pattern |
Формат шаблона — это разделенный запятыми список имен {application}/{profile} с дикими карта. Если {application}/{profile} не соответствует ни одному из шаблонов, он использует URI по умолчанию, определенный в разделе. |
Распространенные способы конфигурирования
Конфигурации, связанные с ведением журнала
- logging.level.*
- logging.group.*
- Любые другие конфигурации в пространстве имен log.* должны быть запрещены, например написание файлов журналов с помощью
logging.file
запрета.
spring.cloud.config.server.overrides
- Дополнительная карта для источника свойств, отправляемого всем клиентам безоговорочно.
spring.cloud.config.override-none
- Приоритет всех переопределения в клиенте можно изменить так, как значения по умолчанию, позволяя приложениям предоставлять собственные значения в переменных среды или системных свойствах, задав в удаленный репозиторий флаг spring.cloud.config.override-none=true (значение по умолчанию — false).
spring.cloud.config.allow-override
- Если включить первую начальную загрузку конфигурации, можно разрешить клиентским приложениям переопределить конфигурацию с сервера конфигурации конфигурации, разместив два свойства в конфигурации приложений, поступающих с сервера конфигурации конфигурации.
spring.cloud.config.server.health.
- Индикатор работоспособности можно настроить для проверка больше приложений, а также пользовательских профилей и пользовательских меток
spring.cloud.config.server.accept-empty
- Вы можете задать
spring.cloud.config.server.accept-empty
значениеfalse
, чтобы сервер вернул состояние HTTP404
, если приложение не найдено. По умолчанию этот флаг имеет значениеtrue
.
- Вы можете задать
Шифрование и расшифровка (симметричная)
- encrypt.key
- Симметричный ключ удобно использовать, так как это одно значение свойства для настройки.
- spring.cloud.config.server.encrypt.enabled
- Этот параметр можно задать для
false
отключения расшифровки на стороне сервера.
- Этот параметр можно задать для
- encrypt.key
Refresh
Службы, использующие свойства, должны знать об изменении, прежде чем это произойдет. Метод уведомлений по умолчанию для Config Server для Spring включает вручную активацию события обновления, например обновление по вызову https://<YOUR_CONFIG_CLIENT_HOST_NAME>/actuator/refresh
, что может оказаться невозможным, если существует множество экземпляров приложения.
Вместо этого можно автоматически обновить значения из сервера конфигурации, предоставив клиенту конфигурации опрос изменений на основе внутреннего обновления. Выполните следующие действия для автоматического обновления значений с сервера конфигурации.
Зарегистрируйте запланированную задачу для обновления контекста в заданном интервале, как показано в следующем примере.
@Configuration @AutoConfigureAfter({RefreshAutoConfiguration.class, RefreshEndpointAutoConfiguration.class}) @EnableScheduling public class ConfigClientAutoRefreshConfiguration implements SchedulingConfigurer { @Value("${spring.cloud.config.refresh-interval:60}") private long refreshInterval; @Value("${spring.cloud.config.auto-refresh:false}") private boolean autoRefresh; private final RefreshEndpoint refreshEndpoint; public ConfigClientAutoRefreshConfiguration(RefreshEndpoint refreshEndpoint) { this.refreshEndpoint = refreshEndpoint; } @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { if (autoRefresh) { // set minimal refresh interval to 5 seconds refreshInterval = Math.max(refreshInterval, 5); scheduledTaskRegistrar.addFixedRateTask(refreshEndpoint::refresh, Duration.ofSeconds(refreshInterval)); } } }
Включите
autorefresh
и задайте соответствующий интервал обновления в файле application.yml . В следующем примере клиент опрашивает изменение конфигурации каждые 60 секунд, что является минимальным значением, которое можно задать для интервала обновления.По умолчанию
autorefresh
задано значениеfalse
,иrefresh-interval
имеет значение 60 секунд.spring: cloud: config: auto-refresh: true refresh-interval: 60 management: endpoints: web: exposure: include: - refresh
Задайте
@RefreshScope
в коде. В следующем примере переменнаяconnectTimeout
автоматически обновляется каждые 60 секунд.@RestController @RefreshScope public class HelloController { @Value("${timeout:4000}") private String connectTimeout; }
Шифрование и расшифровка с помощью симметричного ключа
Расшифровка на стороне сервера
По умолчанию шифрование на стороне сервера включено. Чтобы включить расшифровку в приложении, выполните следующие действия.
Добавьте зашифрованное свойство в файл свойств .properties в репозитории Git.
Например, файл должен выглядеть следующим образом:
message={cipher}f43e3df3862ab196a4b367624a7d9b581e1c543610da353fbdd2477d60fb282f
Обновите компонент Config Server for Spring Java, чтобы использовать репозиторий Git, имеющий зашифрованное свойство и задал ключ шифрования.
Перед выполнением следующей команды замените заполнители, окруженные значениями
<>
.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> encrypt.key=randomKey
Расшифровка на стороне клиента
Вы можете использовать расшифровку свойств на стороне клиента, выполнив следующие действия.
Добавьте зашифрованное свойство в файл в
*.properties*
репозитории Git.Обновите компонент Config Server для Spring Java, чтобы использовать репозиторий Git, имеющий зашифрованное свойство и отключить расшифровку на стороне сервера.
Перед выполнением следующей команды замените заполнители, окруженные значениями
<>
.az containerapp env java-component config-server-for-spring update \ --environment <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --name <JAVA_COMPONENT_NAME> \ --configuration spring.cloud.config.server.git.uri=<URI> spring.cloud.config.server.encrypt.enabled=false
В клиентском приложении добавьте ключ
ENCRYPT_KEY=randomKey
расшифровки в качестве переменной среды.Кроме того, если вы включаете spring-cloud-starter-bootstrap в системное
classpath
свойство или задаетеspring.cloud.bootstrap.enabled=true
encrypt.key
bootstrap.properties
в качестве системного свойства.Перед выполнением следующей команды замените заполнители, окруженные значениями
<>
.az containerapp update \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --set-env-vars "ENCRYPT_KEY=randomKey"
encrypt: key: somerandomkey