Служба приложений, Функции и Logic Apps в Azure Arc (предварительная версия)

Службу приложений, функции и Logic Apps можно запускать в кластере Kubernetes с поддержкой Arc Azure. Это может быть кластер Kubernetes, размещенный в локальной среде или в облаке стороннего поставщика. Такой подход позволяет разработчикам использовать все преимущества Службы приложений, сохраняя возможность поддерживать соответствие корпоративным требованиям благодаря тому, что приложения Службы приложений размещаются в собственной инфраструктуре. Другим операторам ИТ-систем это позволит защитить свои вложения в облачные решения, выполняя Службу приложений в уже существующих кластерах Kubernetes.

Примечание

Чтобы узнать, как настроить кластер Kubernetes для использования Службы приложений, Функций или Logic Apps, см. статью Создание среды Kubernetes для Службы приложений (предварительная версия).

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

Ограничения общедоступной предварительной версии

К средам Kubernetes для Службы приложений применяются следующие ограничения предварительной версии. Они будут обновляться по мере внесения изменений.

Ограничение Сведения
Поддерживаемые регионы Azure Восточная часть США, Западная Европа.
Сетевые требования в кластере Должен поддерживать тип службы LoadBalancer и предоставлять общедоступный статический IP-адрес
Требования к хранилищу кластеров Должен иметь доступ к классу хранения, подключенному к кластеру, для поддержки развертывания и сборки приложений на основе кода, если это применимо
Компонент: Сеть Недоступно (используйте сетевые возможности кластера)
Компонент: Управляемые удостоверения Недоступно
Компонент: Ссылки на хранилище ключей Недоступно (имеет зависимость от управляемых удостоверений)
Компонент: Вытягивание образов из Реестра контейнеров Azure с использованием управляемого удостоверения Недоступно (имеет зависимость от управляемых удостоверений)
Компонент: Редактирование Функций и Logic Apps в интерфейсе портала Недоступно
Компонент: Публикация FTP Недоступно
Журналы Log Analytics необходимо настроить как расширение кластера, а не отдельно для каждого сайта

Pod, создаваемые расширением Службы приложений

Если расширение службы приложений установлено в кластере Kubernetes с поддержкой дуги Azure, вы увидите несколько модулей Pod, созданных в указанном пространстве имен выпуска. Они нужны для того, чтобы кластер Kubernetes мог выполнять роль расширения для поставщика ресурсов Microsoft.Web в Azure, а также для использования приложений и управления ими. Вы также можете выбрать, нужно ли вместе с расширением устанавливать KEDA для масштабирования при определенных событиях.

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

Pod Описание:
<extensionName>-k8se-app-controller Основной pod оператора, который создает ресурсы в кластере и поддерживает состояние его компонентов.
<extensionName>-k8se-envoy Интерфейс уровня прокси для всех запросов уровня данных. Перенаправляет входящий трафик нужным приложениям.
<extensionName>-k8se-activator Альтернативное назначение перенаправления, которое помогает работе приложений, масштабированных до нулевого количества экземпляров, пока система восстанавливает первый рабочий экземпляр.
<extensionName>-k8se-build-service Поддерживает работу развертывания и поддерживает компонент расширенных инструментов.
<extensionName>-k8se-http-scaler Отслеживает объем входящих запросов, чтобы предоставлять в KEDA сведения о масштабировании.
<extensionName>-k8se-img-cacher Вытягивает заполнители и образы приложений в локальный кэш узла.
<extensionName>-k8se-log-processor Собирает журналы от приложений и других компонентов для отправки в Log Analytics.
placeholder-azure-functions-* Используется для ускорения холодной загрузки Функций Azure.

Среда Kubernetes для Службы приложений

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

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

Вопросы и ответы по Службе приложений, Функциям и Logic Apps в Azure Arc (предварительная версия)

Сколько это стоит?

Служба приложений в Azure Arc предоставляется бесплатно на период общедоступной предварительной версии.

Поддерживаются ли приложения Windows и Linux?

Поддерживаются только приложения на основе Linux (в формате исходного кода или пользовательских контейнеров). Приложения для Windows не поддерживаются.

Какие встроенные стеки приложений поддерживаются?

Поддерживаются все встроенные стеки Linux.

