Девтрон спонсировал этот пост. Insight Partners является инвестором в Devtron и TNS.
Обещание Kubernetes — ловкость, масштабируемость и надежность — привело к тому, что его широко распространенное принятие на предприятиях. Годовое обследование Cloud Native Computing Foundation 2024 сообщило, что 93% организаций либо используют, либо оценивают его.
Тем не менее, развертывание и управление приложениями в средах Kubernetes было далеко не статично. Организации претерпели значительную эволюцию, от элементарных начинаний до автоматизированных практик. Эта эволюция изменила вопрос для организаций из «Можем ли мы запускать приложения на Kubernetes?» «Как оптимизировать доставку приложений в сложных средах Kubernetes?»
Давайте рассмотрим путешествие, которое большинство организаций прошли для достижения совершенства в развертываниях Kubernetes и управлении приложениями.
Начало путешествия — Каубернеты проявляются
Путешествие каждой организации в Kubernetes обычно начинается с одной вещи: файлы YAML — и их много. Эти манифесты Kubernetes являются основополагающими, предлагая подробный, декларативный контроль над каждым аспектом развертывания. От настройки ресурсов до определения поведения сервиса файлы YAML служат планом для развертывания и управления приложениями в Kubernetes. Вот образец манифеста для объекта развертывания.
Каубернеты проявляются (Пример-app.yaml)
« `Apiversion: Apps/V1 Kind: Развертывание Метаданные: Имя: Пример -Апп Спецификация: Replicas: 3 Селектор: Matchlabels: Приложение: Пример шаблон: метадата: Метки: Приложение: Пример Спецификация: Контейнеры: — Имя: Приложение Изображение: Пример: 1.0.0. 123456789101112131415161718192021 « `Apiversion: Apps/v1kind: DeploymentMetadata: имя: Пример-Appspec: Replicas: 3 Селектор: MatchLabels: App: Пример. — Containerport: 8080«
Тем не менее, эти калики Kubernetes выявили свои ограничения в масштабе. Когда организация решила масштабироваться в Kubernetes, управление этими манифестами Kubernetes начало становиться узким местом.
Некоторые ключевые ограничения, с которыми сталкивались организации, были:
- Задача контроля версий: Отслеживание изменений в сотнях файлов YAML становится кошмаром обслуживания.
- Конфигурация дрейф: Вариации, специфичные для окружающей среды, умноженно умноженно.
- Отсутствие стандартизации: Различные команды разрабатывают свои манифестные закономерности, создавая организационные бункеры.
- Управление безопасности: Обеспечение постоянного контроля безопасности становится практически невозможным.
- Оперативная сложность: Устранение неполадок требует глубокого погружения в необработанные файлы YAML.
Эти ограничения подчеркнули необходимость более высокого уровня абстракции в верхней части проявлений Kubernetes, которые могут помочь организациям управлять файлами YAML более эффективно, обеспечивая при этом стандартизированный способ работы, и все это без ущерба для мощности и гибкости Kubernetes.
Стандартизация манифестов Kubernetes — Helm
Появление Helm, менеджера пакетов для Kubernetes, ознаменовало значительный шаг вперед в оркестровании Kubernetes. Он представил концепцию диаграмм, которые объединяют все необходимые ресурсы Kubernetes в единый многоразовый пакет. Способность шаблонов Helm Dicarts облегчает командам управлять конфигурацией и обеспечить настройку развертывания крупных приложений. Развертывание сложных приложений стало меньше в отношении управления индивидуальными манифестами, а больше о управлении четко определенными, версионными артефактами. Для организаций это приводит к улучшению согласованности по окружающей среде и способности более эффективно определять управление жизненным циклом.
Хелм -диаграмма
MyChart |- chart.yaml |- диаграммы |- шаблоны | |- Note.txt | |- _Helpers.tpl | |- развертывание.yaml | |- Ingress.yaml | `- service.yaml`- values.yaml 12345678910 MyChart |- chart.yaml |- диаграммы |- шаблоны | |- Note.txt | |- _Helpers.tpl | |- развертывание.yaml | |- Ingress.yaml | `- service.yaml`- values.yaml
Однако для зрелых организаций, работающих в масштабе, принятие руля часто раскрывает определенные ограничения, которые требуют тщательного рассмотрения:
- Сложность логики шаблона: В то время как шаблон предлагает гибкость, чрезмерно сложные диаграммы хлеб могут стать трудно понять, поддерживать и отлаживать.
- Сложность в управлении вложенными диаграммами: Пользователи часто сталкиваются с трудностями при работе с сильно вложенными графиками Helm. Понимание, на каком уровне устанавливает значения в файле values.yaml, может сбивать с толку, особенно при работе с восходящими диаграммами, которые имеют свои архитектуры.
- Отсутствие автоматического рабочего процесса развертывания: Руководитель в основном фокусируется на упаковке и развертывании предварительных артефактов приложения (диаграммы). Он по своей сути не определяет и не автоматизирует процесс создания этих артефактов из исходного кода, запуска тестов или управления конвейером выпуска в разных средах.
- Отсутствие видимости и мониторинга: Helm CLI не предоставляет встроенный механизм для просмотра здоровья и состояния приложений, развернутых через его диаграммы.
Со всеми плюсами и минусами управления он дал организациям путь вперед, чтобы развернуть и управлять своим приложением по Kubernetes упрощенным способом, который обрабатывает множество необработанных Kubernetes.
автоматизация трубопроводов — интеграция CI/CD
К тому времени, когда Kubernetes получил широкое распространение, организации уже выяснили, как развернуть и запустить свои приложения. Следующая задача больше не была в том, как запускать приложения, а о том, как вносить частые изменения в эти все более сложные среды Kubernetes.
Чтобы получить конкурентное преимущество и быстро соответствовать развивающимся требованиям клиентов, организациям необходимы для выпуска новых функций и исправлений ошибок с увеличением частоты, часто несколько раз в день. Это потребовало интеграции трубопроводов CI/CD в рабочие процессы Kubernetes.
С помощью CI/CD организации автоматизировали процесс создания, тестирования и развертывания. Использование инструментов для применения манифестов или диаграмм русла значительно уменьшило ручные ошибки и ускоренное время на рынке. Такие инструменты, как Jenkins и Circle CI, использовались для создания приложений и для развертывания, а Kubectl или Helm были единственными вариантами. Позже, возможности организации Jenkins расширили использование Jenkins для выполнения Kubectl Apply и обновления тега изображения в значениях.
Подход Gitops
Чтобы укрепить часть развертывания, подход, специально предназначенный для Kubernetes: Gitops. Он определяет четыре основных столпах выполнения развертываний специально на Kubernetes:
- Декларатив
- Версия и неизменная
- Вытянут автоматически
- Непрерывно примиряется
Gitops предлагает убедительные преимущества в повышении безопасности (аудиторские маршруты, неподвижная инфраструктура), улучшение соответствия (декларативное состояние) и повышенную эксплуатационную устойчивость (автоматическое примирение и самовосстановление).
Содействие принятию Gitops для команд Kubernetes, такие инструменты, как CD Argo CD и Flux CD обеспечивают необходимую автоматизацию и контроль для декларативного, версированного и непрерывного согласованного развертывания.
Позже, чтобы повысить надежность развертывания и обновлений Kubernetes, появилась концепция прогрессивных развертываний. Этот подход внедрил различные стратегии развертывания, предназначенные для минимизации сбоев во время обновлений приложений. Усовершенствованные методы, такие как сине-зеленый и канарейский развертывание, стали ключевыми методами достижения бесшовных развертываний.
Новое узкое место
На этом этапе эволюция развертываний Kubernetes выглядит логически завершенным: начиная от необработанных Kubernetes, до оркестрирующей мощности руля, автоматизации CI/CD и, наконец, Gitops для надежного развертывания изменений.
Это может быть идеальной картиной для команд, работающих в небольших масштабах, но когда масштаб увеличивается, ставки высоки, а вышеприведенная так называемая идеальная картина становится узким местом. Команды теперь должны иметь дело с новым вызовом: разрастание инструментов. Даже если у вас есть исключительная команда по операциям, теперь они могут использовать инструменты на разных уровнях для абстрактных сложностей и плавно работать с несколькими инструментами.
Но как насчет разработчиков, которые должны развернуть свой код несколько раз в различных средах в течение жизненного цикла разработки? От локальных установок до общих Dev и стационарных экземпляров, ландшафт развертывания для разработчиков часто остается далек от оптимизированных.
Подход к платформе
Для большинства технических организаций, достигающих значительных масштабов, неотъемлемая сложность облачных нативных технологий представила двойную проблему. Операционные команды все более обременяны набором инструментов, в то время как разработчики быстро и эффективно боролись с трением кода развертывания.
Эта ситуация создала порочный цикл: разработчики постоянно поднимали билеты на настройку трубопроводов, в то время как операционные команды боролись под монтажным отставанием. Разочарование разработчика рос с каждой задержкой, в конечном итоге, наносящих ущерб производительности организации и побеждая повышение эффективности, которые Kubernetes предназначался для обеспечения.
В 2010 году отраслевые гиганты, такие как Airbnb, Netflix и Google, начали создавать свои собственные внутренние платформы, предназначенные для того, чтобы помочь разработчикам и операционным командам работать более эффективно. Подход платформы заключался в том, чтобы упростить вещи для разработчиков и уменьшить их когнитивную нагрузку, где подход самообслуживания идеально подходит.
Ландшафт платформ значительно развился, с несколькими платформами, которые решают эти проблемы с обеих сторон. Для разработчиков они предоставляют возможности самообслуживания и интуитивно понятные абстракции на нескольких уровнях, устраняя время ожидания. Для операционных команд они консолидируют инструменты под унифицированным уровнем управления, обеспечивая управление, не становясь узким местом.
Одной из таких платформ является Devtron, решение для управления жизненным циклом Kubernetes. Его интуитивно понятный пользовательский интерфейс устраняет сложность для разработчиков, обеспечивая подход самообслуживания, который дает им возможность развертывать приложения в окружающей среде через трубопроводы CI/CD с поддержкой Gitops, не требуя эксплуатационного вмешательства. Одновременно Devtron решает эксплуатационные проблемы путем консолидации разрозненных инструментов под унифицированным интерфейсом, предлагая одну панель стекла для управления несколькими кластерами Kubernetes.
Заключение
Путь развертывания и управления приложениями на Kubernetes был динамической эволюцией, отмеченной повышением уровня абстракции и автоматизации. Организации постоянно искали более эффективные, надежные и масштабируемые методы, от основополагающего контроля необработанных манифестов до оркестровки платформ. Хотя значительный прогресс был достигнут в оптимизации этих процессов как для команд по разработке, так и для операций, путешествие продолжается, обусловленное постоянно развивающимися требованиями современной доставки программного обеспечения.
Devtron глубоко интегрируется с продуктами на протяжении жизненного цикла микросервисов, IE, CI/CD, безопасности, стоимости, отладки и наблюдаемости через интуитивно понятный веб -интерфейс. Devtron помогает вам развернуть, наблюдать, управлять и отлаживать существующие приложения Helm во всех ваших кластерах. Insight Partners является инвестором в Devtron и TNS. Узнайте больше последних из Devtron Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Bhushan Nemade-евангелист OSS в Devtron, увлеченный вождением внедрения и инноваций с открытым исходным кодом. Он любит участвовать в проектах с открытым исходным кодом и писать о них, чтобы расширить возможности сообщества. Узнайте больше от Bhushan Nemade