Почему оркестрация контейнеров важна?

Завершено

В этой единице вы можете следовать за командой Tailspin, исследуя стратегии выполнения новой директивы от руководства. Команда изучает, как Kubernetes может помочь в переходе на архитектуру микрослужб.

Будущее становится компактнее

Дела в Tailspin идут на лад. На недавней выездной встрече руководства Энди представил достижения своей команды в работе с Azure DevOps, которые были высоко оценены. Энди также представил демонстрацию недавнего проекта команды подтверждения концепции с помощью контейнеров Docker. Эти демонстрации привели к серии продуктивных бесед по техническому будущему организации. На следующий день Энди возвращается, чтобы поделиться новостями с веб-командой Space Game.

Энди: Всё прошло действительно хорошо на моей внешней презентации вчера. Управление впечатлено работой, которую мы сделали до сих пор, и выдал нам специальное задание.

Тим: Ух. Я прожил достаточно долго, чтобы увидеть такую ловушку издалека.

Энди: Нет, это отличная возможность для нас. Управление любило демонстрацию контейнера Docker и хочет, чтобы мы изучили архитектуру микрослужб.

Амита: микросервисы? Любите приложения для телефонов и часов?

Энди: нет, микрослужбы являются типичными приложениями, такими как наше веб-приложение. Основное отличие заключается в том, что вместо создания и развертывания единого монолитного приложения мы рефакторируем те компоненты, которые лучше поддерживать и управлять как автономными сервисами. Затем мы разрабатываем эти службы, чтобы они отлично справлялись со своими задачами, и развертываем их для самостоятельной работы.

Тим: я не уверен, что мне это нравится. Я уже имею дело с таким количеством услуг в наших системах. Я не уверен(а), нужно ли мне брать на себя больше дел.

Энди: это понятная озабоченность. К счастью, есть некоторые отличные средства для управления множеством контейнеров в данной среде. Нам было предложено разработать многоконтейнерное решение для нашего веб-приложения, которое управляется с помощью Kubernetes. Они также хотят знать, как это повлияет на наш процесс DevOps.

Мара: Я изучала Kubernetes. Azure имеет отличную поддержку через службу Azure Kubernetes, и я знаю, что в Azure DevOps есть поддержка для конвейеров.

Амита: этот процесс кажется сложным. Как это повлияет на тестирование?

Мара: это не должно быть значительным изменением. Kubernetes предлагает нам способ развертывания в разные пространства имен. Это позволяет нам разделять наши развертывания так, чтобы можно было выделить целые среды для тестирования и для рабочей эксплуатации. И так как все они выполняются в одном кластере и используют одни и те же контейнеры, интерфейс тестирования должен предложить то, что мы ожидаем видеть в рабочей среде.

Амита: Будет ли трудно отслеживать, какая среда где находится?

Мара. Нет, мы можем использовать среды Azure DevOps для выполнения всех этих действий. Вы сможете найти, где находится каждый сервис и как он туда попал, используя портал. Все это автоматизировано через конвейер, поэтому нам ничего не придется отслеживать вручную. Единственная вещь, которая беспокоит меня в настоящее время, это насколько сильно это повлияет на наш процесс разработки при создании этого.

Энди: Хорошая новость — влияние минимально. Если у нас есть проекты, настроенные для создания контейнеров Docker, то всё, что нам нужно для развертывания в Kubernetes — это манифестные файлы, описывающие службы и их развертывания.

Мара: Вы думали о том, что мы будем рефакторить как второй контейнер? Я знаю, что несколько команд попросили нас сделать наш список лидеров доступным через веб-API.

Энди: я на шаг впереди вас. Вчера вечером я сделал форк проекта Docker и перефакторил функциональность таблицы лидеров в отдельную микрослужбу. Это оставляет нас с одним контейнером для веб-сайта и другим для API таблицы лидеров. Оба контейнера настроены на использование собственных общедоступных конечных точек, которыми мы можем поделиться с любым, кто хочет использовать сайт или API независимо от того, какой стек технологий использует свое приложение. Если нагрузка значительно увеличивается для любого из них, мы можем масштабировать их контейнеры независимо друг от друга.

Мара: этот проект звучит потрясающе! Давайте приступим к обновлению конвейера выпуска.

Что такое Kubernetes?

Kubernetes — это платформа оркестрации контейнеров с открытым кодом, которая автоматизирует развертывание, масштабирование и управление контейнерными приложениями. Она предоставляет платформу для запуска распределенных систем в декларативной, адаптивной форме и может запускать контейнеры на нескольких узлах, обеспечивая эффективное использование ресурсов и повышенную надежность.

Команда Tailspin выбрала Kubernetes для этого сценария, так как она соответствовала всем своим потребностям:

  • Сложность развертываний с несколькими контейнерами: Kubernetes разработан, прежде всего, для автоматизации процессов при развертывании и обслуживании развертываний контейнеров.

  • Согласованность между средами и этапами: так же, как контейнеры обеспечивают согласованное развертывание для приложений, содержащихся в них, Kubernetes обеспечивает согласованное развертывание для контейнеров, управляемых кластером.

  • Поддержка Azure DevOps: Azure DevOps предлагает поддержку первого класса для работы с Kubernetes.

  • Простота разработки: влияние Kubernetes на исходный проект сравнимо с добавлением поддержки Docker, которая является минимальной и ограниченной декларативной конфигурацией.

Внедрение Kubernetes значительно упрощает процесс внедрения архитектуры микрослужб, которая использует несколько контейнеров Docker.