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!:)