[Перевод] Open-source-инструменты для Kubernetes AIOps на базе OpenAI
Сегодня ИИ вызывает интерес у всех, и мир DevOps на базе Kubernetes не исключение. Инструменты искусственного интеллекта вполне органично вписываются в работу разработчиков, которые, как известно, большие любители всё автоматизировать. Под влиянием хайпа вокруг ChatGPT начинают появляться и проекты для операторов Kubernetes.
Команда VK Cloud перевела статью о новых open-source-инструментах, созданных при поддержке OpenAI и ChatGPT, чтобы упростить жизнь операторам Kubernetes. Большинство из них предназначены для работы с терминалом (CLI).
Устранение неисправностей в Kubernetes с помощью ИИ
1. k8sgpt
- «Инструмент для сканирования кластеров Kubernetes, диагностики и сортировки проблем на простом человеческом языке»
- Сайт: http://k8sgpt.ai/
- GitHub: https://github.com/k8sgpt-ai/k8sgpt
- Рейтинг GH: ~3100
- Первый коммит: 21 марта 2023 года
- ~700 коммитов, 32 релиза, ~40 разработчиков
- Язык: Go
k8sgpt придумал Алекс Джонс. Это самое известное, самое выдающееся решение такого рода, которое «наделяет всех суперсилами Kubernetes». Это CLI-инструмент с базовой командой k8sgpt analyze
, которая позволяет находить проблемы в кластере Kubernetes. Для этого k8sgpt использует так называемые анализаторы, определяющие логику каждого объекта Kubernetes и возможные проблемы, с которыми он может столкнуться. Например, анализатор сервисов Kubernetes проверяет, существует ли определённый сервис, есть ли у него вообще конечные точки и находятся ли они в состоянии Ready.
Выявить такую проблему, в сущности, дело несложное, но волшебство кроется не в этом. Магия возникает, если попросить k8sgpt объяснить, что делать с возникшими проблемами. Для этого нужно выполнить команду k8sgpt analyze --explain
. Она направляет искусственному интеллекту ваш запрос по конкретной проблеме и показывает его рекомендации. В этих инструкциях описываются действия по устранению проблемы, в том числе конкретные команды kubectl
, которые выполняются просто копированием и вставкой — ведь вы уже указали в запросе имена ресурсов Kubernetes.
Пример инструкций «анализ — объяснение» в k8gpt (источник)
К слову об именах ресурсов. K8sgpt с гордостью сообщает, что у него есть функция анонимизации (флаг --anonymize
для команды k8sgpt analyze
), которая следит, чтобы конфиденциальные данные не попадали в систему ИИ. Полезно, правда? Хотя пока что её внедрили ещё не во всех анализаторах.
Сегодня k8sgpt поддерживает встроенные анализаторы для множества объектов Kubernetes, включая ноды, поды, PVC, ReplicaSets, сервисы, события, Ingress, StatefulSets, деплойменты, CronJob, NetworkPolicy и даже HPA с PDB. Не так уж сложно увеличить этот набор, создав пользовательские анализаторы.
Кроме того, k8sgpt не ограничивается одной системой ИИ. По умолчанию в нём выбран провайдер OpenAI, который предоставляет доступ к известным языковым моделям GPT-3.5-Turbo и GPT-4. Но можно выбрать и другой вариант из актуального списка:
- Azure OpenAI.
- Cohere (добавлен совсем недавно, 20 июля).
- LocalAI — локальная модель с API, совместимым с OpenAI. Её можно использовать, например, с llama.cpp и ggml — это позволит работать с ИИ даже в средах, не подключённых к сети.
- FakeAI — сервис, имитирующий работу ИИ без обращения к нему.
K8sgpt также поддерживает API для интеграций, что позволяет использовать функциональные возможности внешних инструментов для решения проблем в Kubernetes. На данный момент реализована только одна интеграция — с известным open-source-сканером уязвимостей Trivy. Если включить его с помощью команды k8sgpt integration activate trivy
(для этого Trivy Operator должен быть установлен в кластере), то у вас появится новый фильтр k8sgpt VulnerabilityReport. Доступ к нему можно получить с помощью команды k8sgpt analyze --filter VulnerabilityReport
.
Ещё одна интересная функция k8sgpt: его можно установить как оператор Kubernetes внутри кластера. Для этого используйте этот Helm Chart. Установите и примените объект конфигурации k8sgpt (kind: K8sGPT
). Теперь этот инструмент будет анализировать кластер, а результаты сканирования будут храниться в объектах Results. Это значит, что их можно посмотреть, выполнив команду kubectl get results -o json | jq
.
Архитектура оператора k8sgpt
K8sgpt вызвал у сообщества большой интерес. Он предназначен для устранения проблем в Kubernetes и предлагает пользователям готовые к использованию функции, разработанные именно с этой целью. Более того, он: a) позволяет гибко использовать разные системы ИИ; и б) поддерживает пользовательские анализаторы и интеграции со сторонними инструментами.
2. Бот Kubernetes ChatGPT
Создан Robusta. Это проект по устранению неисправностей в Kubernetes посредством интеграции ИИ с оповещениями, которые выводятся в Slack. Чтобы пользоваться этим ботом, нужно:
- установить Robusta на Prometheus (VictoriaMetrics тоже поддерживается) и AlertManager;
- использовать Slack.
Если всё это у вас уже есть, значит, оповещения системы мониторинга уже отправляются вам в Slack через входящий веб-перехватчик. Этот бот добавляет к оповещениям в Slack кнопку Ask ChatGPT. Если нажать её, через ключ API OpenAI отправится запрос к ИИ, а от него придёт ответ с инструкциями, как смягчить последствия проблемы, оповещение о которой вы получили.
Новая кнопка в Slack, ведущая к боту K8s ChatGPT
На данный момент всё настолько просто. Но автор предлагает дальнейшее развитие бота: можно указывать ИИ дополнительные данные, например логи подов и результаты kubectl get events
. Если решение вас заинтересовало, разработчиков-соавторов ждут на GitHub.
Плагины ИИ для Kubectl
3. kubectl-ai
- «Плагин Kubectl для OpenAI GPT»
- GitHub: https://github.com/sozercan/kubectl-ai
- Рейтинг GH: ~800
- Первый коммит: 20 марта 2023 года
- ~50 коммитов, 11 релизов, ~10 разработчиков
- Язык: Go
Этот проект стартовал за день до рождения k8sgpt, но в нём реализован совершенно другой подход к применению ИИ для Kubernetes. Автор проекта стремится избавить коллег от необходимости «искать и собирать рандомные манифесты во время разработки и тестирования» и решил упростить создание манифестов для ресурсов Kubernetes.
Kubectl-ai устанавливается как плагин kubectl и работает с командой kubectl ai
. С его помощью ИИ выдаёт готовые к использованию YAML-манифесты, подходящие для ваших задач. Вот наглядный пример из README:
Опция reprompt
позволяет доработать полученный манифест, изменив конкретные параметры. Можно генерировать несколько манифестов одновременно, что имеет смысл для взаимосвязанных объектов, таких как Deployment и Service. Понравившийся результат можно с лёгкостью применить к кластеру.
Потом можно настроить имеющиеся объекты Kubernetes, попросив kubectl ai
масштабировать их или изменить другие параметры.
Что касается систем ИИ, kubectl-ai поддерживает OpenAI API, Azure OpenAI Service и LocalAI для использования в среде, не подключённой к сети (последнюю интеграцию добавили 31 июля). Хотя в качестве языковой модели по умолчанию используется GPT-3.5-Turbo, GPT-4 тоже поддерживается.
4. kubectl-gpt
- «Плагин kubectl для генерирования команд kubectl из формулировок на естественном языке с помощью модели GPT»
- GitHub: https://github.com/devinjeon/kubectl-gpt
- Рейтинг GH: ~40
- Первый коммит: 29 мая 2023 года
- ~20 коммитов, 3 релиза, 1 разработчик
- Язык: Go
Этот плагин выполняет команду kubectl gpt
, единственное назначение которой — исполнять ваши пожелания, то есть запросы на человеческом языке, в кластере Kubernetes. Вот что можно ожидать от этого плагина, судя по примерам в документации:
В качестве результата можно получить и просто информацию, и реальные действия, влияющие на ресурсы Kubernetes. Плагин в любом случае выполнит команду, но сначала покажет её вам, чтобы вы подтвердили — да, это именно то, что вам нужно, можно выполнять. По желанию эти функции — вывод сгенерированной команды на печать, запрос подтверждения — можно отключить.
Для работы Kubectl-gpt требуется ключ API OpenAI. Поддерживается только GPT-3; по умолчанию включён GPT-3.5-Turbo. Можно работать на любом человеческом языке, который знает API OpenAI GPT.
Этот проект разработан одним человеком и не обновлялся с мая.
Комплексные инструменты AIOps для Kubernetes
Все проекты, описанные в этой категории, стартовали примерно в одно и то же время. Они основываются на сходных идеях: предоставить пользователю кластера Kubernetes разные функции на основе ИИ. Количественные характеристики проектов тоже похожи: один или несколько разработчиков, рейтинг примерно 100 звёзд и несколько десятков коммитов. Итак, давайте посмотрим, что они предлагают и чем различаются.
5. kopilot
- «Ваш ИИ-эксперт по Kubernetes»
- GitHub: https://github.com/knight42/kopilot
- Рейтинг GH: ~140
- Первый коммит: 19 марта 2023 года
- ~40 коммитов, 3 релиза, 3 разработчика
- Язык: Go
Kopilot — единственный из этих трёх проектов, написанный на языке Go. У него две функции: устранение неисправностей и аудит. Так что они, собственно, делают?
- Представьте под, который застрял в состоянии Pending или CrashLoopBackOff. Вот здесь и пригодится команда
kopilot diagnose
. Она обращается за помощью к ИИ и печатает его ответ с возможными объяснениями причин произошедшего.
Пример результатов диагностики в kopilot - Не уверены в качестве деплоймента? Команда
kopilot audit
, используя аналогичный подход, сравнивает его с известными образцами и выявляет возможные ошибки в конфигурации безопасности.
Для ответов этот инструмент использует токен API OpenAI и выбранный вами человеческий язык. Кроме того, в README есть намёк, что в будущем можно будет пользоваться и другими сервисами ИИ.
К сожалению, в последний раз коммиты добавляли в проект в апреле, и это вызывает некоторое беспокойство.
6. kopylot
- «Ассистент на базе ИИ для разработчиков Kubernetes»
- GitHub: https://github.com/avsthiago/kopylot
- Рейтинг GH: ~70
- Первый коммит: 28 марта 2023 года
- ~70 коммитов, 5 релизов, 2 разработчика
- Язык: Python
У этого инструмента похожие функции аудита и диагностики, но он продвинулся на шаг вперёд: в нём есть команда, открывающая чат. Очень интересное решение: можно на английском спросить про конкретное действие, которое преобразуется в команду kubectl
. Если вы одобряете напечатанную команду, можно разрешить её выполнение. Вот что мы увидели в kubectl-gpt.
Пример результатов в чате kopylot
Kopylot также предлагает команду ctl
— простую оболочку для kubectl, которая позволяет выполнить любую команду напрямую, то есть без вмешательства ИИ. По-видимому, эта функция должна превратить kopylot
в главного помощника для работы с Kubernetes вместо всем известного kubectl
, который на всякий случай всё-таки доступен в любой момент.
Сейчас kopylot поддерживает только ключ API OpenAI и не работает с другими человеческими языками. Он использует статическую модель text-davinci-003 GPT-3.5, которая считается устаревшей. В планах развития продукта упоминается поддержка других моделей LLM.
Но сбудутся ли эти планы, остаётся под большим вопросом, ведь последний релиз по проекту вышел 4 апреля.
7. kube-copilot
- «Kubernetes Copilot на основе OpenAI»
- GitHub: https://github.com/feiskyer/kube-copilot
- Рейтинг GH: ~70
- Первый коммит: 25 марта 2023 года
- ~70 коммитов, 8 релизов, 1 разработчик
- Язык: Python
С Kubernetes Copilot комплексные инструменты на базе ИИ выходят на новый уровень. Кроме устранения неисправностей в Kubernetes, аудита и функции «выполнить любое действие», он может генерировать манифесты по запросу как kubectl-ai.
Кстати, аудит в kube-copilot эффективнее, чем можно было ожидать. Хотя у инструмента есть команда «анализ» для выявления возможных проблем с ресурсами Kubernetes, примерно как в kopilot audit
, в нём реализована и команда «аудит». Она задействует сканер Trivy, который ищет проблемы безопасности в подах.
Интересно, что в kube-copilot два интерфейса: CLI и web UI. Второй интерфейс довольно простой, но, возможно, именно он станет уникальным преимуществом для некоторых пользователей.
kube-copilot web UI
И ещё одна функция CLI, о которой стоит сказать: этот инструмент может прямо в терминале искать в Google. Что ж, возможно, некоторые вопросы лучше задавать ему, а не ChatGPT. Хотя, с моей точки зрения, это не самое важное для инструмента по работе с Kubernetes.
Что касается поддержки ИИ, kube-copilot работает с ключом API OpenAI или Azure OpenAI Service. В нём можно использовать как GPT-3.5, так и GPT-4.
Хотя этот инструмент разрабатывает один человек, он регулярно добавляет новые коммиты, так что перспективы у проекта есть. Однако планы по проекту не опубликованы; нет и другой информации, которая проливала бы свет на его дальнейшее развитие.
Другие проекты
В этой статье я бы хотел рассказать и о других инструментах и сервисах на базе OpenAI для Kubernetes.
Botkube от Kubeshop — это бот обмена сообщениями в Slack, Mattermost, Discord или Microsoft Teams (то есть ChatOps) для мониторинга и отладки кластеров Kubernetes. Недавно в него был добавлен плагин Doctor, который подключается к ИИ двумя способами: 1) можно напрямую задать вопрос чат-боту; 2) можно нажать кнопку Get Help, которая появляется под событиями-ошибками. Бот выдаёт сформулированные ИИ ответы на вопросы и рекомендации о конкретной проблеме. Чтобы активировать плагин Botkube, нужен ключ API OpenAI.
Пример чата с Doctor Botkube (источник)
KubeGPT от metaKube — это не инструмент CLI, а онлайн-чат в веб-браузере, в котором можно поговорить с ИИ про Kubernetes. Как и обычный ChatGPT, он может отвечать на общие вопросы (например, про архитектуру и передовые практики работы с Kubernetes), а также генерировать конкретные YAML-манифесты.
Чат с KubeGPT от metaKube
В принципе, он согласился помочь мне и с другими техническими вопросами — например, охотно выдал информацию по Nomad и даже предоставил мне руководство по установке Ubuntu Linux. Но предупредил, что «специализируется на Kubernetes», так что официально он не должен активно помогать с запросами не по теме. Этот сервис сейчас находится на этапе бета-тестирования.
MagicHappens — это оператор PoC, предназначенный сугубо «для развлечения и экспериментов». Он определяет новый CRD (kind: MagicHappens
), который позволяет описывать задачи на человеческом языке — например, «создать такое-то пространство имён и такое-то деплоймент в нём». Когда оператор получает YAML-манифест с этим описанием, он отправляет его в OpenAI, чтобы получить соответствующий YAML, и применяет получившийся в результате манифест к кластеру. С апреля новых коммитов в этом проекте больше не было.
Kube or Fake это сугубо развлекательный онлайн-сервис, который выдаёт пять терминов Kubernetes, сгенерированных ChatGPT. Одни из них настоящие, а другие выдуманные, и пользователю нужно угадать, какие существуют на самом деле.
Наконец, неудивительно, что в последнее время функции на базе OpenAI встроили и в разные известные инструменты. На самом деле, их уже довольно много, так что не обещаю все их перечислить. Приведу в хронологическом порядке примеры, которые я успел посмотреть, — не все из них open-source, но по крайней мере они непосредственно связаны с известными open-source-проектами:
- Платформа ARMO на базе Kubescape может генерировать пользовательские элементы управления по запросу, сформулированному на человеческом языке и обработанному GPT-3 (февраль 2023).
- KubeVela Workflow позволяет использовать API OpenAI для валидации ресурсов Kubernetes, их качества и т. п. (апрель 2023).
- Monokle от Kubeshop умеет создавать YAML-ресурсы с помощью ИИ. Теперь можно создавать YAML-манифесты, используя промпты к ИИ и политики валидации (июнь 2023).
- Portainer вводит экспериментальную поддержку ChatGPT в Business Edition v2.18.3: он выдаёт готовые ответы о том, как развернуть приложения (июль 2023).
- У Argo CD появился ИИ-ассистент на платформе Akuity. Он работает на базе API OpenAI и помогает выявлять определённые проблемы, анализировать логи, выполнять действия по вашему запросу, и отвечает на вопросы (июль 2023).
Заключение
Привёл ли нас AIOps на «землю обетованную»? Конечно, ещё есть куда стремиться, но уже сейчас в open-source-экосистеме есть вполне жизнеспособные решения для администраторов и пользователей Kubernetes.
- В целом по числу разработчиков и пользователей самый успешный проект — это k8sgpt. Очень гибкое и расширяемое решение, которое на данный момент ориентировано на устранение неисправностей. Очень интересно посмотреть, по какому пути развития авторы и сообщество поведут его в ближайшем будущем.
- Бот ChatGPT от Robusta и Botkube от Kubeshop — это отличные решения в стиле ChatOps для тех, кто хочет упростить обработку оповещений в Slack с помощью идей искусственного интеллекта о том, что случилось и как это исправить.
- Для автоматизации создания YAML-манифестов подойдут kubectl-ai и kube-copilot.
Сфера AIOps активно развивается. Многие сегодняшние проекты исчезнут, но появятся новые, и со временем они станут неотъемлемой частью облачной экосистемы. Надеюсь, вам пригодился этот обзор актуального open-source-ландшафта.
Вы прямо сейчас можете воспользоваться Kubernetes от VK Cloud. Для тестирования мы начисляем новым пользователям 3 000 бонусных рублей, и мы будем рады вашей обратной связи.Stay tuned
Присоединяйтесь к телеграм-каналу «Вокруг Kubernetes», чтобы быть в курсе новостей из мира K8s: регулярные дайджесты, полезные статьи, а также анонсы конференций и вебинаров.