Visitors have accessed this post 4622 times.

Kubernetes: 6 секретов успешных команд

0
0
4622
29 января 2021 13:07
Автор: Rebrain Me
Kubernetes

Visitors have accessed this post 4622 times.

Перевод статьи https://enterprisersproject.com/article/2020/2/kubernetes-6-secrets-success

Kubernetes будет управлять контейнерами и приложениями за вас, но знаете ли вы, в чем заключается ваша роль? Вот шесть важных вещей, которые делают эффективные команды при успешном запуске Kubernetes в производственной среде.Kubernetes заработал репутацию мощной, но потенциально сложной платформы для управления современными приложениями и инфраструктурой. И не без причины. Это серьезный инструмент, но работе с ним нужно научиться. «Kubernetes — это сложно, особенно если вы ожидаете нулевого простоя при развертывании», — говорит Мэтью Дрезден, директор по DevOps в Nexient.

Kubernetes не обязательно предназначен для ваших обычных рабочих нагрузок, которые не требуют значительных операционных издержек. Скорее, Kubernetes — это средство для эффективного управления сложными решениями, связанными с облачным программным обеспечением и инфраструктурой, на которой оно работает. Если вы хотите уменьшить сложность проекта,  вы можете использовать сложные инструменты. Кроме того, по словам евангелиста Red Hat Гордона Хаффа, производственное развертывание Kubernetes — это гораздо больше, чем просто Kubernetes. Проект Kubernetes с открытым исходным кодом объединяет различные облачные инструменты и технологии, которые в совокупности работают для создания контейнерной платформы. Однако Хафф отмечает, что «на практике немногие компании готовы соединить все инструменты непрерывной доставки, мониторинга, трассировки, сети с Kubernetes, чтобы создать производственную платформу для написания и развертывания облачных приложений».

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

1. Начинают с малого и постепенно планируют больше

Для большинства компаний и команд не имеет смысла делать полномасштабное производственное развертывание. Ведь это не простой случай, когда «раньше мы использовали этот инструмент, а теперь — другой». Вам нужно выделить соответствующий бюджет для экспериментов и обучения, иначе вы рискуете «сгореть при крещении огнем». «[Высокопроизводительные команды] начинают с малого — сначала пробуют Kubernetes с приложениями, работа которых не критична, — говорит Нилеш Део, директор по маркетингу продуктов CloudBolt Software. — Как только они поймут, как все работает, они смогут масштабироваться и продвигаться к большей степени автоматизации». Есть множество способов начать учиться работе с Kubernetes. Например, Minikube, инструмент с открытым исходным кодом, который позволяет быстро запускать кластер на локальном компьютере.

«Не прыгайте сразу двумя ногами, — советует Део. — Потратьте время на то, чтобы лучше понять Kubernetes и то, как он изменит вашу архитектуру, стратегию и культуру». Если у вас большие долгосрочные планы на Kubernetes, планируйте последовательно. Это программа, а не колдовство. «К Kubernetes нужно подходить также, как и к любому хорошо спланированному проекту разработки программного обеспечения — это не единичное действие, когда установил и забыл, — говорит Дрезден. — Это означает грамотное проектирование программного обеспечения и методов работы в части оркестрации кластера, поддержки размещенных там приложений и обязательного автоматического тестирования, важной части процесса изменений. В противном случае K8s может весьма болезненно поломаться, и его не удастся восстановить по волшебству».

2. Думают о завтрашнем дне

Когда вы освоите основы, у вас может снова возникнуть соблазн сразу броситься в продакшн, поэтому давайте удвоим время на планирование. «Не спешите с первым развертыванием Kubernetes только потому, что это легко, — говорит Дрезден. — Поработайте заранее, чтобы спроектировать и автоматизировать, протестировать и измерить все, и убедитесь, что ваши изменения процессов касаются всех нужных областей». Дрезден и другие отмечают, что соблазн побежать до того, как научишься ходить, может быть особенно сильным с Kubernetes. Отчасти это происходит потому, что можно относительно легко начать работу в управляемой среде. Но это день 1. День 2, день 3 — вы все еще находитесь на крючке… Только убедитесь, что вы можете эффективно управлять своим кластером и нодами. Ну, вы поняли…

6 вопросов, которые нужно задать, чтобы избежать пожаров в производственной среде с Kubernetes

