Обложка: Инструменты в повседневной работе DevOps-инженера

Инструменты в повседневной работе DevOps-инженера

Александр Селезнев
Александр Селезнев

Тренер Luxoft Training, специалист в области организации DevOps-процесса разработки

Важные инструменты, которые должен знать DevOps-инженер: от закостенелых Jenkins и Splunk, до современных Loki и Lens.

Git

Система управления исходным кодом, которой пользуются, пожалуй, вся индустрия. Это стандарт трекинга исходного кода. Git — единственная поддерживает все современные паттерны разработки и обязательна для изучения DevOps-инженеру.

Gitlab

Если вы работаете с молодой командой, то я бы посоветовал изучить Gitlab. Система поддерживает полный цикл разработки, включающий управление исходным кодом на Git, Continuous integration, Continuous Delivery, issue tracking.

На одном Gitlab можно полностью вести разработку «мерджиться», «деплоиться» и прочее. Однако система навязывает определенный workflow, который не всегда подходит проекту. Это возможно обойти, но редко результат получается хорошим.

Jenkins

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

Это его достоинство и недостаток. Из-за обилия необходимых плагинов система становится тяжёлой. Постоянные обновления и риски, что все разрушится, а также отвратительный UI могут превратить работу в ад. Сегодня немногие новые команды выбирают Jenkins, но в проектах около пятилетней давности система встречается часто.

Jira

Решения Atlassian уже стали определенным индустриальным стандартом. Работая с крупными заказчиками, вы, скорее всего, будете использовать именно Jira. Ежедневно в системе я завожу тикеты, трекаю время на выполнение задач, состояние спринтов, создаю release notes и решаю другие задачи. Несмотря на ряд аналогов, плюс Jira — интеграция с другими системами Atlassian, например Confluence.

Confluence

Система динамического управления контентом. В некотором роде — это «вики» с визуальным редактором страниц. Здесь я веду проектную документацию, трекаю требования к системе, заметки, состояния, создаю страницы по описанию билдов.

Docker

Система контейнеризации и одна из основных технологий для DevOps-инженера. ПО для автоматизации развёртывания и изоляции приложений. Мы используем для сборки и запуска контейнеров в DEV окружениях.

Kubernetes

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

Lens

Графический интерфейс  для управления и мониторинга Kubernetes кластеров. Также известен, как GUI для Kubernetes, где возможно увидеть все их сущности, включая пользовательские ресурсы. Хоть это и не обязательный инструмент для DevOps-инженера, но я рекомендую его использовать. Здесь много разных крутых возможностей. Например, доступ к приватным кластерам через собственный прокси.

Prometheus

База данных для сбора метрик в реальном времени. Использует модель HTTP-запроса и «ходит» в URL приложений для сбора данных.

Grafana

Dashboard-решение для визуализации полученных данных. Мы используем Grafana в связке с Prometheus. Система демонстрирует графики, таблицы, и используется в современных стеках больших решений.

Loki

Молодая система сбора логов с приложений, вдохновленная Prometheus. До Loki логи всегда хранились, как текст в файлах либо индексировались в системе вроде Elasticsearch. Это приводило к большому весу на диске и нагрузке при поиске и агрегации. Loki индексирует метадату, позволяя хранить логи в достаточно медленном и дешёвом хранилище вроде Object Storage (AWS S3 etc), так как для поиска и агрегации не используется весь текст. Они занимают меньше места и поиск происходит быстрее по стандартизированным лейблам.

Splunk

Большая неповоротливая система по мониторингу всех данных. Старая, мощная но малопроизводительная. Крупные компании не хотят изменять Splunk с Prometheus и Grafana. Отчасти из-за платной поддержки. Поэтому, DevOps-инженеру в большой организации придется научиться работать с Splunk.

Terraform

Система управления инфраструктурой с помощью API, облачными провайдерами, приватными облаками. Terraform стала первой, позволившей нам работать с разными облачными провайдерами. Для описания и применения окружения в коде не нужно идти в консоль. Система сама создает необходимые сети, кластера и так далее.

***

Большая часть из названных инструментов — обязательна для DevOps-инженера. Однако единый список для каждого разработчика составить невозможно. Выбор инструментов зависит от выбора языка. Поэтому умение использовать инструменты — только часть необходимых навыков.

DevOps-инженеру нужно постоянно автоматизировать шаги. Вам понадобится «клей», который бы связывал все инструменты в общий пайплайн. Для этого помимо инструментов необходимо изучить сценарные языки — Python, JavaScript, Ruby, Go, Bash и другие.

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации