Найкращі практики та рекомендації для запуску контейнерів та Kubernetes у виробничих середовищах

Найкращі практики та рекомендації для запуску контейнерів та Kubernetes у виробничих середовищах
Екосистема технологій контейнеризації швидко розвивається і змінюється, тому у цій сфері не вистачає добрих робочих практик. Тим не менш, Kubernetes і контейнери використовують все частіше - як для модернізації старих додатків, так і для розробки сучасних хмарних додатків. 

Команда Kubernetes aaS від Mail.ru зібрала прогнози, поради та найкращі практики для лідерів ринку від Gartner, 451 Research, StacxRoх та інших. Вони дозволять забезпечити та прискорити розгортання контейнерів у виробничих середовищах.

Як зрозуміти, чи готова ваша компанія розгортати контейнери у виробничому середовищі

За даними GartnerУ 2022 році понад 75% організацій використовуватимуть контейнеризовані додатки у виробництві. Це значно більше, ніж зараз, коли такі додатки використовує менше 30% компаній. 

Згідно з дослідження 451, прогнозований ринок для застосування контейнерних технологій у 2022 році, становитиме $4,3 млрд. Це більш ніж удвічі перевищує суми, прогнозовані у 2019 році, темпи зростання ринку становлять 30%.

В опитування Portworx та Aqua Security 87% респондентів заявили, що зараз вони використовують контейнерні технології. Для порівняння – у 2017 році таких респондентів було 55%. 

Незважаючи на зростання інтересу і зростання впровадження контейнерів, їх запуск у виробництво вимагає навчання через технологічну незрілість і відсутність ноу-хау. Організації повинні реалістично дивитися на бізнес-процеси, які потребують контейнеризації додатків. IT-лідерам варто оцінити, чи мають набір навичок для руху вперед з урахуванням необхідності швидкого навчання. 

Експерти Gartner вважають, що питання на малюнку нижче допоможуть зрозуміти, чи готові ви до розгортання контейнерів у виробництві:

Найкращі практики та рекомендації для запуску контейнерів та Kubernetes у виробничих середовищах

Найчастіші помилки при застосуванні контейнерів у виробництві

Організації часто недооцінюють зусилля, необхідні експлуатації контейнерів у виробництві. Gartner виявив декілька поширених помилок у сценаріях клієнтів при застосуванні контейнерів у виробничих середовищах:

Найкращі практики та рекомендації для запуску контейнерів та Kubernetes у виробничих середовищах

Як забезпечити безпеку контейнерів

Безпекою не можна займатися "потім". Вона має бути вбудована у процес DevOps, тому з'явився навіть спеціальний термін – DevSecOps. Організаціям необхідно планувати захист контейнерного середовища протягом всього життєвого циклу розробки, який включає процес складання і розробки, розгортання і запуск програми.

Рекомендації від Gartner

  1. Інтегруйте процес сканування образів програми для пошуку вразливостей у конвеєр безперервної інтеграції/безперервної доставки (CI/CD). Програми скануються на етапах складання та запуску ПЗ. Наголосіть на необхідності сканування та ідентифікації компонентів з відкритим вихідним кодом, бібліотек та структур. Використання розробниками старих уразливих версій - одна з основних причин уразливостей контейнерів.
  2. Покращуйте конфігурацію за допомогою тестів Center for Internet Security (СНД), які доступні як Docker, так Kubernetes.
  3. Обов'язково застосовуйте контроль доступу, забезпечте розподіл обов'язків та впровадьте політику управління секретами. Конфіденційна інформація, така як ключі Secure Sockets Layer (SSL) або облікові дані бази даних, шифрується оркестратором або сторонніми службами управління та надається під час виконання
  4. Уникайте контейнерів із підвищеними привілеями за допомогою управління політиками безпеки, це зменшить потенційні ризики злому.
  5. Використовуйте інструменти безпеки, які надають білі списки, поведінковий моніторинг та виявлення аномалій для запобігання зловмисним діям.

