uz
Feedback
ITTales :(){ :|:& };:

ITTales :(){ :|:& };:

Kanalga Telegram’da o‘tish

Этот чудесный мир IT Contact: @kvaps

Ko'proq ko'rsatish
1 611
Obunachilar
+124 soatlar
+57 kunlar
+3730 kunlar
Postlar arxiv
Опенсорснули aeman — инструмент для краткосрочного планирования который мы используем в Ænix. Это такой командный Todoist на стеройдах или opinionated вариант доски, со списком задач и краткосроными спринтами, нацеленный в первую очередь на инженерные команды. В качестве бэкенда используется GitHub Projects, UI работает поверх write-behind-кэша и отвечает мгновенно, а запись в GitHub уходит асинхронно. У самой доски Kubernetes подобный API и MCP-сервер для работы с AI-агентами Подробнее про сам инструмент и наши процессы можно почтитать тут: https://habr.com/ru/companies/aenix/articles/1062562/

Заопенсорсили ещё один наш инструмент — keycloak-kms-proxy. Начну с проблемы. Keycloak хранит PII пользователей — email, имя, фамилию, атрибуты и т.д. — в своей базе открытым текстом. Согласно GDPR эти данные считаются персональными и должны быть защищены в состоянии покоя. Обычное storage encryption или шифрование на стороне PostgreSQL помогают лишь частично: ключ всё равно живёт рядом с данными, внутри Postgres, а ещё такой подход не позволяет нормально ротировать ключи без остановки сервиса. Есть несколько неофициальных плагинов, решающих эту задачу, например Keycloak-PII-Data-Encryption-Provider. Но и у них хватает ограничений: жёсткая привязка к версии Keycloak, интеграция на уровне Java и статический ключ, передаваемый через переменную окружения. Мы пошли другим путём и сделали прозрачный прокси на уровне wire-протокола PostgreSQL. Он встаёт между Keycloak и его Postgres-базой: Keycloak думает, что работает с обычным Postgres, а прокси на лету шифрует нужные колонки при записи и расшифровывает их при чтении. Само решение построено по тем же принципам, что и механизм KMSv2 в Kubernetes. Каждое зашифрованное значение самоописываемое ($KKP$...), поэтому прокси спокойно работает с частично зашифрованной базой, пока backfill-утилита постепенно шифрует оставшиеся записи. Ротация KEK в Vault полностью прозрачна: версия ключа хранится вместе с каждым завёрнутым DEK, поэтому старые данные продолжают расшифровываться без каких-либо миграций. В Cozystack это уже встроено в системный пакет Keycloak как опциональная возможность. Достаточно включить флаг шифрования в Helm-чарте — прокси автоматически разворачивается, а Keycloak переподключается к нему без дополнительной настройки.

Repost from k8s (in)security
Марафон LPE уязвимостей в Linux продолжается. Команда Nebula Security раскрыла GhostLock (CVE-2026-43499), stack-use-after-fr
Марафон LPE уязвимостей в Linux продолжается. Команда Nebula Security раскрыла GhostLock (CVE-2026-43499), stack-use-after-free в подсистеме rtmutex ядра, который был внесён ещё в Linux 2.6.39 и просуществовал более 15 лет. Корень бага в том, что на proxy-пути функция remove_waiter() очищает pi_blocked_on не у той задачи, оставляя висячий указатель на освобождённый фрейм стека ядра. Затронуты практически все дистрибутивы без патча (диапазон от v2.6.39-rc1 до v7.1-rc1), причём триггер не требует ни привилегий, ни user namespaces, ни специальной конфигурации ядра. Ключевая опасность в том, что уязвимость превращается в container escape, локальный непривилегированный атакующий из контейнера может подняться до root на хосте. Авторы довели эксплойт до 97% стабильности через forge поддельного rt_mutex_waiter, перезапись inet6_protos[IPPROTO_UDP] и трюк с CPU entry area, за что получили 92 337 долларов в Google kernelCTF. Полностью рабочий эксплойт и PoC уже открыто выложены в репозитории CyberMeowfia на GitHub.

Прямо сейчас @lllampyr показывает свой новый CNI драйвер для KubeVirt на eBPF, кому интересно подлючайтесь https://zoom-lfx.platform.linuxfoundation.org/meeting/93845795591?password=a263fc60-ea72-41c8-84c8-a00d683ecee5

