Настройка сайдкаров в Служба приложений Azure

В этой статье приведены практические шаги по включению и настройке сайдкаров в вашем приложении App Service.

Это важно

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

Создание сайдкара на портале Azure

  1. Перейдите к ресурсу службы приложений на портале Azure.
  2. Выберите Центр развертывания и перейдите на вкладку "Контейнеры ".
  3. Нажмите "Добавить контейнер", чтобы добавить sidecar.
  4. Укажите имя образа, проверку подлинности реестра (при необходимости) и переменные среды.
  5. Сохраните ваши изменения. Сайдкар будет развернут вместе с основным контейнером приложения.

Включить поддержку сайдкар для пользовательских контейнеров Linux

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

Снимок экрана, показывающий настройки контейнера приложения с настраиваемыми контейнерами, с выделенной кнопкой

С помощью Azure CLI преобразуйте веб-приложение в конфигурацию sitecontainers. Рассмотрим пример.

az webapp sitecontainers convert --mode sitecontainers --name <YourWebAppName> --resource-group <YourResourceGroup>

Это обновляет LinuxFxVersion на sitecontainers и включает поддержку шаблона сайдкара.

Вернуться к классическому настраиваемому контейнеру (Docker)

Если вам нужно вернуться с конфигурации с поддержкой сайдкаров на классическую настройку на основе Docker, выполните следующую команду.

az webapp sitecontainers convert \
  --mode docker \
  --name <app-name> \
  --resource-group <resource-group>

Эта команда удаляет все сайдкар-контейнеры и возвращает ваше приложение к использованию конфигурации классического DOCKER|<image> стиля. Полные сведения см. в документации Azure CLI для az webapp sitecontainers convert.

Для получения дополнительной информации см. Какие различия у пользовательских контейнеров с поддержкой sidecar?

Каковы различия для пользовательских контейнеров с поддержкой бокового автомобиля?

Приложения с поддержкой сайдкара настраиваются иначе, чем приложения без поддержки сайдкара.

  • Приложения с функцией LinuxFxVersion=sitecontainers Sidecar назначаются и конфигурируются с помощью ресурсов sitecontainers.
  • Приложения, которые не поддерживают функцию sidecar, настраивают имя и тип контейнера напрямую с помощью LinuxFxVersion=DOCKER|<image-details>.

Дополнительные сведения см. в az webapp config set --linux-fx-version.

Приложения, которые не поддерживают функцию сайдкар, настраивают основной контейнер с помощью параметров приложения, таких как:

  • DOCKER_REGISTRY_SERVER_URL
  • DOCKER_REGISTRY_SERVER_USERNAME
  • DOCKER_REGISTRY_SERVER_PASSWORD
  • WEBSITES_PORT

Эти параметры не применяются для приложений с поддержкой сайдкаров.

Определение боковой кареты с помощью шаблона ARM

Добавьте тип ресурса Microsoft.Web/sites/sitecontainers в приложение. Чтобы извлечь образ сайдкара из ACR с помощью управляемого удостоверения, назначенного пользователем, укажите authType как UserAssigned и предоставьте userManagedIdentityClientId.

{
  "type": "Microsoft.Web/sites/sitecontainers",
  "apiVersion": "2024-04-01",
  "name": "<app-name>/<sidecar-name>",
  "properties": {
    "image": "<acr-name>.azurecr.io/<image-name>:<version>",
    "isMain": false,
    "authType": "UserAssigned",
    "userManagedIdentityClientId": "<client-id>",
    "environmentVariables": [
      { "name": "MY_ENV_VAR", "value": "my-value" }
    ]
  }
}

Это важно

Только основной контейнер ("isMain": true) получает внешний трафик. В пользовательском приложении контейнера Linux с включенной поддержкой сайдкаров ваш основной контейнер имеет isMain, установленный на true. Все сайдкар-контейнеры должны иметь "isMain": false.

Дополнительные сведения см. в разделе Microsoft. Веб-сайты/sitecontainers.