Рекомендації від StacxRox:

  1. Використовуйте вбудовані можливості Kubernetes. Налаштуйте доступ для користувачів за допомогою ролі. Переконайтеся, що ви не надаєте непотрібні дозволи окремим суб'єктам, навіть якщо може знадобитися деякий час для обміркування мінімально необхідних дозволів. Може здатися привабливим дати адміністратору кластера широкі привілеї, оскільки це заощаджує час на початковому етапі. Однак будь-який компроміс або помилки в обліковому записі можуть призвести до руйнівних наслідків надалі. 
  2. Уникайте дублювання дозволів доступу. Іноді корисно зробити так, щоб різні ролі перекривалися, але це може призвести до проблем з експлуатацією, а також створити «мертві зони» при видаленні дозволів. Крім того, важливо видаляти невикористовувані та неактивні ролі.
  3. Встановіть мережеві політики: ізолюйте модулі, щоб обмежити доступ до них; явно дозвольте доступ до Інтернету тим модулям, яким це необхідно, використовуючи мітки; явно дозвольте зв'язок між тими модулями, яким потрібно спілкуватися. 

Як організувати моніторинг контейнерів та сервісів у них

Безпека та моніторинг основні проблеми компаній при розгортанні кластерів Kubernetes. Розробники завжди сильніше зосереджені на функціях додатків, що вони розробляють, ніж аспектах моніторингу цих додатків

Рекомендації від Gartner:

  1. Намагайтеся моніторити стан контейнерів чи сервісів у них разом із моніторингом хост-систем.
  2. Віддавайте перевагу виробникам та інструментам із глибокою інтеграцією в оркестрацію контейнерів, особливо Kubernetes.
  3. Вибирайте інструменти, які надають детальне логування, автоматичне виявлення сервісів та рекомендації в реальному часі за допомогою аналітики та/або машинного навчання.

У блозі SolarWinds радять:

  1. Використовувати інструменти для автоматичного виявлення та відстеження метрик контейнера, кореляції метрик продуктивності, таких як процесор, пам'ять та час безвідмовної роботи.
  2. Забезпечити оптимальне планування ємності шляхом прогнозування термінів вичерпання ємності з урахуванням показників моніторингу контейнерів.
  3. Організувати моніторинг програм, розміщених у контейнерах, за параметрами доступності та продуктивності, що корисно як для планування ємності, так і для усунення проблем продуктивності.
  4. Автоматизувати робочі процеси, надаючи підтримку керування та масштабування для контейнерів та їх середовищ розміщення.
  5. Автоматизувати контроль доступу, щоб відстежувати базу користувачів, відключати застарілі та гостьові облікові записи, видаляти зайві привілеї.
  6. Переконайтеся, що ваш набір інструментів може відстежувати ці контейнери та програми у різних середовищах (хмарних, локальних або гібридних) для візуалізації та зіставлення продуктивності в інфраструктурі, мережі, системах та додатках.

Як зберігати дані та забезпечити їх безпеку

Зі збільшенням числа робочих контейнерів зі збереженням стану клієнтам необхідно враховувати знаходження даних поза межами хоста, і навіть необхідність захисту цих даних. 

За даними опитування Portworx та Aqua SecurityБезпека даних стоїть на першому місці в списку проблем безпеки, зазначених більшістю респондентів (61%). 

Шифрування даних є основною безпековою стратегією (64%), проте респонденти також використовують моніторинг часу виконання

(49%), сканування вразливостей у реєстрах (49%), сканування вразливостей у конвеєрах CI/CD (49%) та блокування аномалій через захист часу виконання (48%).

Рекомендації від Gartner:

  1. Вибирайте рішення зберігання даних, побудовані на принципах мікросервісної архітектури. Краще зупинитися на тих, що відповідають вимогам зберігання даних для сервісів контейнерів, апаратно незалежні, управляються API, мають розподілену архітектуру, підтримують локальне розгортання і розгортання в загальнодоступній хмарі.
  2. Уникайте пропрієтарних плагінів та інтерфейсів. Вибирайте виробників, які забезпечують інтеграцію з Kubernetes та підтримують стандартні інтерфейси, такі як CSI (Container Storage Interfaces).

Як працювати з мережами

Традиційна модель корпоративної мережі, де IT-фахівці створюють мережеві середовища розробки, тестування, забезпечення якості та виробництва для кожного проекту, не завжди добре узгоджується з робочим процесом безперервної розробки. З іншого боку, контейнерні мережі охоплюють кілька рівнів.