Repost from linkmeup
Хороша та CVE https://nvd.nist.gov/vuln/detail/CVE-2026-53359 , для которой уже POC есть https://github.com/V4bel/Januscape Опять или слили, или раскопали уязвимость с о-о-о-о-очень долгой историей, которую вдруг внезапно заметили и все такие «Ой-ой-ой, что же это делается». В общем, в KVM есть метод, как выйти за пределы виртуалочки на уровень хоста из-за ошибки 16 лет назад. То есть, буквально, коммит https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2032a93d66fa, где всё сломалось, был сделан в августе 2010. А пофиксили всё 19 июня в этом году. https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=81ccda30b4e8 Одно хорошо – нужен локальный рут.

Я всё ждал какого-то RFC или общепринятого стандарта на трейлеры описывающие использование AI-агентов в ваших коммитах. Из пр
Я всё ждал какого-то RFC или общепринятого стандарта на трейлеры описывающие использование AI-агентов в ваших коммитах. Из практики нескольких крупных проктов: - Linux Kernel - Fedora - LLVM Популярность получил Assisted-By: <your AI agent> В Kubernetes однако же есть строгий запрет на любые трейлеры, включая этот. А при создании пулреквестов вас обязывают расскрыть использование AI в явной форме. И теперь я понял почему. Согласно правовой системе США, под которую попадают и все проекты CNCF, ваш код помеченный трейлером
Co-Authored-By: Claude <noreply@anthropic.com>
который Claude Code так заботливо штампует во все ваши коммиты, автоматически распространяет права на этот код и Антропику. То есть, согласно законодательству, он может реально на него претендовать. По данной проблеме заведён issue, предлагающий заменить Co-Authored-By на Assisted-By, но антропики кажется не торопятся. Факт остаётся фактом, единого стандарта до сих пор нет, но Co-Authored-By им точно не станет. А пока что предлагаю поддержать инициативу и перестать использовать Co-Authored-By для AI-агентов в своём коде. Лично я переключаюсь на Assisted-By по умолчанию. Но и конечно же читайте правила проекта, как оформлять свои коммиты для контрибьюта во внешние проекты.

Следующая мысль - это агенты, visibility это хорошо, но я не хочу следить за агентами, я хочу чтобы агенты работали сами и пр
Следующая мысль - это агенты, visibility это хорошо, но я не хочу следить за агентами, я хочу чтобы агенты работали сами и приходили ко мне с вопросами. К чему я хочу стремиться? - Мне нужен условный Meeseeks Box 🗳 с красной кнопкой. Я нажимаю на кнопку появляется Mr. Meeseeks, говорю что оно мне нужно и дальше он бежит и делает задачу пока не выполнит. Каждый Mr. Meeseeks живёт только для того чтобы выполнить задачу, он чуствует себя плохо если не может завершить её в срок. При необходимости Mr. Meeseeks может сам вызвать других Mr. Meeseeks чтобы они помогли ему с решением проблемы. (отсылка к Рик и Морти) Забавно но кто-то по мотивам мульт-сериала уже создал агента и скилл для Claude Code. Применять в продакшене я это, конечно, не стал, но я пошёл дальше и начал работать над созданием оркестратора над claude agents. Что я понял для себя: мне нужен mcp-сервер для claude-agents и набор инструкций как с этим работать. Мне нужна одна управляющая сессия которая будет меня менеджерить и дать возможность ей работать с агентами, запускать, общаться, переименовывать точно так же как это делаю я. В качестве интерфейса с человеком - это по прежнему чат, здесь ограничение вызвано в первую очередь мной (человеком) и моей пропускной способностью. Я не смогу следить за 20 агентами и при этом сохранять контекст, мне нужен менеджер, который будет этим управлять. В итоге родился https://github.com/kvaps/claude-agents-mcp Теперь клод может самостоятельно работать с сессиями, а я могу оперативно подключиться к ним и проконтроллировать его работу

Итак находка первая - это claude agents https://code.claude.com/docs/en/agent-view Как оказалось в официальном claude code ес
Итак находка первая - это claude agents https://code.claude.com/docs/en/agent-view Как оказалось в официальном claude code есть так называемый agent view. Его изначальное предназначение - это менеджер долгоживущих background-сессий. Так получилось что именно такие я и использую. Абсурд ситуации дошёл до того что мне проще переиспользовать существующую сессию чем заново объяснять контекст в новой. Но таких постоянных сессий у меня около 10 штук. Так вот что бы в этом всём этом бардаке не теряться claude agents позволяет выводить их все на одном экране, переименовывать, видеть статусы и переключаться между ними. Я даже перестал использовать свой плагин для tmux который выводит статусы в таб, и настроил себе алиас:
alias ca='claude agents'
Сейчас я запускаю клод только таким образом. Что удобно, в случае запуска новой сессии через claude agents, клод автоматом подхватывает директорию проекта, в которой я сейчас нахожусь, но в то же время я в любой момент могу нажать ← и увидеть список всех других сессий запущенных таким же образом в других проектах. Я могу быстро переключиться меду ними или даже закрыть окно, и вернуться к нему позже. Сессии продолжат работать в бэкграунде. В итоге все мои сессии живут долго, переживают перезапуск компа, а я оперативно вижу все статусы и если агент требует моего внимания.

