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


Настройка управляемого Spring Cloud Config Server в Azure Spring Apps

Примечание.

Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

План стандартного потребления и выделенный план вошли в период вывода из эксплуатации 30 сентября 2024 года, с полным завершением работы к концу марта 2025 года. Дополнительные сведения см. в статье «Миграция потребления Azure Spring Apps Standard и выделенного плана в Azure Container Apps».

Эта статья относится к:✅ Java ✅ C#

Эта статья относится к:✅ стандартное потребление и выделенная (предварительная версия) ✅ Basic/Standard ✅ Enterprise

В этой статье показано, как настроить управляемый сервер конфигурации Spring Cloud в Azure Spring Apps.

Spring Cloud Config Server предоставляет поддержку на стороне сервера и клиента для внешней конфигурации в распределенной системе. Экземпляр сервера конфигурации Spring Cloud предоставляет центральное место для управления внешними свойствами для приложений во всех средах. Дополнительные сведения см. в разделе Spring Cloud Config.

Примечание.

Чтобы использовать сервер конфигурации в стандартном плане потребления и выделенном плане, необходимо сначала включить его. Дополнительные сведения см. в статье "Включение и отключение сервера конфигурации Spring Cloud" в Azure Spring Apps.

Требования

Включение сервера конфигурации Spring Cloud

Вы можете включить сервер конфигурации Spring Cloud при подготовке экземпляра службы тарифного плана Azure Spring Apps Enterprise. Если у вас уже есть экземпляр плана Azure Spring Apps Enterprise, см . раздел "Управление сервером конфигурации Spring Cloud" в существующем экземпляре плана Enterprise в этой статье.

Вы можете включить сервер конфигурации Spring Cloud с помощью портал Azure или Azure CLI.

Чтобы включить сервер конфигурации Spring Cloud, выполните следующие действия.

  1. Откройте портал Azure.

  2. На вкладке "Основные сведения" выберите уровень Enterprise в разделе "Цены " и укажите необходимые сведения. Затем нажмите кнопку Далее: Управляемые компоненты.

  3. На вкладке "Управляемые компоненты" выберите "Включить сервер конфигурации Spring Cloud".

    Снимок экрана: портал Azure, на котором показана вкладка параметров VMware Tanzu с выделенным флажком Enable Spring Cloud Config Server.

  4. Укажите другие параметры и нажмите кнопку "Проверить" и "Создать".

  5. На вкладке "Проверка и создание", убедитесь, что включение сервера конфигурации Spring Cloud установлено в положение "Да". Выберите Создать, чтобы создать экземпляр плана Enterprise.

Ограничения

При использовании сервера конфигурации с серверной частью Git есть некоторые ограничения. Следующие свойства автоматически внедряются в среду приложения для доступа к серверу конфигурации и обнаружению служб. Настроив эти свойства из файлов сервера конфигурации, вы можете столкнуться с конфликтами и непредвиденным поведением.

  • eureka.client.service-url.defaultZone
  • eureka.client.tls.keystore
  • eureka.instance.preferIpAddress
  • eureka.instance.instance-id
  • server.port
  • spring.cloud.config.tls.keystore
  • spring.config.import
  • spring.application.name
  • spring.jmx.enabled
  • management.endpoints.jmx.exposure.include

Внимание

Избегайте размещения этих свойств в файлах приложения Config Server.

Создание файлов сервера конфигурации

Azure Spring Apps поддерживает Azure DevOps Server, GitHub, GitLab и Bitbucket для хранения файлов сервера конфигурации. Когда репозиторий готов, вы можете создать файлы конфигурации и сохранить их там.

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

Примечание.

Сервер конфигурации использует в качестве метки по умолчанию master на Git, если не указана другая. Однако GitHub недавно изменил ветвь по умолчанию с master на main. Чтобы избежать сбоя сервера конфигурации Azure Spring Apps, обязательно обратите внимание на метку по умолчанию при настройке сервера конфигурации с помощью GitHub, особенно для вновь созданных репозиториев.

Использование дефиса (-) для разделения слов является единственным соглашением об именовании свойств в настоящее время. Например, вы можете использовать default-label, но не defaultLabel.

Общедоступный репозиторий

При использовании общедоступный репозиторий настраиваемые свойства являются более ограниченными, чем в частном репозитории.

В следующей таблице перечислены настраиваемые свойства, которые можно использовать для настройки общедоступного репозитория Git:

Свойство Обязательное поле Функция
uri Да URI репозитория Git, используемый в качестве бекенда сервера конфигурации. Должно начинаться с http://, https://git@или ssh://.
default-label Нет Метка по умолчанию репозитория Git. Должно быть имя ветки, имя тега или идентификатор коммита в репозитории.
search-paths Нет Массив строк, используемых для поиска в подкаталогах репозитория Git.

Частный репозиторий с проверкой подлинности SSH

В следующей таблице перечислены настраиваемые свойства, которые можно использовать для настройки частного репозитория Git с помощью SSH:

Свойство Обязательное поле Функция
uri Да URI репозитория Git, который используется как серверная часть для сервера конфигурации. Должно начинаться с http://, https://git@или ssh://.
default-label Нет Метка по умолчанию репозитория Git. Должно быть имя ветви, имя тега или идентификатор коммита репозитория.
search-paths Нет Массив строк, используемых для поиска в подкаталогах репозитория Git.
private-key Нет Закрытый ключ SSH для доступа к репозиторию Git. Обязательно, когда URI начинается с git@ или ssh://.
host-key Нет Ключ узла сервера репозитория Git. Не следует включать префикс алгоритма, как предусмотрено host-key-algorithm.
host-key-algorithm Нет Алгоритм ключа хоста. Должно бытьssh-dss, , ssh-rsa, ecdsa-sha2-nistp256ecdsa-sha2-nistp384или ecdsa-sha2-nistp521. Требуется только в том случае, если host-key существует.
strict-host-key-checking Нет Индикатор сервера конфигурации, показывающий, возникает ли сбой при запуске при использовании частного host-key. Должно быть true (значение по умолчанию) или false.

Частный репозиторий с обычной проверкой подлинности

В следующей таблице перечислены настраиваемые свойства, которые можно использовать для настройки частного репозитория Git с базовой проверкой подлинности:

Свойство Обязательное поле Функция
uri Да URI репозитория Git, используемый в качестве серверной части сервера конфигурации. Должно начинаться с http://, https://git@или ssh://.
default-label Нет Метка по умолчанию репозитория Git. Может быть именем ветви, именем тега или id коммита в репозитории.
search-paths Нет Массив строк, используемых для поиска в подкаталогах репозитория Git.
username Нет Имя пользователя, используемое для доступа к серверу репозитория Git. Требуется, если сервер репозитория Git поддерживает обычную проверку подлинности HTTP.
password Нет Пароль или личный маркер доступа, используемый для доступа к серверу репозитория Git. Требуется, если сервер репозитория Git поддерживает обычную проверку подлинности HTTP.

Примечание.

Многие серверы репозитория Git поддерживают использование маркеров, а не паролей для базовой проверки подлинности HTTP. Некоторые репозитории позволяют сохранять токены в течение неограниченного времени. Однако на некоторых серверах репозитория Git, включая Azure DevOps Server, срок действия токенов может заканчиваться через несколько часов. Репозитории, у которых истекает срок действия токенов, не должны использовать аутентификацию на основе токенов в Azure Spring Apps. Если вы используете такой маркер, не забудьте обновить его до истечения срока действия.

GitHub удалил поддержку проверки подлинности паролей, поэтому вместо проверки подлинности паролей для GitHub необходимо использовать личный маркер доступа. Дополнительные сведения см. в разделе "Требования к проверке подлинности токена для операций Git".

Другие репозитории Git

В следующей таблице перечислены настраиваемые свойства, которые можно использовать для настройки репозиториев Git с помощью шаблона:

Свойство Обязательное поле Функция
repos Нет Схема, состоящая из параметров репозитория Git с заданным именем.
repos."uri" Да для repos URI репозитория Git, используемый в качестве серверной части сервера конфигурации. Должно начинаться с http://, https://git@или ssh://.
repos."name" Да для repos Имя для идентификации репозитория; например, team-A или team-B. Требуется только в том случае, если repos существует.
repos."pattern" Нет Массив строк, используемый для сопоставления имени приложения. Для каждого шаблона используйте формат {application}/{profile} с подстановочными знаками.
repos."default-label" Нет Метка по умолчанию репозитория Git. Должно быть имя ветки, имя тега или идентификатор коммита репозитория.
repos."search-paths" Нет Массив строк, используемых для поиска в подкаталогах репозитория Git.
repos."username" Нет Имя пользователя, используемое для доступа к серверу репозитория Git. Требуется, если сервер репозитория Git поддерживает обычную проверку подлинности HTTP.
repos."password" Нет Пароль или личный маркер доступа, используемый для доступа к серверу репозитория Git. Требуется, если сервер репозитория Git поддерживает обычную проверку подлинности HTTP.
repos."private-key" Нет Закрытый ключ SSH для доступа к репозиторию Git. Обязательно, когда URI начинается с git@ или ssh://.
repos."host-key" Нет Ключ узла сервера репозитория Git. Не следует включать префикс алгоритма, как предусмотрено host-key-algorithm.
repos."host-key-algorithm" No Алгоритм ключа узла. Должно бытьssh-dss, , ssh-rsa, ecdsa-sha2-nistp256ecdsa-sha2-nistp384или ecdsa-sha2-nistp521. Требуется только в том случае, если host-key существует.
repos."strict-host-key-checking" Нет Указывает, не запускается ли экземпляр сервера конфигурации при использовании частного host-key. Должно быть true (значение по умолчанию) или false.

В следующей таблице показаны некоторые примеры шаблонов для настройки службы с дополнительным репозиторием. Дополнительные сведения см. в разделе "Дополнительные репозитории" в этой статье и разделе "Сопоставление шаблонов" и "Несколько репозиториев" в spring Cloud Config.

