Azure - варианты миграции для перемещения веб-заданий из ASE в Kubernetes (AKS)

Я очень новичок в разработке на Azure и работаю над существующим облачным решением Azure, в котором Service Bus получает сообщения от пользовательского интерфейса, а события сообщений запускают веб-задания Azure (по требованию) в различных точках решения.

Похоже на это: введите описание изображения здесь

Мы размещаем большинство частей решения на ASE, и план состоит в том, чтобы вместо этого перейти с ASE на Kubernetes (AKS) (на данный момент я настроил AKS с Windows в качестве ОС, чтобы начать играть с ним).

Какие есть варианты для перемещения веб-заданий с ASE на AKS? ОС имеет отношение к опциям? Можно ли установить WebJobs SDK в кластере AKS для запуска WebJobs (и выполняются ли они, например, из служебной шины)? Я знаю, что вы можете настроить запланированные задания, но что будет эквивалентно веб-заданиям по требованию (долго выполняющиеся процессы).

Любой совет высоко ценится. У нас аналогичная миграция функций Azure, но я думаю, что если я пойму, как переносить веб-задания, функции, естественно, пойдут по тому же пути.

1 ответ

Потратив больше времени на это, вот некоторая информация, которая помогла мне (из приведенного выше вопроса видно, что в моем понимании есть пробелы, медленное наращивание моих знаний и публикация в случае, если это полезно для других).

Перемещение WebJobs с ASE - это не так просто, как предполагает мой вопрос. По сути, сами WebJobs выводят exe и необходимые библиотеки, аналогично выводу приложения из командной строки. WebJobs (их код) запускают "JobHost" в методе Main, в котором хост ожидает триггеры для запуска заданий внутри. Похоже на то, как службы WCF размещались в службе Windows несколько лет назад.

Имея это в виду, во-первых, WebJob .exe может быть запущен на локальной операционной системе. Поскольку мы используем.NET Framework версию WebJobs, мы можем развертывать только в Windows (возможно, с Mono можно работать в Linux, но сейчас я говорю, что Windows только для простоты). Если бы мы создавали WebJobs с использованием.net Core, то, возможно, они могли бы быть размещены на хост-системах Windows или Linux.

Во-вторых, мы хотим "контейнеризовать" скомпилированный вывод WebJob - поэтому необходимо создать образ докера, содержащий WebJob и зависимости, чтобы его можно было развернуть в кластере (это точка, в которой я сейчас нахожусь и пытаюсь определить файл докера). Узнайте больше о Docker Containers здесь.

В-третьих, сам кластер. Я упомянул AKS. Есть и другие варианты, такие как Service Fabric, но это проприетарный SDK от Microsoft, поэтому, возможно, лучше пока держаться подальше. Вы можете развернуть свой образ докера, содержащий ваш WebJob .exe (и библиотеки), в свой кластер, как вам нужно. Кластер может управлять масштабированием ваших контейнеров по мере необходимости. ПРИМЕЧАНИЕ: вы можете запустить Minikube локально, что помогает разобраться

Это описание высокого уровня, но разъясняет мой вопрос выше и дает некоторую информацию, которая мне показалась полезной. Надеюсь, помогает тем, кто доверяет DevOps!:)

Другие вопросы по тегам