/me в очередной раз взглянув на свою колонку In Progress на рабочей доске (задачи на сегодня) взргустнул и подумал нужно эвул
/me в очередной раз взглянув на свою колонку In Progress на рабочей доске (задачи на сегодня) взргустнул и подумал нужно эвулюционировать и продолжать оркестрировать свою работу дальше. Всё сводится к тому что нужно строить свой собственный meta-harness над claude code. Все предпосылки к этому уже выполнены: - уже давнее время мы собираем транскрипты всех встреч в компании, они дают отличный артефакт для постановки задачи и начала работы. - пачка MCP-серверов уже настроены во всевозможные каналы (google workspace, github, telegram, slack, read.ai) и прочее, могут постить от моего имени, забирать и отправлять документы. - как жить с 4+ сессиями и не сойти с ума? И вот тут поподробнее Когда эта проблема возникла, я начал ресёрчить, первым же делом я обратился к коллегам, в частности к @xor_dev (тимлиду нашей reliability команды по Cozystack) У которого, в виду загруженности и разрозненности задач такая проблема была испокон веков. Ваня постоянно поддерживает контекст с десятками клиентов и контроллирует работу команды. Для того чтобы контекст не разъезжался, в первую очередь у него в голове, он сделал свой тул - Grimoire, который содержит в себе базу данных по каждому проекту и клиенту, и позволяет запускать сессии Claude Code прямо в браузере. Через стартовый промпт он сразу инструктирует их куда и как складывать контекст, откуда его вычитывать и как работать с этой системой. В отличие от Obsidian вся история чуть-более интерактивная и крутится вокруг заметок. Каждая заметка - это своего рода entrypoint для входа в интерактивную сессию. В интерфейсе можно выбрать заметку и запустить из неё нового агента, который уже будет знать весь необходимый контекст и обогощать общую базу знаний. Исходники Grimoire пока недоступны публично. Ваня планирует опубликовать их в ближайшем будущем. Сфера мета-оркестрации AI-агентов сейчас ещё достаточно молодая, проверенных решений и готовых концепций практически нет и из-за этого легко уйти не туда. Прежде чем полностью погрузиться в готовое решение я решил пройти тот же путь и выработать подходы самостоятельно. Следующие несколько постов будут именно про это.

А вот и предпосылки, с чего начался весь этот сыр-бор https://habr.com/ru/news/1046756

Ну все, доигрались, теперь доступ к определенным AI-моделям - это вопрос нац.безопасности США. https://habr.com/ru/companies/aenix/articles/1047018/

Vibe Coding: как внедрять ИИ в инженерные процессы без магии и самообмана В этом выпуске я рассказываю, как мы используем Claude Code и AI-агентов в повседневной работе инженерной команды Ænix. За последний год AI для нас перестал быть просто помощником для генерации кода. Сегодня он участвует практически во всех процессах: разработке, отладке, код-ревью, исследованиях, документации, поддержке клиентов и даже подготовке архитектурных решений. 0:00 Почему мы считаем себя AI-first компанией 2:29 Какие модели и инструменты используем на практике 5:11 Как организовать работу команды вокруг Claude Code 12:00 CLAUDE.md, AGENTS.md и правила для агента 14:55 Как работать с контекстом, планами и памятью агента 21:02 Скиллы: как шарить знания внутри команды 26:07 MCP, хуки и автоматизация внешних систем 30:15 Как писать промты и общаться с нейронкой 33:24 Реальные кейсы: презентации, сайт и фронтенд 38:09 Когда агентный подход работает, а когда превращается в самообман 46:06 Линтеры, параллельные агенты и код-ревью 55:03 Spec-driven разработка: где граница между инженером и AI 58:31 Дебаг Kubernetes и инфраструктуры через AI 1:02:34 Постмортемы и артефакты сессий 1:05:55 RTFS: читаем исходники open-source вместо документации

Ralph Wiggum простыми словами: цикл в Claude Code, который не останавливается https://habr.com/ru/companies/aenix/articles/10
Ralph Wiggum простыми словами: цикл в Claude Code, который не останавливается https://habr.com/ru/companies/aenix/articles/1041372/

