ITTales :(){ :|:& };:
1.54K subscribers
126 photos
16 videos
6 files
529 links
Этот чудесный мир IT

Contact: @kvaps
Download Telegram
Мне тут закинули интересный проект - T4.

По сути это такой git с S3-бэкендом и фронтендом в виде etcd.
Снаружи всё выглядит как обычный etcd-compatible datastore, а внутри вместо привычного "храним состояние" - просто поток изменений, который складывается в виде WAL в object storage.

Если подумать, модель довольно нетипичная: источником истины становится не состояние, а лог изменений.
А дальше из этого уже вытекают все побочные эффекты — можно откатываться, воспроизводить состояние, делать форки и гонять эксперименты отдельно от прода.

Автор явно смотрит в сторону сценария "а давайте заменим etcd в Kubernetes", и это звучит странно ровно до того момента, пока не задумываешься, что control plane - это по сути и есть машина состояний, которую мы постоянно мучаем бэкапами, ресторами и попытками понять "а что вообще произошло".

Пока это всё выглядит как эксперимент и есть куча вопросов по перформансу и консистентности. Но сама идея сильная:
не хранить состояние как главную сущность, а хранить историю, из которой оно получается.

И это как раз тот случай, когда сначала думаешь "что за дичь", а потом "блин, а ведь в этом и правда что-то есть" 🙂
17🔥5👀5
Вышел подкаст DevOps Paradox со мной 🎙️

Поговорили про Kubernetes, путь Ænix и Cozystack, попытки собрать "свой AWS" для on-prem. Обсудили современные тренды и конечно же AI, как он помогает нам в работе уже сегодня.

https://www.devopsparadox.com/episodes/cozystack-turns-bare-metal-into-a-managed-services-platform-347/
👍7🔥73
Если ещё беспокоитесь за copy.fail в своих кластерах - вот изи-фикс.

Маленький DaemonSet, грузит BPF-LSM хук на socket_create и режет любые попытки открыть AF_ALG. Без ребута, без пересборки ядра, без правки cmdline.
Работает на Talos Linux, где rmmod архитектурно недоступен (SELinux + lockdown + контроллер не умеет unload).

Ставится одной командой:
kubectl apply -f https://raw.githubusercontent.com/cozystack/copy-fail-blocker/main/manifests/copy-fail-blocker.yaml


https://github.com/cozystack/copy-fail-blocker
👍13🔥7💩5🤡1🤓1
Магия кэша в controller-runtime: почему ваши контроллеры быстрые, стабильные и не убивают apiserver

Если вы когда-нибудь писали Kubernetes-контроллер на Go, то почти наверняка использовали controller-runtime.
А если использовали — значит, пользовались одной из самых недооценённых и мощных частей всего Kubernetes-стека: кэшем controller-runtime.

https://habr.com/ru/companies/aenix/articles/1031818/
👍10🔥62
Переписываем LINSTOR на go с Claude Code

В качестве пятничного эксперимента решил запустить шайтан машину и посмотреть что из этого получится.
Минимум вовлечённости, максимум слопа! 👃

Стрим в реальном времени: https://asciinema.org/s/wO0WH3M3bTqdSvm1
Репозиторий: https://github.com/cozystack/blockstor
Чат в котором ведётся обсуждение: @cozystack_ru
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😁5🥴3👀3🌚1
Пользуюсь майндкартами ровно для одного кейса — когда готовлюсь к презентации.

На мой взгляд, главное преимущество майндкарт — это быстрое и удобное перемещение по дереву. Мне крайне важно видеть всё дерево целиком и иметь простую навигацию по нему: создавать элементы, удалять, сворачивать/разворачивать — и конечно же всё это с клавиатуры.

К сожалению, все доступные сейчас реализации либо ужасно неудобные, либо ужасно нефункциональные.

Есть формат Markmap, который позволяет писать майндкарты на Markdown. Он весьма неплохой, но в нём нет возможности генерировать Markdown обратно из самой майндкарты, а мне как раз нужно именно это.

Хочется спокойно накидать мысли, не отвлекаясь на форматирование, получить готовый Markdown и уже с ним идти к нейронке.

В общем, сделал для себя тулзу, теперь несу её вам.
https://kvaps.github.io/stackmind/

Прощай FreeMind, пора отправлять тебя на помойку.
11👍8🔥3🥴1
Зацените какую штуку тут товарищ написал:
https://github.com/crust-gather/crust-gather

Она сохраняет стейт Kubernetes кластера в OCI-имадж (со всеми CRD, статусами, ивентами, подами и их логами)

Потом его можно запустить локально и в нем покопаться обычным kubectl. Можно клода натравить, можно k9s, и т.п.

Идеально подходит чтобы интегрировать в свой пайплайн. Написано на rust'е.

Завтра будет рассказывать о ней на KCD
https://kcd-czech-slovak-2026.sessionize.com/session/1195463

(есть прямая трансляция)
🔥26👍4
Сегодня наткнулся на интересный тред про серый рынок “дешёвого 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
👍13
Forwarded from Безумный кот
Век живи — век учись ☹️

Через каждого инженера проходит такое количество информации, что часть вещей вроде бы и слышал, но до конца не осознал или просто никогда не применял на практике.

Сегодня словил себя на этом же 👀

Всегда думал, что в 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
****


Может это и хорошо забытое старое но приятное 😇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥124👍2😱2
ITTales :(){ :|:& };:
Магия кэша в controller-runtime: почему ваши контроллеры быстрые, стабильные и не убивают apiserver Если вы когда-нибудь писали Kubernetes-контроллер на Go, то почти наверняка использовали controller-runtime. А если использовали — значит, пользовались одной…
Вторая часть серии про внутренности controller-runtime и Kubernetes API — теперь про запись.

Если в прошлый раз говорили про кэш, watch'и и чтение объектов, то теперь разберём: как работает three way merge и server side apply, зачем нужны managedFields, как apiserver хранит ownership полей.

И главное — как всё это позволяет нескольким контроллерам безопасно менять один объект одновременно.

https://habr.com/ru/companies/aenix/articles/1039282/
🔥12👍2
ITTales :(){ :|:& };:
Переписываем LINSTOR на go с Claude Code В качестве пятничного эксперимента решил запустить шайтан машину и посмотреть что из этого получится. Минимум вовлечённости, максимум слопа! 👃 Стрим в реальном времени: https://asciinema.org/s/wO0WH3M3bTqdSvm1 Репозиторий:…
Для тех кому интересно что из этого в итоге вышло, вчера выехала первая версия Blockstor. Пайплайн готов, тест кейсы собраны. Развлечение на вечер пятницы обернулось приключением на три недели. Но весь необходимый функционал был реализован, включая DRBD, ZFS, LVM, шифрование, снапшоты, совместимость с linstor-клиентами была сохранена.

Анонс на опеннете:
https://www.opennet.ru/opennews/art.shtml?num=65546

Исходники проекта:
https://github.com/cozystack/blockstor

Присоединяйтесь к разработке и тестированию
🔥17❤‍🔥2👍1🤡1💊1😎1
ITTales :(){ :|:& };:
Вторая часть серии про внутренности controller-runtime и Kubernetes API — теперь про запись. Если в прошлый раз говорили про кэш, watch'и и чтение объектов, то теперь разберём: как работает three way merge и server side apply, зачем нужны managedFields, как…
Третья часть серии про внутренности 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/
🔥10❤‍🔥2👍1
Последний мейнтейнер

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

https://habr.com/ru/articles/1041332/
😁3❤‍🔥1🔥1