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


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

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

Внимание

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

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

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

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

Функции на основе Kubernetes предоставляют среду выполнения Функций в контейнере Docker с масштабированием на основе событий через KEDA. KEDA может масштабироваться до нуля экземпляров (если события не происходят) и выходить на 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 для создания проекта. Если вы забыли создать Dockerfile, вы всегда можете снова вызвать func init из корневого каталога проекта кода.

  1. (Необязательно) Если вам нужно создать Dockerfile, используйте func init команду с параметром --docker-only :

    func init --docker-only
    

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

  2. func kubernetes deploy Используйте команду для создания образа и развертывания контейнерного приложения-функции в Kubernetes:

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

    В нашем примере замените <name-of-function-deployment> именем реального приложения-функции. Команда развертывания выполняет следующие задачи:

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

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

Предыдущие шаги развертывания также работают для частных реестров. Если вы извлекаете образ контейнера из частного реестра, включите --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 не управляет ими напрямую. Триггер KEDA prometheus можно использовать для масштабирования HTTP-Функции Azure от одного до n экземпляров.

Next Steps

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