Последний мейнтейнер Недалёкое будущее. В каждом GitHub-репозитории появилась программа-хранитель. Он отвечает на issues, обн
Последний мейнтейнер Недалёкое будущее. В каждом GitHub-репозитории появилась программа-хранитель. Он отвечает на issues, обновляет зависимости, пишет код и годами поддерживает проект почти без участия людей. Казалось бы, что могло пойти не так? https://habr.com/ru/articles/1041332/

Третья часть серии про внутренности controller-runtime и Kubernetes API. Теперь поговорим про жизненный цикл объектов в Kuber
Третья часть серии про внутренности controller-runtime и Kubernetes API. Теперь поговорим про жизненный цикл объектов в Kubernetes. Что происходит между kubectl apply и записью в etcd? Как работают admission webhooks, ownerReferences, финализаторы и Garbage Collector? Почему объекты застревают в Terminating и как Kubernetes выполняет каскадное удаление? Эволюция CRD от v1alpha1 до v1, conversion webhooks и совместимость между версиями API. https://habr.com/ru/companies/aenix/articles/1040618/

Для тех кому интересно что из этого в итоге вышло, вчера выехала первая версия Blockstor. Пайплайн готов, тест кейсы собраны.
Для тех кому интересно что из этого в итоге вышло, вчера выехала первая версия Blockstor. Пайплайн готов, тест кейсы собраны. Развлечение на вечер пятницы обернулось приключением на три недели. Но весь необходимый функционал был реализован, включая DRBD, ZFS, LVM, шифрование, снапшоты, совместимость с linstor-клиентами была сохранена. Анонс на опеннете: https://www.opennet.ru/opennews/art.shtml?num=65546 Исходники проекта: https://github.com/cozystack/blockstor Присоединяйтесь к разработке и тестированию

Вторая часть серии про внутренности controller-runtime и Kubernetes API — теперь про запись. Если в прошлый раз говорили про
Вторая часть серии про внутренности controller-runtime и Kubernetes API — теперь про запись. Если в прошлый раз говорили про кэш, watch'и и чтение объектов, то теперь разберём: как работает three way merge и server side apply, зачем нужны managedFields, как apiserver хранит ownership полей. И главное — как всё это позволяет нескольким контроллерам безопасно менять один объект одновременно. https://habr.com/ru/companies/aenix/articles/1039282/

Век живи — век учись ☹️ Через каждого инженера проходит такое количество информации, что часть вещей вроде бы и слышал, но до
Век живи — век учись ☹️ Через каждого инженера проходит такое количество информации, что часть вещей вроде бы и слышал, но до конца не осознал или просто никогда не применял на практике. Сегодня словил себя на этом же 👀 Всегда думал, что в Kubernetes есть только: • SelfSubjectAccessReview — проверка «могу ли Я сделать действие» • SubjectAccessReview — проверка «может ли другой пользователь/SA сделать действие» Например:
kubectl auth can-i create pods
А оказывается есть еще и:
kind: SelfSubjectRulesReview
Эта штука позволяет получить effective RBAC rules для текущего пользователя в рамках namespace. Пример:
apiVersion: authorization.k8s.io/v1
kind: SelfSubjectRulesReview
spec:
  namespace: default
или привычнее:
kubectl auth can-i --list -n default
Но тут есть интересный нюанс: SelfSubjectRulesReview namespace-oriented и не умеет нормально показывать “все права во всем кластере”. То есть cluster-scope права приходится проверять точечно:
kubectl auth can-i list nodes
kubectl auth can-i list namespaces
****
Может это и хорошо забытое старое но приятное 😇

Сегодня наткнулся на интересный тред про серый рынок “дешёвого Claude API”. На TaoBao и других площадках сейчас можно купить “безлимитный Claude Opus” за пару баксов. На практике же вам дают не “дешёвый доступ к Opus”, а обычный relay между вами и настоящим API. И, кажется, весь смысл таких сервисов вообще не в продаже токенов. А в сборе всего, что через них проходит. Причём речь уже даже не столько про SSH keys, kubeconfig’и или внутренние документы компаний. Основная цель всей этой истории — попытка массово спарсить frontier-модели. Собирать: — промпты, — reasoning, — agent workflows, — код, — ответы модели, — реакции пользователей, — паттерны использования, а дальше использовать это для distillation, fine-tuning и обучения собственных моделей. Иначе экономика таких сервисов выглядит довольно странно. И да, в какой-то момент вместо Opus вам вполне может отвечать вообще другая модель, а вы этого даже не заметите. Зато всё, что вы через неё прогоняете, остаётся у владельцев relay. https://x.com/i/status/2056626175959826692