Меня зовут Константин Кулишов, я работаю DevOps-инженером в компании, которая предоставляет комплексное сопровождение клиента от разработки до поддержки и продвижения.  В этой статье я кратко опишу ChatOps и расскажу, как вдохновился и написал приложение https://github.com/KKulishov/chatops.  Наша компания практикует современный стек в разработке и в поддержке. Мы используем оркестрацию контейнеров Kubernetes для крупных клиентов, в работе с которыми оправдана эта технология. Также мы используем облачные платформы, по согласованию с клиентом. В моем примере рассмотрим Yandex.Cloud.  Так как мы используем Yandex.Cloud, оплата почасовая и держать runner постоянно включенным финансово не оправдано. Его можно выключать с 20:00 до 9:00 и на субботу и воскресенье. Это неудобно, если разработчик хочет поработать в выходной или ему, как Менделееву, среди ночи пришло просветление. Ведь он захочет не только запушить свои изменения, но и увидеть результат своей работы на stage-ветке. Для таких целей и было реализовано приложение.  Нужен ли команде ChatOps — вопрос спорный. Каждая команда сама решает, насколько для них это ценная фича. В моем примере errbot используется с интеграцией в телеграм, чтобы перехватывать команды и выполнять их. Выбрал телеграм, потому что у нас в компании в нем все общение.  Мое приложение было создано для того, чтобы облегчить жизнь отделу разработки. Приложение может выводить логи миграции в БД. Вы можете сказать, что надо смотреть в Grafana, но у нас собираются логи через Fluent Bint и складываются в Elasticsearch, но когда приходит «failed» от job по миграции, разработчикам проще посмотреть через телеграм.  Вот часть примеров ситуаций, в которых нам помогает ChatOps. Напишите в комментариях, что вы решаете с помощью него.  Знания по Kubernetes я черпал из книг, официальной документации и курсов. Последним, который я прошел, был курс от Слёрм по Python для devops-инженеров. Моей основной целью было систематизировать фундаментальные знания, и увидеть, как на практике взаимодействуют Python и Kubernetes.  Я решил чтобы что-то понять, нужно написать самому. Поэтому я решил использовать errbot, Kubernetes Client, Yandex API, Python-Gitlab.  Errbot используется для интерактивного взаимодействия в телеграме. С помощью Kubernetes Client я получаю логи миграции БД по namespace. Вызывается довольно просто:  Логи берутся с отдельного пода, который выполняет задачи миграции, отбирается по (^pre-migrate-db-(.*) , где pre-migrate-db-xxxx  имя пода), можно переопределить в plugins/err-prod/rights.py.  Yandex API использовал для запуска build_runner и поднятия его ресурсов. Пример ввода команд: /list build vm. Здесь выводиться список машин и их имена которые участвуют в build и их статус и описание тех. характеристик. Нужно уточнить, что выборка машин из списка при вызове  list build vm выбирает машины только те, которые начинаются со слова build, но это можно скорректировать в коде plugins/err-prod/mylib.py. Тут нужно уточнить, что выборка машин из списка при вызове list build vm выбирает машины только те которые начинаются со слова build , (отрабатывает след. регулярка ^build(.*)) ,но это можно скорректировать в коде plugins/err-prod/mylib.py. Чтобы запустить приложение, надо установить зависимости. Первое — это python 3.8 и выше. Потом установите: Дальше экспортировать переменные. Поскольку у меня и дома, и на работе Linux, я делаю так:  Используется для отладки приложения, не запуская телеграм, просто в текстовом режиме консоли. Если нужен сразу telegram, вводим:  API токен вашего бота:  Затем понадобятся данные по Яндекс API:  Если вы запускаете в режиме PROD, ID указывать не нужно, он сам возьмет, при условии, что приложение запускается на виртуальных машинах Yandex.Cloud и к машине привязан service account с полномочиями compute.admin. IAM_TOKEN выдаются не навсегда, а только на временной интервал. Токен для отладки можно получить через утилиту yc: iam create-token. Офф. доки по iam token API Yandex.Cloud в конце статьи. Для взаимодействия с Kubernetes нужно создать service account, получить токен и сертификат. Прошу учесть, что кластерная роль view уже была создана. значение вывод нужно указать в переменную тут указывается токен  (где chatbot-token-xxxx имя Ваша секрета) Тут можно было привязать его к service account в описании манифеста, когда приложение внутри кластера Kubernetes. Но вот для отладки (когда приложение еще не в кубере) мне показалось более наглядным.Тем более для локальной отладки можно использовать k3s или minikube.  Затем можно вызвать бота , командой: В зависимости от того что вы выбрали: если DEV, то в качестве клиента будет использована командная строка  (тут вызовы идут через знак !потом_команда):  А если PROD , тогда взаимодействия будет через Ваш telegarm bot, вот пример (через telegram вызовы команд идут через /) : Теперь разработчики могут быть не привязаны к рабочим и будним дням, и пушить изменения, с возможность сразу видеть результат своей работы на stage-ветке. Мы сэкономили на расходах в облаке и упрощаем жизнь команды разработки.  Весь код приложения с кратким описанием: https://github.com/KKulishov/chatops Официальные документы, которые использовал:  https://errbot.readthedocs.io/en/latest/ https://github.com/kubernetes-client/python https://cloud.yandex.ru/docs/compute/api-ref/ https://python-gitlab.readthedocs.io/en/stable/ https://cloud.yandex.ru/docs/iam/operations/iam-token/create-for-sahttps://cloud.yandex.ru/docs/compute/api-ref/Instance/ Курс, который я проходил:  «Python для инженеров» от Слёрма. Курс очень помог. Для меня официальный инструмент взаимодействия с Kubernetes через Python запутанный, а в доках https://github.com/kubernetes-client/python/tree/master/kubernetes/docs хоть и много примеров, но разобраться сложно. А на курсе можно писать преподавателю, он может не сразу ответить, зато разберет все нюансы. Темы насыщены полезными примерами, которые можно адаптировать под свои задачи. Хорошо описано взаимодействие с api через библиотеку requests, работа с errbot с реализацией управления ssh через paramiko, написание prometheus exporter.  Были и минусы: курсовые далеки от реалий, долгие стримы (там их было 3 по ansible,kubernetes и errbot), а я привык получать от Слёрма короткую и четкую информацию. Про Kubernetes была только одна неделя, это печально (хотелось бы больше выделенного времени по взаимодействию с api kubernetes). Надеюсь, авторы учтут мои замечания, потому что кроме них, курс один из немногих стоящих.  Книги, которые посоветовали во время прохождения курса: «Изучаем Python», Марк Лутц том 1 и 2. Тоже очень помогли. На этом все. Если статья будет интересна, могу добавить в Git репу описания dockerfile сборки и Kubernetes Chat описания ChatOps.  DevOps