«Что происходит после этого первого развертывания — это часть с сюрпризами, особенно если ваши приложения сложны», — говорит Дрезден. Он перечисляет полдюжины вопросов, о которых, к примеру, думают успешные команды, чтобы не «тушить пожары» при запуске Kubernetes в прод:

  1. Как масштабировать кластер по вертикали и горизонтали?
  2. Как обновить контрольную панель и управляемые ноды в K8?
  3. Как увеличить объем хранилища или сети?
  4. Как деплоить обновления в приложениях?
  5. Как отслеживать показатель latency и реагировать на него?
  6. Как проверить все, что перечислено выше?

3. Упрощают, стандартизируют и автоматизируют везде, где это возможно

Вы можете использовать лучшие из доступных инструментов, в том числе Kubernetes, на протяжении всего процесса разработки программного обеспечения, но одно это не гарантирует успеха. Это особенно касается случая, когда увеличение скорости и частота развертываний — среди критериев успеха проекта, не говоря уже о таких «второстепенных» деталях, как обеспечение надежности и безопасности кода, который вы разворачиваете. «Сложность интеграции и развертывания облачного программного обеспечения, когда обновления выпускаются в течение нескольких дней или часов, превосходит способность разработчиков управлять ими вручную,  — говорит Гади Наор, основатель и технический директор Alcide. — Поэтому компании расширяют свои методы CI / CD, используя автоматизацию везде, где это возможно».

Наор отмечает, что автоматизация может применяться ко многим этапам вашего пайплайна, например, это могут быть автоматизированные системы сканирования кода для интеграции без багов, системы для развертывания кода в проде и инструменты для сканирования пайплайна на предмет нарушений безопасности. «Автоматизация, разумно примененная к пайплайну CI / CD, может значительно упростить этот процесс для разработчиков, обеспечив более плавный процесс разработки и более высокую скорость создания кода», — говорит Наор.По мнению Яны Йоси, тимлида DevOps в AllCloud, еще один способ автоматизации — это использовать все средства для упрощения и стандартизации.

«Сильная команда упрощает весь жизненный цикл деплоймента, — говорит Яна. — Например, используя настраиваемые темплейты для построения и развертывания кластера с помощью GitOps. И в дальнейшем мы получаем нужное состояние кластера без вмешательства человека».

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

«Цель организации — стандартизировать методы работы с контейнерами, Kubernetes, микросервисами и CI / CD», — говорит Яна.

4. Фокусируются на устойчивости и выявляют слабые места

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

«Успешные команды автоматизируют и тестируют все, используя декларативный код и динамически генерируемые спецификации конфигурации, — говорит Дрезден. — Помимо подтверждения пользователя, необходимого для авторизации изменения, все действия должны управляться тестируемым версионным кодом в системе контроля версий».

Чтобы перейти на следующий уровень, вам действительно нужно спровоцировать падение системы, а не ждать, пока оно произойдет. Некоторые называют это хаос-инженерией — дисциплиной тестирования, ставшей известной в ИТ-кругах благодаря Netflix.

«Умные команды также постоянно проверяют свою среду на отказоустойчивость, используя методы хаос-инженерии, — говорит Дрезден. — Добавьте непредвиденные простои во все аспекты доступности вашей службы и часто используйте их. У SRE есть инструменты для рандомизации отказов в зонах доступности кластера, сети и облака».

5. Не рассматривают Kubernetes как инструмент для любой работы

Учитывая растущую популярность Kubernetes, можно легко предположить, что успешные команды используют его везде и для всего. Не так. Вместо этого они спрашивают: а оно нам здесь нужно? Когда ответ «нет, на самом деле», они действуют соответственно. Значение имеет, подходит ли приложение?

«Kubernetes, конечно же, мощная платформа, предоставляющая систему для развертывания, управления и масштабирования микросервисов. Но несмотря на мощность Kubernetes, он может быть избыточен для многих рабочих нагрузок, — говорит Джонатан ЛаКур, технический директор Mission. — Прежде чем с головой окунуться в Kubernetes, внимательно рассмотрите свои требования, чтобы убедиться, что вы выбираете Kubernetes по правильным причинам. Если у вас рядовая рабочая нагрузка, выберите более простой путь».