Создание боковой кареты с помощью Azure CLI

Создайте приложение с поддержкой контейнерного сайдкара командой az webapp create. Рассмотрим пример.

az webapp create --name <app-name> --resource-group <group-name> --sitecontainers-app

Создайте контейнер бокового автомобиля с помощью az webapp sitecontainers create. Рассмотрим пример.

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --container-name <container> --image <image> --target-port <port>

Создайте контейнер-сайдкар с JSON-файлом:

az webapp sitecontainers create --name <app-name> --resource-group <group-name> --sitecontainers-spec-file <file-path>

Для всех команд sidecar см. az webapp sitecontainers.

Настройка переменных среды

В приложении Linux все контейнеры (основные и побочные) поддерживают общие переменные среды. Чтобы переопределить определенную переменную для сайдкара, добавьте ее в конфигурацию сайдкара.

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

Добавьте расширение сайдкар Redis

На портале Azure вы можете добавить дополнительный модуль Redis в ваше приложение для кэширования. Боковой автомобиль Redis предназначен только для упрощенного кэширования, а не замены для Azure Managed Redis.

Чтобы использовать сайдкар Redis, выполните:

  • В коде приложения задайте для redis строка подключения значение localhost:6379.
  • Настройте Redis в коде запуска приложения.
  • Используйте шаблоны кэширования для хранения и извлечения данных.
  • Проверьте, получите доступ к приложению и проверьте журналы, чтобы подтвердить использование кэша.

Добавьте расширение сайдкар Phi-3/Phi-4

На портале Azure вы можете добавить сайдкар-расширение Phi-3 или Phi-4 к своему приложению, чтобы предоставить локальную инферентную модель для рабочих нагрузок ИИ. Приложение должно находиться в ценовой категории, поддерживающей потребности вывода. Для неподдерживаемых уровней поддержки вы не видите опции дополнительных модулей Phi-3/Phi-4.

  • Сайдкар Phi-3/Phi-4 предоставляет доступ к API завершения чата в http://localhost:11434/v1/chat/completions.
  • После добавления бокового автомобиля начальный запуск может быть медленным из-за загрузки модели.
  • Чтобы вызвать API, отправьте запросы POST в эту конечную точку в том же стиле API завершения чата OpenAPI.

Полные пошаговые руководства см:

Доступ к боковику из основного контейнера или с другого бокового контейнера

Сайдкар контейнеры используют тот же сетевой хост, что и основной контейнер. Основной контейнер и другие побочные контейнеры могут достичь любого порта на побочном контейнере с использованием localhost:<port>. Например, если сайдкар прослушивает порт 4318, основное приложение может получить доступ к localhost:4318.

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

Добавить монтирование томов

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

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

  • Вложенный путь тома: Логический путь к каталогу, созданный службой приложений. Контейнеры с тем же подкаталогом разделяют файлы.
  • Путь монтирования контейнера: Путь к каталогу внутри контейнера, сопоставленный с подпутем тома.

Пример конфигурации:

Имя сайдкара Вложенный путь тома Путь монтирования контейнера Только для чтения
Контейнер1 /directory1/directory2 /container1Vol Неправда
Контейнер2 /directory1/directory2 /container2Vol Верно
Контейнер3 /directory1/directory2/directory3 /container3Vol Неправда
Контейнер4 /directory4 /container1Vol Неправда
  • Если контейнер1 создает /container1Vol/myfile.txt, Контейнер2 может считывать его с помощью /container2Vol/myfile.txt.
  • Если Контейнер1 создает /container1Vol/directory3/myfile.txt, Контейнер2 может считывать его с помощью /container2Vol/directory3/myfile.txt, а Контейнер3 может читать и записывать с помощью /container3Vol/myfile.txt.
  • Контейнер4 не предоставляет общий доступ к тому другим пользователям.

Замечание

Для приложений Linux, основанных на коде, встроенный контейнер Linux не может использовать монтирование томов.

Дополнительные ресурсы