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

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

Примечание

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

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

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

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

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

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

Когда расширение Службы приложений устанавливается в кластере Kubernetes с поддержкой Azure Arc, в указанном пространстве имен выпуска автоматически создаются несколько модулей 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 станут доступны варианты на панели навигации слева. Компоненты, которые еще не активированы, пока остаются неактивными.

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

Нет. Такие функции сети, как гибридные подключения и интеграция с виртуальной сетью, не поддерживаются. Поддержка возможностей ограничения доступа добавлена в апреле 2022 года. Их нужно реализовать напрямую через правила сети в кластере 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 в настоящее время не поддерживаются.

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

Расширение служб приложений версии 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.

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

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

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

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

Расширение служб приложений версии 0.11.0 (декабрь 2021 г.)

  • Добавлена поддержка Application Insights для веб-приложений Java и .NET
  • Добавлена поддержка веб-приложений .NET 6.0
  • Удален версия .NET Core 2.0
  • Устранены проблемы, вызвавшие сбой операций переключения слотов
  • Устранены проблемы, с которыми сталкиваются клиенты при создании веб-приложений Ruby

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

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

Расширение служб приложений версии 0.11.1 (декабрь 2021 г.)

  • Вспомогательный выпуск для устранения проблемы с обновлением CRD

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

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

Расширение служб приложений версии 0.12.0 (январь 2022 г.)

  • Поддержка исходящего прокси-сервера
  • Поддержка параллельных сборок в службе сборок
  • Обновление Envoy до версии 1.20.1
  • Устранена проблема с поддержкой Application Insights для приложений .NET

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

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

Расширение служб приложений версии 0.12.1 (март 2022 г.)

  • Устранена проблема с поддержкой исходящего прокси-сервера для включения ведения журнала в рабочей области Log Analytics

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

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

Расширение служб приложений версии 0.12.2 (март 2022 г.)

  • Обновление для устранения сбоев обновления при обновлении версии 0.12.0, если длина имени расширения превышает 35 символов

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

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

Расширение служб приложений версии 0.13.0 (апрель 2022 г.)

  • Добавлена поддержка бескодовой интеграции Application Insights для приложений Node.js.
  • Добавлена поддержка ограничения доступа с помощью CLI.
  • При сбое установки расширения предоставляется больше информации, чтобы помочь в устранении неполадок.

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

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

Расширение служб приложений версии 0.13.1 (апрель 2022 г.)

  • Выполнено обновление для устранения сбоев, наблюдаемых при автоматическом обновлении кластеров до версии 0.13.0

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

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

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

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