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

Примечание.

Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.

Эта статья применима к: ✔️ 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://, git@https://или ssh://.
default-label No Метка по умолчанию репозитория Git. Должно быть имя ветви, имя тега или ИД фиксации в репозитории.
search-paths No Массив строк, используемых для поиска в подкаталогах репозитория Git.

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

Шаблоны Description
test-config-server-app-0/* Универсальный код ресурса (URI) шаблона и репозитория соответствует приложению test-config-server-app-0 Spring boot с любым профилем.
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.

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

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

Настройка репозитория 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. Выберите Проверить.

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

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

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

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

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

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

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

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

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

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

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

  1. В разделе Репозиторий по умолчанию вставьте URI репозитория в поле URI.
  2. В поле "Метка" введите конфигурацию.
  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 из каталога проекта. Выберите Импорт.

    Снимок экрана: портал Azure, на котором показана панель параметров импорта сервера конфигурации.

    Снимок экрана: портал Azure, на котором показана панель параметров импорта сервера конфигурации.

    В области уведомлений отображается 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