Развертывание в Kubernetes — это сложно
Возможно, вы можете себе это представить: Мы закончили кодирование веб-сайта и готовы к развертыванию. Мы знаем, что хотим развернуть его на Kubernetes, чтобы воспользоваться преимуществами хостинга промышленного масштаба, автоматической балансировки нагрузки, отказоустойчивости, масштабирования и т. д.
Но развертывание на Kubernetes — это сложно. Теперь нам придется отправиться в страну контейнеров, стручков, сервисов, ingress и yaml. Уф. «Я только что закончил веб-сайт. Я не хочу читать книгу только для того, чтобы заставить его работать». У Kubernetes слишком много опций и концепций: Pods, Deployments, ReplicaSets, Services, ConfigMaps. О, Боже! А yaml-файл Kubernetes действительно запутанный и специфический. Мне бы очень хотелось, чтобы развертывание веб-сайта в Kubernetes было проще.
Почему Jetpack.io
Jetpack.io — это решение с нулевым уровнем DevOps для развертывания в Kubernetes. Jetpack.io берет ваш код, упаковывает его в контейнер и публикует в Kubernetes. Jetpack.io также создает публичный URL-адрес, чтобы сайт был доступен из Интернета, и может передавать журналы приложений на ваш терминал. Все хлопоты, связанные с Kubernetes, исчезают, и мы можем сосредоточиться на нашем приложении.
В этом руководстве мы создадим сайт ASP.NET Core на C#, настроим его для Jetpack.io и развернем его в Kubernetes — и все это за 5 минут.
I. Создание приложения на C# и .NET
В этом примере мы быстро создадим приложение ASP.NET Core MVC. Вы можете изменить эти шаги, чтобы использовать существующий веб-сайт ASP.NET Core или создать сайт с помощью Razor Pages, Web API или Minimal APIs.
-
Откройте Visual Studio
-
Если диалог нового проекта не открывается автоматически, выберите File -> New Project.
-
Выберите ASP.NET (Model, View, Controller) и нажмите кнопку next.
-
Выберите хорошее имя для этого проекта и сохраните в удобном каталоге.
-
В разделе Дополнительная информация установите флажок Включить Docker и нажмите Создать.
Для корректной работы этой функции у вас должен быть установлен Docker Desktop.
Теперь у нас есть обычный сайт ASP.NET. Не стесняйтесь настраивать этот сайт под свои нужды.
II. Настройка приложения для Jetpack.io
Jetpack.io предполагает, что ваш веб-сервер работает на порту 8080
, но проект по умолчанию в ASP.NET работает на порту 80
. В этом разделе мы изменим Dockerfile, чтобы запустить веб-сайт на порту 8080
.
-
В Проводнике решений откройте Dockerfile.
-
Удалите 2 строки
EXPOSE
и добавьте новую строкуEXPOSE
:
- EXPOSE 80
- EXPOSE 443
+ EXPOSE 8080
- Прямо под строкой
EXPOSE
добавьте переменную окружения, указывающую ASP.NET Core запускаться на порту8080
.
EXPOSE 8080
ENV ASPNETCORE_URLS http://+:8080
+
указывает ASP.NET прослушивать все интерфейсы, а не только localhost.
-
Сохраните и закройте Dockerfile.
-
В проводнике Windows переместите Dockerfile из каталога проекта на 1 уровень вверх в каталог Solution.
Jetpack.io предполагает, что Dockerfile находится в вашем корневом каталоге.
III. Инициализация проекта с помощью Jetpack.io
Jetpack.io нуждается в некоторой начальной конфигурации, чтобы понять веб-сервер ASP.NET. Это нужно сделать только один раз для каждого сайта.
- Чтобы установить Jetpack CLI, откройте терминал и выполните команду
curl https://get.jetpack.io -fsSL | bash
Jetpack CLI работает на Linux, macOS и на Windows через WSL2.
- Войдите в Jetpack CLI:
jetpack auth login
Вход в Jetpack позволяет развертывать на кластере Jetpack.io Kubernetes. Вы также можете развернуть на своем собственном кластере в Azure, AWS, GCP или частной облачной учетной записи.
- Инициализируйте проект для Jetpack:
jetpack init
Этот мастер опросит вас и настроит стратегию развертывания Jetpack в соответствии с вашим приложением.
- Ответьте «Да, это веб-сервер». Это говорит Jetpack, что мы хотим принимать входящий трафик.
Если бы мы создавали запланированное задание cron или функцию, которая осушает очередь, мы могли бы ответить «нет».
- Завершите работу мастера, и Jetpack CLI автоматически создаст соответствующий файл
jetconfig.yaml
. Вы должны зафиксировать его в системе контроля исходного кода.
IV. Развертывание в Kubernetes с помощью Jetpack.io
Теперь, когда проект настроен для Jetpack, развертывание очень просто.
-
Откройте терминал в директории с Dockerfile и файлом jetconfig.yaml.
-
Разверните на Kubernetes:
jetpack dev
Теперь Jetpack делает развертывание очень простым. Это произойдет автоматически:
- Соберет образ Docker
- разместит образ в частном реестре
- Запланирует необходимые ресурсы Kubernetes
- Создаст публично маршрутизируемый URL-адрес для тестирования веб-сайта
- Настроить переадресацию портов с локальной машины
- Транслируйте журналы приложений обратно в терминал
- Протестируйте веб-сайт:
В выводе консоли будет указан публично маршрутизируемый URL. Щелкните этот URL-адрес, чтобы просмотреть веб-страницу.
Jetpack также настраивает переадресацию портов, поэтому вы также можете перейти на http://localhost:8080/ для просмотра страницы.
Это было просто
Развернуть приложение ASP.NET, созданное на C#, в Kubernetes с помощью Jetpack.io очень просто. В этом руководстве мы создали сайт, настроили его для Jetpack.io и использовали Jetpack.io для развертывания в Kubernetes. Jetpack.io — это отличное решение для развертывания в Kubernetes с нулевым уровнем DevOps. Посетите сайт https://jetpack.io/docs/, чтобы узнать больше и начать развертывать свой контент в Kubernetes с легкостью.