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


Функции Azure в Kubernetes с KEDA

Среда выполнения Функций Azure обеспечивает гибкость при размещении в соответствии с вашими требованиями. KEDA (управляемое событиями автоматическое масштабирование на основе Kubernetes) легко интегрируется со средой выполнения Функций Azure и инструментами для обеспечения масштабирования на основе событий в Kubernetes.

Внимание

Запуск контейнерных приложений-функций в Kubernetes с помощью KEDA или прямого развертывания — это работа с открытым кодом, которую можно использовать бесплатно. Поддержка лучших усилий предоставляется участниками и сообществом с помощью проблем GitHub в репозитории Функции Azure. Используйте эти проблемы, чтобы сообщить об ошибках и вызвать запросы на функции. Для управляемых развертываний Kubernetes вместо этого рассмотрите возможность размещения приложений контейнеров Azure Функции Azure.

Принципы работы функций на основе Kubernetes

Служба "Функции Azure" состоит из двух ключевых компонентов: среды выполнения и контроллера масштабирования. Среда выполнения Функций запускает и выполняет код. Среда выполнения включает в себя логику для активации, ведения журнала и управления выполнением функций. Среда выполнения Функций Azure может быть запущена где угодно. Второй компонент — контроллер масштабирования. Контроллер масштабирования отслеживает скорость событий, предназначенных для функции, и заранее масштабирует количество экземпляров, в которых выполняется приложение. Дополнительные сведения см. в статье Масштабирование и размещение Функций Azure.

Функции на основе Kubernetes предоставляют среду выполнения Функций в контейнере Docker с масштабированием на основе событий через KEDA. KEDA может уменьшать горизонтальный масштаб до 0 экземпляров (при отсутствии событий) или увеличивать его до n экземпляров. Это достигается за счет предоставления пользовательских метрик для средства автомасштабирования Kubernetes (средство горизонтального автомасштабирования pod). Использование контейнеров Функций с KEDA позволяет реплицировать возможности бессерверных функций в любом кластере Kubernetes. Эти функции также можно развернуть с помощью компонента виртуальных узлов Azure Kubernetes Services (AKS) для бессерверной инфраструктуры.

Управление KEDA и функциями в Kubernetes

Для запуска Функций в кластере Kubernetes необходимо установить компонент KEDA. Данный компонент можно установить одним из следующих способов.

  • Azure Functions Core Tools: с помощью команды func kubernetes install.

  • Helm: существует несколько способов установки KEDA в любом кластере Kubernetes, включая Helm. Варианты развертывания описаны на сайте KEDA.

Развертывание приложения-функции в Kubernetes

Вы можете развернуть любое приложение-функцию в кластере Kubernetes с KEDA. Так как функции выполняются в контейнере Docker, вашему проекту требуется Dockerfile. Можно создать Dockerfile с помощью параметра --docker, указываемого при вызове func init для создания проекта. Если вы забыли это сделать, вы всегда можете снова выполнить вызов func init из корня проекта Функций, на этот раз указав параметр --docker-only, как показано в следующем примере.

func init --docker-only

Дополнительные сведения о создании Dockerfile доступны в справочных материалах func init.

Чтобы создать образ и развернуть функции в Kubernetes, выполните следующую команду:

func kubernetes deploy --name <name-of-function-deployment> --registry <container-registry-username>

В нашем примере замените <name-of-function-deployment> именем реального приложения-функции.

Команда deploy выполняет следующие действия:

  1. Созданный ранее Dockerfile используется для сборки локального образа для приложения-функции.
  2. Локальный образ помечается и передается в реестр контейнеров, где пользователь вошел в систему.
  3. Манифест создается и применяется к кластеру, который определяет ресурсы Kubernetes Deployment, ScaledObject и Secrets, включая переменные среды, импортированные из вашего файла local.settings.json.

Дополнительные сведения см. в описании команды func kubernetes deploy.

Развертывание приложения-функции из частного реестра

Приведенный выше поток подходит и для частных реестров. Если вы извлекаете образ контейнера из частного реестра, включите флаг --pull-secret, который ссылается на секрет Kubernetes, содержащий учетные данные частного реестра при запуске func kubernetes deploy.

Удаление приложения-функции из Kubernetes

После развертывания можно удалить функцию, удалив связанный Deployment, ScaledObject, созданный Secrets.

kubectl delete deploy <name-of-function-deployment>
kubectl delete ScaledObject <name-of-function-deployment>
kubectl delete secret <name-of-function-deployment>

Удаление KEDA из Kubernetes

Удалить KEDA из кластера можно одним из следующих способов:

Поддерживаемые триггеры в KEDA

KEDA поддерживает следующие триггеры Функций Azure:

Поддержка триггеров HTTP

Вы можете использовать Функции Azure, которые предоставляют триггеры HTTP, но KEDA не управляет ими напрямую. Вы можете использовать триггер Prometheus KEDA, чтобы масштабировать Функции Azure HTTP от 1 до n экземпляров.

Next Steps

Дополнительные сведения см. на следующих ресурсах: