Open-Source инструменты для Kubernetes, основанные на OpenAI
Искусственный интеллект сегодня является самой актуальной темой абсолютно во всех сферах, и мир DevOps на базе Kubernetes не является исключением. Похоже, это вполне органично вписывается в жизнь инженеров-программистов, которые по своей природе являются большими энтузиастами автоматизации. На фоне ажиотажа, вызванного ChatGPT, начинают появляться и соответствующие проекты для операторов Kubernetes. Давайте посмотрим, какие именно инструменты с открытым исходным кодом, поддерживаемые OpenAI и ChatGPT, появились в последнее время с целью облегчить жизнь операторам K8s.
Устранение неисправностей K8s с помощью искусственного интеллекта
1. k8sgpt
- "Инструмент для сканирования кластеров Kubernetes, диагностики и устранения проблем на простом английском языке"
- Сайт: http://k8sgpt.ai/
- GitHub: https://github.com/k8sgpt-ai/k8sgpt
- Звезды GH: ~3100
- Первый коммит: 21.03.2023
- ~700 коммитов, 32 релиза, ~40 контрибуторов
- Язык: Go
Проект k8sgpt, созданный Алексом Джонсоном, является наиболее известным и заметным проектом в своей сфере.
Он представляет собой инструмент CLI, предназначенный для выявления проблем, возникающих в кластере Kubernetes. Для этого используются так называемые "анализаторы", которые определяют логику работы каждого объекта K8s и возможные проблемы, с которыми он может столкнуться. Например, анализатор для сервисов Kubernetes проверяет, существует ли данный сервис, а также готов ли он к работе.
Само по себе выявление такой проблемы не представляет особой сложности, но истинное «волшебство» скрыто намного глубже. Оно происходит тогда, когда Вы просите k8sgpt объяснить, что можно сделать с существующими проблемами, - для этого нужно всего лишь выполнить команду k8sgpt analyze --explain. Эта команда запросит у ИИ инструкции для Вашего конкретного случая и выведет их на экран. Они будут содержать описание действий по устранению неполадок, включая конкретные команды kubectl, которые необходимо выполнить простым копированием и вставкой.
В k8sgpt есть функция анонимизации (флаг --anonymize для команды k8sgpt analyze), которая предотвращает передачу конфиденциальных данных системе искусственного интеллекта. Полезно, не правда ли? Правда, на данный момент она реализована еще не во всех анализаторах.
На сегодняшний день в k8sgpt имеются встроенные анализаторы для множества объектов Kubernetes, включая узлы, PVC, сервисы, события, наборы состояний, CronJobs, сетевые политики и даже HPA и PDB. Расширить этот набор, создав свои собственные анализаторы, не составит большого труда.
- Еще одним преимуществом является то, что k8sgpt не ограничен одной системой искусственного интеллекта. Да, OpenAI является поставщиком ИИ по умолчанию, предоставляя доступ к известным языковым моделям GPT-3.5-Turbo и GPT-4. Однако, Вы можете выбрать и других поставщиков ИИ, среди которых в настоящее время присутствуют:
- Azure OpenAI;
- Cohere (был добавлен совсем недавно, 20 июля);
- LocalAI — локальная модель с AP, совместимой с OpenAII (например, Вы можете использовать ее совместно с llama.cpp и ggml — это позволит использовать ИИ даже в условиях воздушного зазора);
- FakeAI — для моделирования поведения системы искусственного интеллекта, не обращаясь к ней на самом деле.
K8sgpt также имеет API для интеграций, что позволяет использовать внешние инструменты, вызывая их возможности для решения проблем Kubernetes. В настоящее время реализована единственная интеграция для Trivy, известного сканера безопасности с открытым исходным кодом. После его включения через k8sgpt integration activate trivy (при условии, что Trivy Operator установлен в кластере) в k8sgpt появится новый фильтр под названием VulnerabilityReport. Доступ к нему можно получить с помощью команды k8sgpt analyze --filter VulnerabilityReport.
Последней, но не менее важной особенностью k8sgpt является возможность его установки в качестве оператора Kubernetes внутри кластера. Для этого воспользуйтесь приведенной схемой, доступной по ссылке. После установки и применения объекта конфигурации k8sgpt (K8sGPT) Ваш кластер будет проанализирован инструментом с сохранением результатов сканирования в объектах Results. Это означает, что их можно будет увидеть, выполнив команду kubectl get results -o json | jq .
k8sgpt вызвал большой интерес у сообщества. Ориентированный на поиск и устранение неисправностей в K8s, он оснащен готовыми к использованию функциями, разработанными специально для этой цели. Кроме того, он: а) гибкий для использования различных систем искусственного интеллекта и б) расширяемый для использования пользовательских анализаторов и интеграции сторонних инструментов.
2. ChatGPT бот для Kubernetes
- “ChatGPT бот для Kubernetes”
- GitHub: https://github.com/robusta-dev/kubernetes-chatgpt-bot
- Звезды GH: ~900
- Первый коммит: 10.01.2023
- ~40 коммитов, 7 контрибуторов
- Язык: Python
Данный проект, созданный Robusta, нацелен на устранение проблем Kubernetes путем интеграции искусственного интеллекта с оповещениями, отображаемыми в Slack.
Для использования этого бота необходимо выполнить следующие требования:
- уже иметь или быть готовым установить Robusta поверх Prometheus (VictoriaMetrics также поддерживается) и AlertManager;
- использовать Slack.
Если все уже готово, то оповещения о мониторинге уж будут отправляться в Slack через входящий webhook. Данный бот добавит кнопку "Спросить ChatGPT" к Вашим оповещениям в Slack. Нажав на нее, Вы запросите искусственный интеллект (используя ключ OpenAI API) и получите ответ, в котором будут указаны возможные действия по устранению интересующей Вас проблемы.
На данный момент все достаточно просто. Однако автор предлагает возможное дальнейшее усовершенствование этого способа работы за счет предоставления ИИ дополнительных данных - например, журналов Pod и вывода событий kubectl get. Если Вас заинтересовало данное предложение, то на GitHub Вы сможете найти сторонних разработчиков.
Плагины Kubectl с поддержкой искусственного интеллекта
3. kubectl-ai
- “Плагин Kubectl для OpenAI GPT”
- GitHub: https://github.com/sozercan/kubectl-ai
- Звезды GH: ~800
- Первый коммит: 20.03.2023
- ~50 коммитов, 11 релизов, ~10 контрибуторов
- Язык: Go
Этот проект был выпущен накануне «дня рождения» k8sgpt. Однако идея применения возможностей искусственного интеллекта в Kubernetes в данном случае совершенно иная.
Установленный как плагин kubectl, kubectl-ai содержит команду kubectl ai. С ее помощью можно получить из AI готовые YAML-манифесты в соответствии с Вашими потребностями. Приведем пример из README, не требующий дополнительных пояснений:
kubectl ai "create an nginx deployment with 3 replicas"
Attempting to apply the following manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Use the arrow keys to navigate: ↓ ↑ → ←
? Would you like to apply this? [Reprompt/Apply/Don't Apply]:
+ Reprompt
▸ Apply
Don't Apply
Опция "reprompt" позволяет уточнить полученный манифест путем изменения определенных параметров. Можно генерировать сразу несколько манифестов, что имеет смысл для взаимосвязанных объектов, таких как Deployment и Service. Когда предложенный вариант Вас устроит, его можно с легкостью применить на своем кластере.
Впоследствии Вы также можете модифицировать существующие объекты Kubernetes, попросив kubectl ai изменить их масштаб или другие параметры.
Что касается ИИ, то kubectl-ai поддерживает OpenAI API, Azure OpenAI Service и LocalAI для airgap (недавнее дополнение, датированное 31 июля). В качестве языковой модели по умолчанию используется GPT-3.5-Turbo, но поддерживается и GPT-4.
4. kubectl-gpt
- "Плагин kubectl для генерации команд kubectl на основе естественного языка с использованием модели GPT"
- GitHub: https://github.com/devinjeon/kubectl-gpt
- Звезды GH: ~40
- Первый коммит: 29.05.2023
- ~20 коммитов, 3 релизов, 1 контрибутор
- Язык: Go
Данный плагин представляет команду kubectl gpt, единственной задачей которой является исполнение Ваших «желаний», т.е. запросов в кластере Kubernetes. Ниже приведены примеры того, что можно ожидать от этого плагина:
kubectl gpt"Print the creation time and pod name of all pods in all namespaces."kubectl gpt"Print the memory limit and request of all pods"kubectl gpt"Increase the replica count of the coredns deployment to 2"kubectl gpt"Switch context to the kube-system namespace"
Результатом может быть как вывод информации, так и реальные действия, влияющие на ресурсы вашего K8s. В любом случае команда будет выполнена, но сначала она будет выведена на экран, чтобы Вы могли ее увидеть и подтвердить свое согласие на выполнение. При желании эти функции (печать сгенерированной команды/запрос подтверждения) можно отключить.
Для работы Kubectl-gpt требуется ключ OpenAI API. Поддерживается только GPT-3, по умолчанию включен GPT-3.5-Turbo. Могут использоваться любые языки, поддерживаемые OpenAI GPT API.
Данный проект разрабатывается энтузиастом-одиночкой и не обновлялся с конца мая.
Мультиинструменты AIOps для Kubernetes
Все проекты, описанные в данном разделе, были запущены примерно в одно и то же время. Их объединяет идея - предоставление пользователю различных функций с поддержкой искусственного интеллекта в процессе работы с кластером Kubernetes. Все они также имеют схожую статистику: один или несколько участников, около 100 звезд и десятки коммитов. Давайте посмотрим, что они предлагают и чем друг от друга отличаются.
5. kopilot
- “Ваш ИИ эксперт в области Kubernetes ”
- GitHub: https://github.com/knight42/kopilot
- Звезды GH: ~140
- Первый коммит: 19.03.2023
- ~40 коммитов, 3 релиза, 3 контрибутора
- Язык: Go
Kopilot - единственный из трех проектов, написанный на языке Go. Он выполняет две функции - поиск и устранение неисправностей и аудит.
Представьте, что у вас есть Pod, который застрял в Pending или CrashLoopBackOff. Вот тут-то и пригодится команда kopilot diagnose. Она обратится к искусственному интеллекту за помощью и выведет на экран ответ с возможными объяснениями причин произошедшего.
Рис 4
Не уверены, что Ваше развертывание достаточно хорошо? В таком случае команда kopilot audit проверит его на соответствие лучшим практикам и возможным ошибкам безопасности.
Для ответов этот инструмент будет использовать ваш API-токен OpenAI и выбранный Вами язык.
К сожалению, с начала апреля в проект не было внесено ни одного коммита, что вызывает очевидные опасения…
6. kopylot
- “ИИ ассистент для разработчиков Kubernetes ”
- GitHub: https://github.com/avsthiago/kopylot
- Звезды GH: ~70
- Первый коммит: 28.03.2023
- ~70 коммитов, 5 релизов, 2 контрибутора
- Язык: Python
Этот инструмент обладает аналогичными функциями аудита и диагностики, но при этом предоставляет команду "chat". Она позволяет создать достаточно специфический чатбот: Вы можете запросить на английском языке определенное действие, которое будет преобразовано в команду kubectl. Если выведенная команда устроит Вас, Вы сможете подтвердить ее выполнение. Именно это мы и увидели в kubectl-gpt.
Kopylot также предлагает команду "ctl" - простую обертку для kubctl, позволяющую выполнить любую команду напрямую, т.е. без вмешательства искусственного интеллекта. Эта функция, похоже, призвана сделать kopylot Вашим лучшим другом при работе с Kubernetes вместо старого доброго kubectl, который и так всегда доступен на всякий случай.
В настоящее время kopylot поддерживает только API-ключ OpenAI и не может работать с другими языками. Он опирается на модель text-davinci-003 GPT-3.5, которая считается устаревшей. Поддержка использования других моделей заявлена в дорожной карте проекта, но вероятность того, что это все-таки произойдет, невысока, поскольку последний релиз датирован 4 апреля.
7. kube-copilot
- “Kubernetes Copilot на базе OpenAI”
- GitHub: https://github.com/feiskyer/kube-copilot
- Звезды GH: ~70
- Первый коммит: 25.03.2023
- ~70 коммитов, 8 релизов, 1 контрибутор
- Язык: Python
Kubernetes Copilot выводит набор функций мультиинструмента на совершенно новый уровень. В дополнение к функциям поиска и устранения неисправностей Kubernetes данный инструмент может генерировать манифесты по Вашему запросу (как это делает kubectl-ai).
Аудит в kube-copilot более мощный, чем можно было бы ожидать. Хотя инструмент имеет команду "analyze" для выявления возможных проблем в ресурсах K8s (как это делает kopilot audit), в нем также есть команда "audit", которая использует сканер Trivy для поиска проблем с безопасностью.
Еще один момент, который следует отметить в kube-copilot, - это наличие двух интерфейсов: CLI и веб-интерфейс. Последний довольно прост, но, возможно, для некоторых пользователей он может оказаться "убийственной" функцией.
И последняя особенность CLI, о которой стоит упомянуть, заключается в том, что этот инструмент с удовольствием... погуглит за Вас прямо в терминале. Что ж, возможно, есть вопросы, которые лучше решать именно таким образом, а не в ChatGPT. Однако, на мой взгляд, это не самая важная вещь для инструмента, связанного с K8s.
Что же касается поддержки искусственного интеллекта, то kube-copilot работает с Вашим ключом OpenAI API или Azure OpenAI Service. Он позволяет использовать как GPT-3.5, так и GPT-4 модели.
Несмотря на то, что этот инструмент разрабатывается одним человеком, история его коммитов наиболее последовательна и, следовательно, многообещающа. Однако ни публичной дорожной карты, ни каких-либо других подтверждений, проливающих свет на развитие инструмента, пока нет.
Другие
Существуют и другие инструменты и сервисы для Kubernetes на базе OpenAI, о которых я также хотел бы упомянуть в этой статье.
Botkube от Kubeshop - это бот для обмена сообщениями (т.е. ChatOps) для мониторинга и отладки кластеров Kubernetes в Slack, Mattermost, Discord или Microsoft Teams. Недавно добавленный плагин Doctor позволяет взаимодействовать с искусственным интеллектом двумя способами: 1) задать чатботу интересующие Вас вопросы напрямую; 2) воспользоваться кнопкой "Получить помощь", которая появляется сразу под событиями ошибок. В ответ бот выдаст сгенерированные рекомендации по Вашему вопросу или проблеме. Для Aвключения этого плагина Botkube требуется ключ OpenAI API.
KubeGPT от metaKube - это не инструмент CLI, а онлайн чат, доступный в веб-браузере для общения с искусственным интеллектом по вопросам Kubernetes. Как и обычный ChatGPT, он может отвечать на общие вопросы (например, об архитектуре Kubernetes или некоторых лучших практиках), а также генерировать для Вас конкретные YAML-манифесты.
В общем-то, он был готов помочь мне и в других технических вопросах. Например, совершенно не имел ничего против предоставления информации о Nomad и даже дал рекомендации по установке Ubuntu Linux. Однако в сервисе предупредили, что "он специализируется именно на Kubernetes", поэтому формально он не должен оказывать какую-либо помощь по нецелевым запросам. В настоящее время этот сервис находится в стадии бета-тестирования.
MagicHappens - это PoC-оператор, который "предназначен исключительно для развлечений и экспериментов". Обратите внимание, что с апреля новых коммитов в этот проект не поступало…
Kube or Fake это развлекательный онлайн-сервис, который предоставляет Вам пять терминов Kubernetes, сгенерированных ChatGPT. Поскольку некоторые из них настоящие, а другие нет, Ваша задача - правильно определить их.
Наконец, нет ничего удивительного в том, что в последнее время в различные известные инструменты стали встраивать функции, работающие на базе OpenAI. На самом деле их уже достаточно много, поэтому я даже и не обещаю, что перечислю их все. Тем не менее, вот некоторые примеры - не обязательно Open Source, но, по крайней мере, непосредственно связанные с известными Open Source-проектами - представленные в хронологическом порядке:
- Платформа ARMO, основанная на Kubescape, может генерировать пользовательские элементы управления на основе Вашего запроса (февраль 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 г.)
Заключение
Безусловно, всегда есть, куда стремиться, но даже сейчас очевидно, что экосистема Open Source уже готова предложить администраторам и пользователям Kubernetes более чем достойные варианты:
- k8sgpt - наиболее успешный проект, привлекший большое количество участников и пользователей. В настоящее время ориентирован на поиск и устранение неисправностей, но является очень гибким и расширяемым, поэтому мне не терпится увидеть, что его авторы и сообщество смогут сделать в обозримом будущем;
- Бот ChatGPT от Robusta и Botkube от Kubeshop - хорошие варианты в стиле ChatOps, если Вы хотите упростить обработку оповещений о мониторинге в Slack;
- Рекомендую попробовать kubectl-ai или kube-copilot, если Вам нужно автоматизировать генерацию YAML-манифестов.
В настоящее время происходит взрывное развитие AIOps. Многие проекты, которые мы можем наблюдать сегодня, исчезнут, а многие другие – обязательно появятся и станут неотъемлемой частью экосистемы облачных вычислений. Я надеюсь, что данная статья оказалась для вас полезной.
P.S. Статья была написана старым добрым способом, полностью вручную, без использования ChatGPT =)










