Инструменты в повседневной работе DevOps-инженера
Эксперт рассказывает об инструментах, которые полезно знать DevOps-инженеру: от закостенелых Jenkins и Splunk, до современных Loki и Lens.
10К открытий11К показов
Александр Селезнев
Тренер 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 и другие.
10К открытий11К показов