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

Завершено

В этом уроке вы можете следовать команде 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.

Проверьте свои знания

1.

Что из перечисленного не является веской причиной для использования микрослужб?

2.

Каковы сходства Docker и Kubernetes?

3.

Предположим, у вашей команды есть несколько проектов .NET Core в решении, которое создает несколько контейнеров Docker. Сколько дополнительных расходов требуется для добавления поддержки Kubernetes?