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


Настройка побочных карет в Службе приложений 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>

Это обновляет LinuxFxVersionsitecontainers и включает поддержку шаблона бокового автомобиля.

Возврат к классическому пользовательскому контейнеру (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.Web sites/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 Cache for Redis.

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

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

Добавьте дополнение sidecar для Datadog

На портале Azure можно добавить расширение Datadog в виде вспомогательного модуля для сбора журналов, метрик и трассировок для наблюдения без изменения кода вашего приложения. При добавлении расширения необходимо указать данные учетной записи Datadog, чтобы расширение-сайдкар могло передавать телеметрию непосредственно в Datadog.

Для приложений на основе кода:

  1. startup.sh Создайте скрипт для скачивания и инициализации трассировщика Datadog. Следующий скрипт является примером для приложения .NET:

    #!/bin/bash
    
    # Create log directory. This should correspond to the "Datadog Trace Log Directory" extension setting
    mkdir -p /home/LogFiles/dotnet
    
    # Download the Datadog tracer tarball
    wget -O /datadog/tracer/datadog-dotnet-apm-2.49.0.tar.gz https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.49.0/datadog-dotnet-apm-2.49.0.tar.gz
    
    # Navigate to the tracer directory, extract the tarball, and return to the original directory
    mkdir -p /datadog/tracer
    pushd /datadog/tracer
    tar -zxf datadog-dotnet-apm-2.49.0.tar.gz
    popd
    
    dotnet /home/site/wwwroot/<yourapp>.dll
    
  2. Задайте команду запуска в Службе приложений, чтобы запустить этот скрипт.

  3. Запустите приложение и убедитесь, что данные телеметрии отправлены, войдите на панель мониторинга Datadog.

Для приложений на основе контейнеров:

** Перед добавлением расширения «сайдкар» Datadog добавьте настройку трейсера Datadog в Dockerfile, аналогично примеру скрипта для приложений, основанных на коде.

Добавьте расширение сайдкар 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 не может использовать монтирование томов.

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