В блозі Magalix зібрали правила високого рівня, яким має відповідати реалізація кластерно-мережевого рішення:

  1. Поди, заплановані на тому самому вузлі, повинні мати можливість обмінюватися даними з іншими модулями без використання NAT (перетворення мережевих адрес).
  2. Усі системні демони (фонові процеси, наприклад kubelet), що працюють на певному вузлі, можуть взаємодіяти з подами, що працюють на тому ж вузлі.
  3. Піди, що використовують мережа хоста, повинні мати можливість зв'язуватися з іншими подами на всіх інших вузлах без використання NAT. Зверніть увагу, що мережа хостів підтримується лише на хостах Linux.

Мережеві рішення мають бути тісно інтегровані з примітивами та політиками Kubernetes. ІТ-керівники повинні прагнути високого ступеня автоматизації мережі, надавати розробникам належні інструменти та достатню гнучкість.

Рекомендації від Gartner:

  1. З'ясуйте, чи підтримує ваш CaaS (контейнер як сервіс) або мережа SDN (Software Defined Network) мережі Kubernetes. Якщо ні чи підтримка недостатня, використовуйте для своїх контейнерів мережний інтерфейс CNI (Container Network Interface), який підтримує необхідний функціонал та політики.
  2. Переконайтеся, що CaaS або PaaS (платформа як сервіс) підтримує створення вхідних контролерів та/або балансувальників навантаження, що розподіляють вхідний трафік між вузлами кластера. Якщо такої можливості немає, вивчіть використання сторонніх проксі або механізмів service mesh.
  3. Навчіть своїх мережевих інженерів роботі з мережами Linux та інструментами мережевої автоматизації, щоб зменшити розрив у навичках та підвищити гнучкість.

Як керувати життєвим циклом додатків

Для автоматизованої та безперебійної доставки програм потрібно доповнити оркестрування контейнерів іншими інструментами автоматизації, такими як продукти інфраструктури як код (IaC). До них відносять Chef, Puppet, Ansible та Terraform. 

Також потрібні засоби автоматизації складання та викочування додатків (див. «Магічний квадрант для оркестрування випуску додатків»). Контейнери також надають можливості для розширення, аналогічні до можливостей, які існували при розгортанні віртуальних машин (ВМ). Таким чином, у IT-керівників мають бути інструменти керування життєвим циклом контейнерів.

Рекомендації від Gartner:

  1. Встановіть стандарти базових образів контейнерів з урахуванням розміру, ліцензування та гнучкості для додавання компонентів розробниками.
  2. Використовуйте системи керування конфігурацією для керування життєвим циклом контейнерів, які розміщують конфігурацію у шарах на основі базових образів, що знаходяться у публічних чи приватних репозиторіях.
  3. Інтегруйте платформу CaaS з інструментами автоматизації, щоб автоматизувати весь робочий процес програми.

Як керувати контейнерами за допомогою оркестраторів

Основні функціональні можливості для розгортання контейнерів надаються на рівнях оркестрування та планування. При плануванні контейнери розміщуються на найбільш оптимальних хостах у кластері, як передбачено вимогами рівня оркестрування. 

Kubernetes де-факто став стандартом оркестрування контейнерів із активною спільнотою, його підтримує більшість провідних комерційних постачальників. 

Рекомендації від Gartner:

  1. Визначте базові вимоги до елементів управління безпекою, моніторингу, управління політиками, збереження даних, управління мережами та життєвим циклом контейнерів.
  2. На основі цих вимог виберіть інструмент, який найкраще відповідає вашим вимогам та сценаріям використання.
  3. Використовуйте дослідження Gartner (див.Як вибрати модель розгортання Kubernetes»), щоб зрозуміти переваги та недоліки різних моделей розгортання Kubernetes і вибрати найбільш підходящу для вашого завдання.
  4. Виберіть постачальника, який може забезпечити гібридне оркестрування для робочих контейнерів у кількох середовищах з тісною інтеграцією з бекендами, загальними планами управління та узгодженими моделями ціноутворення.

Як використовувати можливості хмарних провайдерів

У Gartner вважають, що інтерес до розгортання контейнерів у загальнодоступній хмарі IaaS зростає через доступність готових пропозицій CaaS, а також тісну інтеграцію цих пропозицій з іншими продуктами, пропонованими хмарними провайдерами.

Хмари IaaS пропонують споживання ресурсів на вимогу, швидку масштабованість та управління послугами, яке допоможе уникнути необхідності у глибоких знаннях про інфраструктуру та її обслуговування. Більшість хмарних провайдерів пропонують послугу керування контейнерами, а деякі пропонують кілька варіантів оркестрації. 