Яна из AllCloud приводит один пример в контексте соответствия приложения: хотя вы можете поместить монолитное приложение в контейнер, это не обязательно лучшая идея.«Чтобы полностью использовать возможности Kubernetes, вам в большинстве случаев необходимо провести рефакторинг вашего монолита или сервиса, чтобы он стал настоящим микросервисом, [руководствуясь] 12-факторной [методологией], — говорит Яна. — Это позволит убедиться, что ваше приложение работает максимально гладко в Kubernetes, и вы сможете быстро масштабироваться и избегать плохих практик».

6. Серьезно относятся к безопасности

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

«Безопасность имеет первостепенное значение», — говорит Део из CloudBolt. В качестве ключевых примеров он указывает на встроенные функции Kubernetes, такие как управление доступом на основе ролей (RBAC) и общую практику безопасности управления идентификацией и доступом (IAM).

Бенджи Портной, директор DevSecOps в Aqua Security, считает, что успешная работа Kubernetes зависит от команды, которая осознает важность безопасности независимо от роли или должности. Вы могли догадаться об этом по названию его должности, но Портной также является сторонником культуры DevSecOps.

«DevSecOps может способствовать коллаборации, так что безопасность становится важной частью как жизненного цикла приложения, так и безопасности инфраструктуры, — говорит Портной. — Сложность развертываний Kubernetes и потенциально небезопасные настройки по умолчанию могут отрицательно сказаться на управлении безопасностью, в то время как традиционные инструменты, процессы и процедуры безопасности могут восприниматься как препятствие, если они не автоматизированы и не встроены в жизненный цикл приложения на ранней стадии».

Портной рекомендует использовать контрольные показатели Kubernetes Центра интернет-безопасности (CIS) для обеспечения безопасной настройки кластера.

Aqua также предлагает инструмент с открытым исходным кодом, kube-bench, чтобы проверить ваш кластер на соответствие лучшим практикам CIS. Независимо от того, какие инструменты и тактику вы выберете, бдительность в области безопасности является ключевым элементом для запуска Kubernetes и облачных технологий в прод.

«Организации должны постоянно отслеживать развертывание Kubernetes на предмет уязвимостей и угроз безопасности, следуя модели совместной ответственности между командами безопасности и DevOps», — говорит Портной.

От редакции

Если вам интересно посещать бесплатные онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN

*Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.

Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Устанавливаем дистрибутив NixOS
array(1) { [0]=> object(WP_Term)#11549 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор - Юрий Изоркин

Краткая справка из Wikipedia

NixOS — дистрибутив Linux, созданный поверх менеджера пакетов Nix. Он использует декларативную конфигурацию и позволяет надежно обновлять систему. Предлагаются два основных направления: текущий стабильный выпуск и Unstable после последней разработки. 

Любая ОС Linux после установки требует...

6
2
21 августа 2020
Docker – что это такое?
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(8) ["name"]=> string(6) "Docker" ["slug"]=> string(6) "docker" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(8) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(8) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(8) ["category_count"]=> int(8) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "Docker" ["category_nicename"]=> string(6) "docker" ["category_parent"]=> int(0) } } Docker

Если вы считаете, что докер (англ. docker – портовый рабочий) – это тот, кто грузит контейнеры, вы правы по форме, но не по содержанию. В нашем случае Docker – это действительно удобный интерфейс для работы с контейнерами. Но не только. Давайте разбираться, что это такое и с чем его едят.

Docker – это программная платформа, которая помогает...

2
0
2 октября 2020
Зачем нужны системы оркестрации?
array(1) { [0]=> object(WP_Term)#11549 (16) { ["term_id"]=> int(10) ["name"]=> string(10) "Kubernetes" ["slug"]=> string(10) "kubernetes" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(10) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(4) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(10) ["category_count"]=> int(4) ["category_description"]=> string(0) "" ["cat_name"]=> string(10) "Kubernetes" ["category_nicename"]=> string(10) "kubernetes" ["category_parent"]=> int(0) } } Kubernetes

Автор - Андрей Трошин
Понятие оркестрации
Оркестрация или оркестровка - если обратиться к wiki - это автоматическое размещение, координация и управление сложными компьютерными системами и службами. Давайте попробуем упростить и провести аналогию с обычным музыкальным оркестром. Оркестр - это такая штука, которая позволяет сыграть грандиозное...

8
0
16 октября 2020