Все ли типы развертываний приложения поддерживаются?

Не поддерживается развертывание через FTP. В настоящее время не поддерживается также az webapp up. Поддерживаются все остальные методы развертывания, в том числе Git, ZIP, CI/CD, Visual Studio и Visual Studio Code.

Какие функции Службы приложений поддерживаются?

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

Поддерживаются ли функции сети?

Нет. Функции сети, например, гибридные подключения, интеграция с виртуальной сетью и ограничения по IP, не поддерживаются. Их нужно реализовать напрямую через правила сети в кластере Kubernetes.

Поддерживаются ли управляемые удостоверения?

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

Существуют ли ограничения масштабирования?

Все приложения, развернутые с помощью Службы приложений Azure в Kubernetes с поддержкой Azure Arc, могут масштабироваться в пределах базовых кластеров Kubernetes. Если для базового кластера Kubernetes недостаточно вычислительных ресурсов (в первую очередь ЦП и память), тогда приложения смогут масштабироваться только до того количества экземпляров приложения, которое Kubernetes может запланировать с использованием доступного ресурса.

Какие журналы собираются?

Все журналы системных компонентов и вашего приложения выводятся в стандартный поток вывода. Оба эти типа журналов можно собирать для анализа с помощью стандартных средств Kubernetes. Вы также можете настроить расширение Службы приложений для кластера с настроенной рабочей областью Log Analytics, и тогда все журналы будут отправляться в эту рабочую область.

По умолчанию журналы системных компонентов отправляются команде Azure. Журналы приложения не отправляются. Вы можете запретить передачу этих журналов, установив в конфигурации расширения параметр logProcessor.enabled=false. Это действие также отключает перенаправление приложения в рабочую область Log Analytics. Отключение обработчика журналов может снизить скорость ответов на запросы в службу поддержки, и вам будет предложено собрать журналы из стандартного выхода с помощью любых других средств.

Что делать, если я вижу ошибку регистрации поставщика?

При создании ресурса среды Kubernetes некоторые подписки могут видеть ошибку "Не удалось найти зарегистрированного поставщика ресурсов". В сведениях об ошибке могут быть указаны поддерживаемые расположение и версии API. В этом случае может понадобиться повторно зарегистрировать подписку с помощью поставщика Microsoft.Web. Эта операция не влияет на существующие приложения или API. Для повторной регистрации в Azure CLI выполните az provider register --namespace Microsoft.Web --wait. Затем повторите команду среды Kubernetes.

Можно ли развернуть расширение служб приложений в кластере на основе ARM64?

Кластеры на основе ARM64 в настоящее время не поддерживаются.

Заметки о выпуске расширения

Расширение служб приложений v 0.9.0 (Май 2021)

  • Первоначальная общедоступная Предварительная версия расширения служб приложений.
  • Поддержка развертываний на основе кода и контейнеров в приложениях для веб-приложений, функций и логики.
  • Поддержка среды выполнения веб-приложений — .NET 3,1 и 5,0; Node JS 12 и 14; Python 3,6, 3,7 и 3,8; PHP 7,3 и 7,4; Ruby 2,5, 2.5.5, 2,6 и 2.6.2; Java SE 8u232, 8u242, 8u252, 11,05, 11,06 и 11,07; Tomcat 8,5, 8.5.41, 8.5.53, 8.5.57, 9,0, 9.0.20, 9.0.33 и 9.0.37.

Расширение служб приложений v 0.10.0 (Ноябрь 2021)

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

  • Удалено требование предварительно назначенного статического IP-адреса, необходимого для назначения конечной точке делегата
  • Обновление Кеда до версии 2.4.0
  • Обновить делегат до версии v 1.19.0
  • Обновление среды выполнения функций Azure до версии 3.3.1
  • Задать число реплик по умолчанию для App Controller и Controller, равным 2, чтобы добавить дополнительную стабильность

Если ваше расширение находилось в стабильной версии, а для автоматического обновления — дополнительный номер версии, расширение будет автоматически обновляться. Чтобы вручную обновить расширение до последней версии, можно выполнить следующую команду:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.10.0

Дальнейшие шаги

Создание среды Kubernetes для Службы приложений (предварительная версия)