Документация/Продакшен
Kubernetes: кластеры в приложении
Как смотреть и менять кластеры прямо в DevMachine через ваш kubectl и kubeconfig и как дать агенту читать и чинить их, с вашим подтверждением там, где это важно.
Бета
Вид «Kubernetes» и доступ агента к кластерам — бета-функции. Поведение и подписи могут меняться.
Вид «Kubernetes» — просмотрщик и пульт ваших кластеров прямо в DevMachine. В нём списки ресурсов, манифесты, логи подов,
терминал в контейнере, проброс портов, Helm, графики и алерты. Вид работает через ваши kubectl, helm и kubeconfig:
своих доступов к кластерам приложение не хранит и ничего в кластер не устанавливает. Если включить модуль «Kubernetes»
в «Настройки → Модули», агент тоже сможет читать кластеры и выполнять простые действия. Модуль — набор инструментов,
инструкций и навыков агента для одной области, подробнее — на странице Модули.
Что нужно
kubectlна компьютере — обязательно. Без него вид покажет «kubectl не установлен».- kubeconfig в
~/.kube/config. Каждый контекст kubeconfig — отдельный кластер в приложении. - По желанию:
helm— для раздела «Helm»; metrics-server в кластере — для CPU и памяти в списках; Prometheus и Alertmanager в самом кластере — для графиков и алертов.
Добавить кластер в самом приложении нельзя. Добавьте его командой своего облачного провайдера или положите kubeconfig в
~/.kube/config, затем нажмите «Обновить».
Как открыть
- В полосе заголовка окна откройте меню «Другие инструменты» и выберите «Kubernetes».
- Слева — полоса кластеров, по значку на каждый контекст. Нажмите на нужный.
- Чтобы вернуться в чат, нажмите кнопку «Kubernetes» ещё раз.
Кнопку можно вынести из меню прямо в полосу заголовка: «Настройки → Расположение панелей». Слэш-команды у этого вида нет.
Кнопка «Открепить в отдельное окно» в шапке вида переносит его в своё окно, «Вернуть в ADE» — обратно. Кнопка «Агент» показывает разговор с агентом рядом с кластером.
Как пользоваться
Сводка кластера
В шапке вида — имя кластера, выбор «Namespace» («Все» или один) и числа состояния: Alerts, CPU, MEM, Nodes,
Pods not running, Warnings, K8s. CPU и память показаны долей от ёмкости узлов: от 75 % число становится жёлтым,
от 90 % — красным. На виду только числа, которые о чём-то говорят, остальные спрятаны за кнопкой «Состояние».
Пока окно DevMachine на экране, приложение раз в минуту проверяет кластер, который вы открывали последним. Если нашлась проблема, на кнопке «Kubernetes» (или на «Другие инструменты») появляется красная или жёлтая отметка, а подсказка называет причину: сработал алерт, не готовы узлы, CPU на пределе, не запущены поды.
Списки и объекты
Слева — дерево разделов: «Workloads», «Network», «Config», «Storage», «Access Control», «Helm», «GitOps», «Cluster».
Таблицы выглядят как вывод kubectl get и сами обновляются раз в 5 секунд. «Фильтр по списку» ищет по любой ячейке.
Чтобы открыть объект, нажмите на его строку. Вкладки объекта: «Manifest», «Events», «Pods», «Logs» (у пода), «Metrics», «Permissions» (у ServiceAccount). У релиза Helm — «Values» и «History». Значения переменных окружения и секретов в манифесте скрыты.
Логи пода
Вкладка «Logs» показывает последние 500 строк и дальше дописывает новые. Там же «Follow» / «Stop following», «Previous» (предыдущий запуск), выбор «Container», «Поиск в логе» и «Скачать». Логи вы видите без маскирования.
Действия и правка манифеста
В меню «Действия» — «Restart», «Scale…», «Delete», «Cordon» / «Uncordon», у релиза Helm — «Rollback…» и «Uninstall». Перед каждым действием приложение просит подтверждения и называет кластер и namespace. Namespace, узел или том из вида не удалить — только в терминале.
Кнопка «Edit» на вкладке «Manifest» открывает YAML в редакторе. «Применить» сначала проверяет текст пробным прогоном на сервере, а потом заменяет объект. Если после того, как вы открыли объект, его кто-то изменил, приложение не затрёт чужие правки и предложит «Перечитать» или «Отмена».
Терминал в контейнере и проброс портов
- «Exec» у пода открывает вкладку терминала с
kubectl execв контейнер. Для этого должен быть открыт проект. - «Port Forward» у пода или сервиса: выберите «Remote port» и «Local port» и нажмите «Forward». Порт открыт только на этом компьютере и работает, пока вы не остановите проброс или не закроете приложение. Все пробросы собраны в списке «Port Forwards» в шапке вида, там же «Открыть в браузере» и «Остановить».
Графики и алерты
Вкладка «Metrics» строит графики «CPU», «Memory», «Network RX» и «Network TX» за час, 6 или 24 часа. Данные приложение берёт из Prometheus самого кластера: находит его среди сервисов и запрашивает через API-сервер с вашим доступом. Если Prometheus нет, графиков не будет. Текущие CPU и память всё равно останутся в списках, если в кластере есть metrics-server.
Алерты приложение читает из Alertmanager кластера. Число Alerts открывает список
«Сработали сейчас — из Alertmanager кластера». О новом алерте приложение сообщает, пока запущено, и только по кластеру,
который вы открывали последним.
Helm, Flux и Argo CD
Раздел «Helm» появляется, если на компьютере есть helm. В нём релизы, их значения и история, «Rollback…» и
«Uninstall». Обновить чарт из вида нельзя. Раздел «GitOps» только показывает объекты Flux и Argo CD, если они
установлены в кластере.
Метка окружения: dev, stage, prod
У каждого кластера есть метка окружения. От неё зависит, что агент делает сам, а о чём спрашивает. Встроенные
метки — dev, stage и prod. Можно добавить свои, например demo: каждая ведёт себя «Как dev», «Как stage» или
«Как prod».
Пока вы не выбрали метку, приложение угадывает её по имени: prod, production, live → prod; stage, staging →
stage; dev, test, qa, local, minikube, kind, Docker Desktop, OrbStack → dev. Всё остальное приложение считает
prod, даже 127.0.0.1: за локальным адресом часто прячется туннель к рабочему кластеру.
Метку можно сменить в двух местах:
- в полосе кластеров: правой кнопкой по кластеру → «Метка окружения»;
- в «Настройки → Безопасность агента → Подключения → Кластеры Kubernetes».
Метка привязана к самому кластеру, к адресу его API-сервера. Если переименовать контекст или завести ещё один к тому же
кластеру, метка останется той, что вы выбрали. Исключение — кластер на адресе этого компьютера, например 127.0.0.1: у
такого кластера метка привязана к контексту.
Метки приложение шифрует системной связкой ключей, поэтому агент не сможет «перекрасить» prod в dev, поправив файл.
Агент и кластеры
Как включить
- Откройте «Настройки → Модули» и включите «Kubernetes». Модуль встанет в группу «У агента». Если приложение не найдёт kubeconfig, рядом с модулем будет отметка «Требует настройки», а инструментов у агента не будет, пока kubeconfig не появится.
- Изменение действует в новых чатах. Для текущего чата есть «Применить к открытой сессии», подробнее — на странице «Модули».
Без модуля у агента нет инструментов для кластеров. Сам вид от модуля не зависит и токенов не тратит.
Что может агент
- Читать: список кластеров, списки 16 видов ресурсов (поды, деплойменты, сервисы, узлы, события и другие), описание объекта без значений переменных окружения, CPU и память, статус и историю выкатки деплоймента.
- Читать логи одного пода.
- Читать Secret, ConfigMap и значения переменных окружения — отдельным запросом, в котором агент называет причину.
- Выполнить одно действие над одним объектом: изменить число реплик, перезапустить, откатить, приостановить или продолжить выкатку, сменить образ, удалить, сделать cordon / uncordon узла.
Через модуль агенту недоступны разделы «Access Control», «Helm» и «GitOps», а также apply, exec и проброс портов.
Если агент запускает kubectl, helm или другой клиент кластера в своём терминале, действуют те же правила, что описаны
ниже.
Когда агент обращается к кластеру, вид «Kubernetes» сам выходит в центр окна, а чат переезжает вправо. Окно перестраивается так не чаще раза в 30 секунд и никогда — пока вы печатаете.
Доступ и подтверждения
У каждого кластера свой уровень доступа агента: «Закрыт», «Чтение» или «Чтение и действия». По умолчанию кластер открыт на уровне «Чтение и действия». Сменить уровень и ограничить агенту namespace и типы ресурсов можно в «Настройки → Безопасность агента → Подключения → Кластеры Kubernetes».
Что агент делает сам, а что после вашего «Разрешить», зависит от метки и режима чата. Режим задаёт, как часто агент спрашивает разрешения: в «Авто» — перед рискованными действиями, в «Полном» — только перед самыми опасными (Режимы агента). В «Авто» с настройками по умолчанию правила такие:
| Действие агента | dev | stage | prod |
|---|---|---|---|
| Списки, статусы, описания | сам | сам | сам |
| Логи пода | сам | сам | спросит |
| Secret, ConfigMap, переменные окружения | спросит | спросит | спросит |
| Изменения: реплики, перезапуск, образ | сам | спросит | спросит |
| Удаление, cordon | спросит | спросит | запрещено |
В режиме «Полный» агент спрашивает только об изменениях и секретах на prod, а удалять на prod ему по-прежнему запрещено. Любую строку таблицы можно перенастроить в «Настройки → Безопасность агента → Действия», тема «Kubernetes». Подробно об уровнях и режимах — на страницах «Доступ агента к базам, кластерам и очередям» и «Режимы агента».
Карточка подтверждения показывает кластер, его метку, аргументы вызова и причину, которую назвал агент. «Разрешить» действует один раз и только на этот вызов. Варианта «больше не спрашивать» у таких карточек нет. Разрешить с телефона нельзя, только отказать: что и где выполнит агент, видно за компьютером.
Что получает агент
Перед тем как отдать агенту ответ кластера, DevMachine его чистит: заменяет значения переменных окружения на ***, у
Secret оставляет только ключи и размеры, обрезает найденные в строках ключи и токены, укорачивает длинный ответ. Свои
правила маскирования для кластера можно задать там же, в «Подключениях». Маскирование работает по шаблонам и ловит не
всё, поэтому главная защита — подтверждения.
Ограничения
- Всё это работает на macOS, Linux и Windows, если приложение находит
kubectl. На Windows оно ищетkubectlтолько поPATH, а «Exec» там недоступен. - Для проекта на сервере по SSH вид работает на вашем компьютере, с его
kubectlи kubeconfig. Инструменты агента тоже выполняет ваш компьютер. «Exec» для такого проекта приложение не предлагает. - На Linux без системной связки ключей уровни и метки действуют только до закрытия приложения.
- Нет: добавления кластеров в приложении, произвольных CRD (кроме Flux и Argo CD), обновления релиза Helm, синхронизации GitOps, удаления namespace, узлов и томов из вида.
- Ответа на один запрос к кластеру приложение ждёт до 20 секунд. Ответ больше 16 МБ оно отклоняет — сузьте запрос.
- Алерты приходят, только пока приложение запущено, и на телефон не уходят.
Какие данные куда уходят
Вид обращается к кластеру напрямую с вашего компьютера, через ваш kubectl. Сводка, графики и алерты не проходят через
серверы DevMachine. Учётные данные кластера приложение не читает и не хранит. То, что прочитал агент, попадает в запрос
к модели и уходит к ней через сервер DevMachine, подробнее — на странице «Данные и приватность».
Что дальше
- Доступ агента к базам, кластерам и очередям
- Макросы — проверенные команды с кнопками на алертах и подах
- Инциденты — «Отметить инцидент» на поде
- Модули
Обновлено · Нашли неточность? Напишите на support@devmachine.ai или в Telegram.