Ключові хмарні постачальники керованих послуг представлені у таблиці: 

Хмарний провайдер
Тип обслуговування
Продукт/сервіс

Alibaba
Native Cloud Service
Alibaba Cloud Container Service, Alibaba Cloud Container Service для Kubernetes

Веб-служби Amazon (AWS)
Native Cloud Service
Amazon Elastic Container Services (ECS), Amazon ECS for Kubernetes (EKS), AWS Fargate

Giant Swarm
MSP
Giant Swarm Managed Kubernetes Infrastructure

Google
Native Cloud Service
Google Container Engine (GKE)

IBM
Native Cloud Service
Служба IBM Cloud Kubernetes

Microsoft
Native Cloud Service
Azure Kubernetes Service, Azure Service Fabric

оракул
Native Cloud Service
OCI Container Engine for Kubernetes

Platform9
MSP
Керований Kubernetes

Red Hat
Розміщена служба
OpenShift Dedicated & Online

VMware
Розміщена служба
Cloud PKS (Beta)

Mail.ru Cloud Solutions*
Native Cloud Service
Mail.ru Cloud Containers

* Не приховуватимемо, ми тут самі себе додали при перекладі 🙂

Постачальники загальнодоступних хмар також додають нові можливості та випускають локальні продукти. У найближчому майбутньому провайдери хмар розвиватимуть підтримку гібридних хмар та мультихмарних середовищ. 

Рекомендації Gartner:

  1. Об'єктивно оцініть можливості вашої організації розгортати та керувати відповідними інструментами, а також розгляньте альтернативні сервіси керування хмарними контейнерами.
  2. Ретельно вибирайте програмне забезпечення, використовуйте open source там, де це можливо.
  3. Вибирайте постачальників з єдиними операційними моделями у гібридних середовищах, які пропонують керування об'єднаними кластерами з єдиної панелі, а також провайдерів, які спрощують самостійне використання IaaS.

Декілька порад щодо вибору провайдера Kubernetes aaS з блогу Replex:

  1. Варто шукати дистрибутиви, які підтримують високу готовність із коробки. Це включає підтримку кількох основних архітектур, високодоступних компонентів etcd, а також резервне копіювання та відновлення.
  2. Щоб забезпечити мобільність серед Kubernetes, краще вибирати хмарних провайдерів, які підтримують широкий спектр моделей розгортання: від локальних до гібридних та мультихмарних. 
  3. Пропозиції провайдерів також варто оцінювати з урахуванням простоти налаштування, встановлення та створення кластера, а також оновлень, моніторингу та усунення несправностей. Базова вимога - підтримка повністю автоматизованих оновлень кластера з нульовим часом простою. Вибране рішення також має дозволяти запускати оновлення вручну. 
  4. Управління ідентифікацією та доступом є важливим як з точки зору безпеки, так і з точки зору управління. Переконайтеся, що вибраний дистрибутив Kubernetes підтримує інтеграцію із засобами автентифікації та авторизації, які використовуються всередині компанії. RBAC та детальний контроль доступу також є важливими наборами функцій.
  5. Вибраний дистрибутив повинен або мати власне мережне рішення, яке визначається програмним забезпеченням і що охоплює широкий спектр вимог, що пред'являються різними додатками або інфраструктурою, або підтримувати одну з популярних реалізацій мереж на основі CNI, включаючи Flannel, Calico, kube-router або OVN.

Впровадження контейнерів у виробництво стає основним напрямом, про що свідчать результати опитування, проведеного на сесії Gartner з інфраструктури, операцій та хмарних стратегій (IOCS) у грудні 2018 року:

Найкращі практики та рекомендації для запуску контейнерів та Kubernetes у виробничих середовищах
Як бачимо, 27% опитаних вже використовують контейнери у роботі, а 63% мають намір це зробити.

В опитування Portworx та Aqua Security 24% респондентів повідомили, що інвестують понад півмільйона доларів на рік на контейнерні технології, а 17% респондентів витрачають на них понад мільйон доларів на рік. 

Статтю підготовлено командою хмарної платформи Mail.ru Cloud Solutions.

Що ще почитати на тему:

  1. Найкращі практики DevOps: звіт DORA.
  2. Kubernetes у дусі піратства з шаблоном по впровадженню.
  3. 25 корисних інструментів для розгортання та впровадження Kubernetes.

Джерело: habr.com

Додати коментар або відгук