Шаблоны Описание
test-config-server-app-0/* Универсальный код ресурса (URI) для шаблона и репозитория соответствует приложению Spring Boot test-config-server-app-0 с любым профилем.
test-config-server-app-1/dev URI шаблона и репозитория соответствуют приложению Spring boot с test-config-server-app-1 профилем разработки.
test-config-server-app-2/prod URI шаблона и репозитория совпадают с приложением Spring Boot под именем test-config-server-app-2 с профилем prod.

Настройка репозитория Git для сервера конфигурации

После сохранения файлов конфигурации в репозитории выполните следующие действия, чтобы подключить Azure Spring Apps к репозиторию:

  1. Войдите на портал Azure.

  2. Перейдите на страницу Обзор Azure Spring Apps.

  3. Выберите Spring Cloud Config Server в области навигации.

  4. В разделе Репозиторий по умолчанию задайте для URI значение https://github.com/Azure-Samples/piggymetrics-config.

  5. Выберите Проверить.

  6. После завершения проверки нажмите Применить, чтобы сохранить изменения.

На обновление конфигурации может потребоваться несколько минут. После завершения настройки вы получите уведомление.

Введение данных репозитория непосредственно на портал Azure

Вы можете ввести сведения о репозитории по умолчанию и, при необходимости, для дополнительных репозиториев.

Репозиторий по умолчанию

В этом разделе показано, как ввести сведения о репозитории для общедоступного или частного репозитория. Для частного репозитория можно использовать обычную проверку подлинности или SSH.

Чтобы ввести сведения о репозитории для общедоступного репозитория, выполните следующие действия.

  1. В разделе Репозиторий по умолчанию вставьте URI репозитория в поле URI.
  2. В поле Метка введите config.
  3. Убедитесь, что параметр проверки подлинности является общедоступным.
  4. Выберите Применить.

Чтобы ввести сведения о репозитории для частного репозитория, выполните следующие действия, используя обычную проверку подлинности на основе пароля или токена:

  1. В разделе Репозиторий по умолчанию вставьте URI репозитория в поле URI.

  2. В разделе "Проверка подлинности" выберите "Изменить проверку подлинности".

  3. В области Изменить проверку подлинности, в раскрывающемся списке Тип проверки подлинности, выберите HTTP Basic.

  4. Введите имя пользователя и пароль или маркер, чтобы предоставить доступ к Azure Spring Apps.

  5. Выберите ОК, а затем Применить, чтобы завершить настройку экземпляра сервера конфигурации.

    Снимок экрана: портал Azure, в котором показан раздел репозитория по умолчанию параметров проверки подлинности для базовой проверки подлинности.

    Примечание.

    Многие серверы репозитория Git поддерживают использование маркеров, а не паролей для базовой проверки подлинности HTTP. Некоторые репозитории позволяют сохранять токены в течение неограниченного времени. Однако на некоторых серверах репозитория Git, включая Azure DevOps Server, срок действия токенов может заканчиваться через несколько часов. Репозитории, на которые истекает срока действия токенов, не должны использовать проверку подлинности на основе токенов в Azure Spring Apps. Если вы используете такой маркер, не забудьте обновить его до истечения срока действия.

    GitHub удалил поддержку проверки подлинности паролей, поэтому вместо проверки подлинности паролей для GitHub необходимо использовать личный маркер доступа. Дополнительные сведения см. в разделе «Требования к аутентификации токена для операций Git».

Чтобы ввести сведения о репозитории для частного репозитория с помощью SSH, выполните следующие действия.

  1. В разделе Репозиторий по умолчанию вставьте URI репозитория в поле URI.

  2. В разделе "Проверка подлинности" выберите "Изменить проверку подлинности".

  3. На панели Изменить проверку подлинности в раскрывающемся списке Тип проверки подлинности выберите SSH.

  4. Введите закрытый ключ. При необходимости укажите ключ узла и алгоритм ключа узла.

  5. Включите открытый ключ в репозиторий сервера конфигурации.

  6. Нажмите ОК, а затем Применить, чтобы завершить настройку экземпляра сервера конфигурации.

    Снимок экрана: портал Azure, в котором показан раздел репозитория по умолчанию параметров проверки подлинности для проверки подлинности SSH.

Дополнительные репозитории

Если вы хотите настроить службу с необязательным дополнительным репозиторием, выполните следующие действия.

  1. Укажите параметры URI и проверки подлинности, как и для репозитория по умолчанию. Не забудьте включить параметр имени для шаблона.
  2. Выберите Применить, чтобы присоединить репозиторий к вашему экземпляру.

Настройка репозитория Git путем импорта YAML-файла

Если вы написали ФАЙЛ YAML с параметрами репозитория, вы можете импортировать файл непосредственно с локального компьютера в Azure Spring Apps. В следующем примере показан простой ФАЙЛ YAML для частного репозитория с базовой проверкой подлинности:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/azure-spring-apps-samples-pr/config-server-repository.git
          username: <username>
          password: <password/token>

Чтобы импортировать YAML-файл, выполните следующие действия.

  1. Выберите параметры импорта и выберите ФАЙЛ YAML из каталога проекта. Выберите Импорт.

    В панели уведомлений отображается async операция. Сервер конфигурации должен сообщать об успешном выполнении через 1–2 минуты. Сведения из файла YAML отображаются в портале Azure.

  2. Нажмите кнопку Применить, чтобы завершить импорт.

Настройка Azure Repos для сервера конфигурации

Azure Spring Apps может получить доступ к общедоступным репозиториям Git, защищенным с помощью SSH или обычной проверки подлинности HTTP. Обычная проверка подлинности HTTP — это самый простой из вариантов создания репозиториев и управления ими с помощью Azure Repos.

Получение URL-адреса репозитория и учетных данных

Чтобы получить URL-адрес и учетные данные репозитория, выполните следующие действия.

  1. На портале Azure Repos для вашего проекта выберите Клонировать.

  2. Скопируйте URL-адрес клона из текстового поля. Этот URL-адрес обычно находится в следующей форме:

    https://<organization name>@dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Удалите все после https:// и до dev.azure.comэтого, включая @ символ. Результирующий URL-адрес должен находиться в следующей форме:

    https://dev.azure.com/<organization name>/<project name>/_git/<repository name>
    

    Сохраните этот URL-адрес для последующего использования.

  3. Выберите "Создать учетные данные Git" , чтобы отобразить имя пользователя и пароль. Сохраните это имя пользователя и пароль для использования в следующем разделе.

Настройка репозитория Git для сервера конфигурации

Чтобы настроить репозиторий, выполните следующие действия.

  1. Войдите на портал Azure.

  2. Перейдите на страницу Обзор Azure Spring Apps.

  3. Выберите службу для настройки.

  4. В левой области страницы службы в разделе "Параметры" выберите вкладку "Сервер конфигурации Spring Cloud".

  5. Чтобы настроить созданный репозиторий, выполните следующие действия.

    • Добавьте URI репозитория, сохраненный ранее.
    • Выберите параметр в разделе "Проверка подлинности", чтобы открыть панель "Изменить проверку подлинности".
    • Для типа проверки подлинности выберите HTTP Basic.
    • Для имени пользователя укажите имя пользователя, сохраненное ранее.
    • В поле "Пароль" укажите пароль, сохраненный ранее.
    • Нажмите кнопку "ОК", а затем дождитесь завершения операции.

    Снимок экрана портала Azure, на котором показаны параметры конфигурации репозитория по умолчанию с выделенными URI и типом проверки подлинности.

Привязка приложения к серверу конфигурации Spring Cloud

Используйте следующую команду, чтобы привязать приложение к Серверу конфигурации Spring Cloud, что позволяет приложению извлекать конфигурации из сервера конфигурации Config Server.

az spring config-server bind \
    --resource-group <resource-group> \
    --service <service-name> \
    --app <app-name>

Вы также можете настроить привязку приложения из портал Azure, как показано на следующем снимке экрана:

Снимок экрана портала Azure, показывающий страницу сервера конфигурации Spring Cloud с выделенным выпадающим списком для привязки приложения.

Примечание.

Эти изменения занимают несколько минут, чтобы распространиться на все приложения при изменении состояния сервера конфигурации.

При изменении состояния привязки или отмены привязки необходимо перезапустить или повторно развернуть приложение.

Теперь вы можете привязать приложение к серверу конфигурации Spring Cloud непосредственно при создании нового приложения с помощью следующей команды:

az spring app create \ 
    --resource-group <resource-group> \ 
    --service <service-name> \ 
    --name <app-name> \ 
    --bind-config-server

Вы также можете привязать приложение к серверу конфигурации Spring Cloud из портал Azure, как показано на следующем снимке экрана:

Снимок экрана: портал Azure, на котором показана страница

Удалите свою конфигурацию

Выберите "Сброс" на вкладке "Сервер конфигурации Spring Cloud", чтобы удалить существующие параметры. Удалите параметры сервера конфигурации, если вы хотите подключить экземпляр сервера конфигурации к другому источнику, например при переходе с GitHub на сервер Azure DevOps Server.

Обновление сервера конфигурации

При изменении свойств службы, используемые этими свойствами, должны быть уведомлены перед внесением изменений. Решение по умолчанию для Сервера конфигурации Spring Cloud — вручную активировать событие обновления, которое может оказаться невозможным при наличии большого количества экземпляров приложения. Дополнительные сведения см. в разделе "Централизованная конфигурация"

Вместо этого можно автоматически обновить значения из сервера конфигурации, предоставив клиенту конфигурации опрос изменений на основе внутреннего обновления.

Выполните следующие действия для автоматического обновления значений с сервера конфигурации.

  1. Зарегистрируйте запланированную задачу для обновления контекста в заданном интервале, как показано в следующем примере:

    @ConditionalOnBean({RefreshEndpoint.class})
    @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 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(), refreshInterval * 1000);
            }
        }
    }
    
  2. Включите autorefresh и задайте соответствующий интервал обновления в файле application.yml . В следующем примере клиент опрашивает изменения конфигурации каждые 60 секунд, что является минимальным значением, которое можно задать для интервала обновления.

    По умолчанию для параметра autorefresh задано false значение, а интервал обновления имеет значение 60 seconds.

    spring:
        cloud:
             config:
              auto-refresh: true
              refresh-interval: 60
    management:
        endpoints:
             web:
              exposure:
                include:
                  - refresh
    
  3. Добавьте @RefreshScope в код. В следующем примере переменная connectTimeout автоматически обновляется каждые 60 секунд.

    @RestController
    @RefreshScope
    public class HelloController {
        @Value("${timeout:4000}")
        private String connectTimeout;
    }
    

Дополнительные сведения см. в примере config-client-polling.

Управление сервером конфигурации Spring Cloud в существующем экземпляре плана предприятия

После создания службы можно включить и отключить сервер конфигурации Spring Cloud с помощью портал Azure или Azure CLI. Перед отключением сервера конфигурации Spring Cloud необходимо отменить привязку всех приложений из него.

Чтобы включить или отключить сервер конфигурации Spring Cloud, выполните следующие действия.

  1. Перейдите к экземпляру вашей службы, а затем выберите Spring Cloud Config Server.

  2. Выберите Управление.

  3. Выберите или отмените выбор включения сервера конфигурации Spring Cloud, а затем выберите Сохранить.

    Снимок экрана: портал Azure, на котором показана панель

  4. Теперь можно просмотреть состояние сервера конфигурации Spring Cloud на странице сервера конфигурации Spring Cloud.

Azure Spring Apps