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


Руководство по Подключение управляемому серверу конфигурации для Spring в приложениях контейнеров Azure (предварительная версия)

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

Сервер конфигурации для Spring использует репозиторий GitHub в качестве источника параметров конфигурации. Значения конфигурации предоставляются приложению-контейнеру через привязку между компонентом и приложением контейнера. По мере изменения значений на сервере конфигурации они автоматически передаются в приложение без необходимости повторной компиляции или повторного развертывания приложения.

Из этого руководства вы узнаете, как:

  • Создание компонента Config Server для Spring Java
  • Привязка сервера конфигурации для Spring к приложению-контейнеру
  • Просмотрите значения конфигурации до и после подключения сервера конфигурации к приложению
  • Шифрование и расшифровка значений конфигурации с помощью симметричного ключа

Внимание

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

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

Чтобы завершить этот проект, вам потребуется следующее:

Требование Instructions
Учетная запись Azure Требуется активная подписка. Если у вас нет учетной записи, вы можете создать ее бесплатно.
Azure CLI Установите интерфейс командной строки Azure.

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

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

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

Настройка

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

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

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

    export LOCATION=eastus
    export RESOURCE_GROUP=my-spring-cloud-resource-group
    export ENVIRONMENT=my-spring-cloud-environment
    export JAVA_COMPONENT_NAME=myconfigserver
    export APP_NAME=my-config-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest"
    export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
    
    «Переменная» Description
    LOCATION Расположение региона Azure, в котором создается приложение контейнера и компонент Java.
    ENVIRONMENT Имя среды "Приложения контейнеров Azure" для демонстрационного приложения.
    RESOURCE_GROUP Имя группы ресурсов Azure для демонстрационного приложения.
    JAVA_COMPONENT_NAME Имя компонента Java, созданного для приложения контейнера. В этом случае создается компонент Config Server для Spring Java.
    IMAGE Образ контейнера, используемый в приложении контейнера.
    URI Вы можете заменить URI URL-адресом репозитория Git, если это частный, добавьте связанные конфигурации проверки подлинности, такие как spring.cloud.config.server.git.username и spring.cloud.config.server.git.password.
  2. Войдите в Azure с помощью Azure CLI.

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

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  4. Создайте среду приложений контейнеров.

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

    Эта среда используется для размещения компонента Config Server для Spring и приложения контейнера.

Использование компонента Config Server для Spring Java

Теперь, когда у вас есть среда "Приложения контейнеров", вы можете создать приложение-контейнер и привязать его к компоненту Config Server for Spring. При привязке приложения-контейнера значения конфигурации автоматически синхронизируются с компонентом сервера конфигурации с приложением.

  1. Создайте компонент Config Server для Spring Java.

    az containerapp env java-component config-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --configuration spring.cloud.config.server.git.uri=$URI
    
  2. Обновите компонент Config Server для Spring Java.

    az containerapp env java-component config-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $JAVA_COMPONENT_NAME \
      --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
    

    Здесь вы сообщаете компоненту, где найти репозиторий, в котором хранятся сведения о конфигурации с помощью uri свойства. Свойство refresh-rate сообщает приложениям-контейнерам, как часто проверка изменений в репозитории Git.

  3. Создайте приложение-контейнер, использующее данные конфигурации.

    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 \
      --query properties.configuration.ingress.fqdn
    

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

    Если вы посещаете приложение в браузере, connectTimeout возвращаемое значением по умолчанию является значение 0по умолчанию.

  4. Привязка к серверу конфигурации для Spring.

    Теперь, когда создается приложение контейнера и сервер конфигурации, вы привязываете их вместе с командой к приложению update контейнера.

    az containerapp update \
      --name $APP_NAME \
      --resource-group $RESOURCE_GROUP \
      --bind $JAVA_COMPONENT_NAME
    

    Параметр --bind $JAVA_COMPONENT_NAME создает связь между приложением контейнера и компонентом конфигурации.

    После привязки приложения контейнера и компонента сервера конфигурации изменения конфигурации автоматически синхронизируются с приложением-контейнером.

    При повторном посещении URL-адреса приложения значение connectTimeout равно.10000 Это значение исходит из репозитория Git, установленного в $URI переменной, изначально заданной в качестве источника компонента конфигурации. В частности, это значение извлекается из connectionTimeout свойства в application.yml файле репозитория.

    Запрос привязки внедряет параметр конфигурации в приложение в качестве переменных среды. Теперь эти значения доступны коду приложения для получения параметров конфигурации с сервера конфигурации.

    В этом случае для приложения доступны следующие переменные среды:

    SPRING_CLOUD_CONFIG_URI=http://$JAVA_COMPONENT_NAME:80
    SPRING_CLOUD_CONFIG_COMPONENT_URI=http://$JAVA_COMPONENT_NAME:80
    SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI
    

    Если вы хотите настроить собственную SPRING_CONFIG_IMPORT, можно ссылаться на переменную SPRING_CLOUD_CONFIG_COMPONENT_URIсреды, например, можно переопределить аргументами командной строки, например Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true.

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

  5. Отмена привязки компонента Config Server для Spring Java.

    Чтобы удалить привязку из приложения-контейнера, используйте --unbind этот параметр.

    az containerapp update \
      --name $APP_NAME \
      --unbind $JAVA_COMPONENT_NAME \
      --resource-group $RESOURCE_GROUP
    

    При повторном посещении URL-адреса приложения значение изменений, возвращаемых connectTimeout в 0.

Очистка ресурсов

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

az group delete \
  --resource-group $RESOURCE_GROUP

Следующие шаги