Обновить
64K+
100
Тимур Тукаев@TimurTukaev

COO @ Ænix, Open Source Enthusiast

129,7
Рейтинг
48
Подписчики
Отправить сообщение

Палеокомпьютинг, часть 1: процессор Вирта, проект Оберон, новая архитектура в Qemu и KubeVirt и запуск в Cozystack и K8s

Время на прочтение58 мин
Охват и читатели5.6K

1 января 2024 года умер Никлаус Вирт, человек, который придумал Pascal, Modula-2 и Oberon, получил премию Тьюринга и всю жизнь упрямо воевал с раздутым софтом. Мало кто знает, что уже глубоко за семьдесят он сел и спроектировал собственный процессор, маленький и простой, чтобы на нём можно было показать студентам компьютер целиком, от логических вентилей до окон на экране.

В сентябре 2026 года я взял этот процессор и попробовал запустить его везде, куда смог дотянуться. Сначала прямо во вкладке браузера, причём не в эмуляторе, а в виде той самой схемы, которую нарисовал Вирт. Потом в QEMU, как обычную виртуальную машину. Потом в Kubernetes, где вообще-то живут совсем другие виртуалки, с Ubuntu и базами данных. И в конце концов в Cozystack, нашей облачной платформе, где машину Вирта теперь можно поставить кнопкой из каталога, как какой-нибудь PostgreSQL. По дороге я наконец измерил то, о чём программисты спорят десятилетиями, — сколько на самом деле стоит проверка выхода за границы массива. Ещё запустил на процессоре Вирта маленькую языковую модель. И, раз уж честно, одним неосторожным движением отправил в переезд все виртуалки рабочего кластера (никто не пострадал, но было неприятно).

Статья получилась очень длинной, потому что за девять дней случилось очень много всего, и значительная часть случившегося — это мои собственные ошибки, которые пришлось находить и исправлять. Я старался писать так, чтобы её мог читать человек, который про Оберон никогда не слышал, а всё, что интересно только специалистам, спрятал под спойлеры. Читать можно подряд, а можно прыгнуть сразу в интересную часть. Сначала будет рассказ про сам Оберон, потом про то, как разваливался мой первоначальный план, потом про процессор и проверку границ, про браузер и лабораторные, про QEMU, Kubernetes и Cozystack, а в самом конце про языковую модель и про то, как всё это поставить себе.

Читать далее

А что, если бы Kubernetes был человеком: Kyvernetria, Mansplainetes и Misogynetes

Время на прочтение19 мин
Охват и читатели8.8K

Я считаю, что у каждого человека должен быть свой кубернетес, и твёрдо и непоколебимо иду к этой цели. Уже есть кубернетес для татар и кубернетес для любителей эксельки. А сегодня я представляю три новых Кубернетеса, и каждый со своим характером и особенностями.

Читать далее

Tatarnetes: как мы научили Kubernetes говорить по-татарски, цитировать Габдуллу Тукая и останавливаться на чай с молоком

Время на прочтение11 мин
Охват и читатели25K

TL;DR. Мы выкатили Татарнетес — национальную обёртку над Kubernetes, где команды, сообщения, ошибки и даже перерывы на чай с чак-чаком и т.п. на татарском. Рядом — TatarOS Linux (обёртка над Talos, которая поднимает кластер с Татарнетесом) и Татарнетес UI (панель на фоне татарского келәма). Всё под собственной лицензией Tatarch 2.0.

Под капотом i18n на чистом bash 3.2 без единой зависимости, три системы письма (кириллица, яңалиф, гарәп язуы), детерминированный чайный график (кластер рандомно останавливается на попить чай с молоком и бабушкиными кыстыбыями) и первый черновик татарской IT-терминологии Kubernetes. А ещё мы прогнали всё на реальном кластере CozyStack — с живыми kubectl/talosctl, RBAC, метриками и одним пойманным багом.

Репозитории tatar-ncf: tatarnetes · tataros · tatarnetes-ui. Лицензия — Tatarch 2.0.

Проект посвящается Саше, Роме, Максу и Рамилю из одного замечательного кубер-чатика.

Читать далее

Федерация двух кластеров через таблицу: сеть, пул ёмкости и WASM‑рантайм в ячейке

Время на прочтение8 мин
Охват и читатели8.9K

Привет, Хабр! Наши sheet-ербьюторы не спят и продолжают развивать экосистему даже утром в субботу, когда сон для усталых взрослых людей. Теперь к делу!

Sheeternetes держит кластер контейнеров, у которого control plane — электронная таблица. Этот пост — про то, как заставить два таких кластера работать как один: on-prem-кластер поверх локального Excel-файла и облачный поверх Google-таблицы — по сети, с общей ёмкостью, живой миграцией и рантаймом, которому не нужен Docker. Всё воспроизводимо; код — один небольшой репозиторий.

Читать далее

Реестр контейнеров, который живёт внутри ячеек электронной таблицы

Время на прочтение4 мин
Охват и читатели8.8K

Привет, Хабр! Значю, что вам на это плевать и вы не хотите это читать, но я все равно продолжу это писать:) В общем, Sheet-Native Computing Foundation продолжает цвести и пахнуть и у нас даже есть сторонние контрибьюторы. А чего добились вы?

Итак, вот что теперь можно сделать в таблице: запушить в неё настоящий OCI-образ контейнера и вытянуть его обратно. Не ссылку на образ, не метаданные о нём — сами слои, хранящиеся как base64 по ячейкам, с адресацией по sha256, собирающиеся байт-в-байт на выходе. У SheetHub — нашего форжа в стиле GitLab, который работает на Google-таблице — появился реестр контейнеров, и он целиком живёт в ячейках.

Этот пост — про то, как это всё устроено.

Читать далее

Я перенёс kube-scheduler в формулу электронной таблицы, и он прошёл юнит-тесты

Время на прочтение5 мин
Охват и читатели6.1K

Привет, Хабр! Была одна вещь, которая давно (примерно 3 дня) не давала мне покоя в Sheeternetes. Весь смысл проекта — «таблица и есть кластер»: Deployments, Nodes, Pods живут во вкладках, таблица — источник истины. Вот только в первых версиях мы покривили душой и шли против истины. Планировщик — та самая часть, что решает, какой под на какую ноду поедет, — был Python-функцией, которая читала таблицу снаружи. То есть таблица хранила состояние, а думал Python.

Это жульничество, и оно меня грызло (на самом деле нет, это клод так придумал). Поэтому я решил убрать последний внешний мозг: переписать планировщик как формулу таблицы. Без Python, без Apps Script, без bash. Одна =LET(…) на под, которая читает вкладку Nodes и решает, куда его поставить, — пользуясь только тем, что встроено в Google Sheets.

И оно работает. Воспроизводит bin-packing, capacity, spread, sticky placement, cordon, affinity и taints — и выдаёт ровно ту же раскладку, что и настоящий Python-планировщик, на всех девяти его юнит-тестах.

Читать далее

Очередные извращения с DOOM: упаковали в sheet-контейнер и запустили внутри Sheeternetes в электронной таблице

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели11K

Есть проверенный закон вселенной: если у чего-то есть экран и хоть немного памяти, рано или поздно на этом запустят DOOM. Запускали на осциллографах, на тесте на беременность, на кофемашине и на тракторе. Мы в Sheet-Native Computing Foundation тоже решили побыть в этом уже достаточно запылившемся тренде и запустить DOOM в контейнере, упакованном в ячейки электронной таблицы. То есть образ контейнера с игрой физически лежит в ячейках, оттуда собирается обратно в Docker-образ, проверяется по sha256 и запускается.

В первой статье я рассказывал про Sheeternetes — оркестратор контейнеров, у которого весь control plane (Deployments, Nodes, Pods, Events) живёт внутри Google Таблицы или Excel, а на другом конце крутятся настоящие Docker-контейнеры. Там же мельком был упомянут наш формат образов — SICF (Sheet-Native Image Container Format). Эта статья как раз про него: как он устроен, как всё это воспроизвести у себя, как оно работает на bare metal (то есть в эксельке, а не гугл-таблице) без интернета и какие неожиданно интересные находки вылезли, когда мы начали пихать всё это дело в ячейки Google Sheets.

Спойлер: DOOM — настоящий (Chocolate Doom плюс свободный Freedoom, всё в Linux-контейнере, играется в браузере с клавиатуры).

Читать далее

Sheeternetes: первое нагрузочное тестирование и реальные бенчмарки против Kubernetes, Docker Swarm и Nomad

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.5K

В одном чате по куберу меня спросили единственное, что реально важно, когда ты собрал оркестратор контейнеров внутри таблицы: а сколько оно вообще тянет? Сколько подов, пока не ляжет. Какой образ влезает в ячейки. Сколько кластеров держит одна машина. И — раз уж мы фонд с серьёзным лицом — как это смотрится рядом с настоящими: Kubernetes, Docker Swarm, Nomad.

Поэтому мы провели честное нагрузочное тестирование. Четыре измерения, два бэкенда (.xlsx на диске и живая Google-таблица), синтетика на ноутбуке и реальные Docker-образы на облачной виртуалке. А потом поставили цифры рядом со взрослыми оркестраторами.

Короткая версия: по каждой оси, которая имеет значение, мы проигрываем на 3–5 порядков. По осям, которые значения не имеют, — выигрываем вчистую. И один наш давний «факт» оказался неверным — бенчмарк нас поправил. Поехали.

Читать далее

И снова 3 сентября: Sheeternetes-оператор для Google-таблиц, который лечит сам себя

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.8K

Недавно я рассказывал про Sheeternetes — оркестратор, у которого control plane живёт в таблицах. Здесь — про следующий логичный шаг: паттерн «оператор», применённый к самим таблицам. Настоящий полноценный Sheeternetes-оператор. Не скрипт внутри таблицы, а внешний контроллер, который приводит табличку к желаемому состоянию.

И раз уж так совпало по датам, демка этого оператора будет переворачивать календарь и возвращать таблице все атрибуты настоящего третьего сентября, дня прощаний.

Читать далее

Sheeternetes: как мы запустили оркестратор контейнеров внутри Google Таблиц (а заодно написали ОС и создали фонд)

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели7.9K

Хабр, привет! Есть такой тип проектов, которые начинаются со слов «а что если» и заканчиваются тем, что ты в три часа ночи объясняешь kubelet-у, что таблица — это его новый control plane. Так вышло и тут, всё родилось из субботней шутки в одном телеграм-канале по кубернетесу.

Правила игры простые: раз весь мир можно создать в эксельке, то пускай всё состояние кластера живёт внутри электронной таблицы. Не «метаданные в таблице», не «экспорт в CSV» — а буквально: Deployments, Nodes, Pods, Events — это вкладки Google Sheets (или листы Excel). Планировщик читает и пишет ячейки. kubectl-подобная утилита ходит в таблицу. И — вот это ключевое — на другом конце крутятся настоящие Docker-контейнеры. Таблица не симулирует кластер. Таблица и есть кластер.

Проект называется Sheeternetes. Это, конечно, шутка. Но шутка, которая компилируется, проходит тесты и переживает падение ноды.

Ниже — как это устроено, как это поднять у себя за пять минут, как оно работает на bare metal без интернета (в Excel и LibreOffice), как связать несколько таблиц-кластеров в федерацию с живой миграцией, почему контейнеры можно хранить прямо в ячейках, — и что это внезапно выросло в целый фонд с 30 проектами, стандартом контейнеров и системой сертификации.

Читать далее

Вышел Cozystack 1.6: Talos на рабочих узлах, SSO для тенантов, Security Groups и иерархические квоты

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.4K

Вышел Cozystack v1.6.0. Релиз опубликован 22 июля 2026 года и включает все исправления, ранее вышедшие в патч-релизах v1.5.1–v1.5.3. Ниже — перевод официального анонса, дополненный главными исправлениями из патч-релиза v1.6.1 от 5 августа.

В этом выпуске изменилось несколько важных частей платформы. Рабочие узлы тенантных кластеров Kubernetes теперь работают на Talos Linux вместо Ubuntu, тенанты могут включать аутентификацию OIDC для Kubernetes и Grafana, а новый API SecurityGroup даёт более безопасный интерфейс для управления сетевыми политиками приложений.

Читать далее

Проект Cozystack представил переработанный etcd-operator с новым API

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели12K

В рамках проекта etcd-operator сообщество развивает оператор для развёртывания и сопровождения кластеров etcd в Kubernetes. На днях он был передан проекту Cozystack (CNCF Sandbox). Перед этим команда опубликовала написанную с нуля реализацию оператора с новой версией API — etcd-operator.cozystack.io/v1alpha2. Эта версия пришла на смену etcd.aenix.io/v1alpha1. Вместо управления узлами через StatefulSet новый оператор напрямую задействует штатный Membership API etcd (операции MemberAdd, MemberPromote и MemberRemove), что позволяет ему полностью контролировать состав кластера. Автор новой реализации — Тимофей Ларкин, один из мейнтейнеров прежнего оператора (старый код остался в ветке v1alpha1). Проект написан на Go и распространяется под лицензией Apache 2.0.

Читать далее

AI Workspace System: one local workspace for Codex, Claude Code, and GitHub

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели9.4K

I ran into a very practical problem after doing a lot of local work with AI agents. I had Codex projects, Claude Code projects, regular repositories edited with agents, drafts, pipelines, instructions, skills, artifacts, and several machines. At some point it became hard to tell where the current version of a project lived, which files were safe to push, where agent instructions belonged, and where source code had already been mixed with logs and intermediate output.

That is why I built AI Workspace System: a small set of shell scripts, conventions, and Markdown documentation that makes local AI-agent work predictable. It is not an IDE and not an agent orchestrator. It is a thin infrastructure layer around Git, GitHub, Codex, and Claude Code.

The core idea is simple: all projects should be visible from one list, instructions should follow one structure, sync should be safe by default, and machine-specific details should not live in the repository.

Read more

Синхронизируем проекты Codex и Claude Code между несколькими устройствами через GitHub (для неинженерных проектов!)

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели9K

У меня MacBook Air M4, ПК под Ubuntu 24.04, консальные Claude Code и Codex (каждый хорош немного под свои задачи, как по мне). Я люблю Ubuntu, но вот в поездках Mac прям незаменим — с ним удобно работать, батарея живет достаточно долго, даже в самолете можно комфортно что-то тыкать тачпадом. При этом яблочную экосистему я не люблю, Ubuntu мне ближе и приятнее в использовании. Важный момент: я не программист, так что большая часть моих проектов — это всякая маркетинговая, менеджерская и редакторская штукенция. Поэтому у меня нет под это всё каких-то IDE и т.п. Конечно, разработчики и другие инженеры обычно работают с кодом, а потому просто коммият всё напрямую в гитхаб.

Но к делу. У меня постоянно запущено по 6-10 окон Claude и Codex в терминале и я заколебался проекты синхронизировать через Избранное телеграма — зипами. Плюс хочется, чтобы проекты нормально работали и в той, и в другой нейронке. То есть мне понадобилась какая-то система синхнонизации проектов между разными устройствами и разными нейронками.

Сегодня наконец собрался с силами и доделал такую — выложил ее под Apache 2.0 на гитхабе, можно пользоваться, форкать, дорабатывать и выражать своё «фи» в ишшьюсах и комментариях. Наверянка уже кто-то что-то такое себе делал и я просто изобретаю велосипед. Но что ж теперь поделать, я его уже переизобрел.

В статье расскажу, как делал, что делал, где и что пришлось дотюнивать. Скажу честно, мне эту часть с инструкцией писать было лень и она написана уже GPT, так что простите. Немного пробегусь по стилистике, конечно, но в целом текст править почти не буду.

Читать далее

Blockstor: Kubernetes-native альтернатива LINSTOR, которую мы готовим как отдельный CNCF-проект

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели8K

Всем привет. Мы в Ænix давно занимаемся Kubernetes-платформами, bare metal-инфраструктурой и Cozystack, поэтому тема блочного хранилища для Kubernetes у нас не теоретическая. Это та часть стека, где красивых абстракций быстро становится мало: надо переживать падения нод, понимать топологию, реплицировать данные, не ломать PVC, дружить с CSI и при этом оставаться предсказуемыми для операторов.

Сегодня хотим показать первый публичный результат этой работы — Blockstor 0.1.0.

Blockstor — это открытая система управления распределенным блочным хранилищем для Kubernetes. Она использует DRBD для репликации данных, совместима с REST API LINSTOR и написана на Go как самостоятельная clean-room реализация. Код распространяется под Apache 2.0.

Читать далее

Cozystack v1.0 & v1.1: пакетная архитектура, cozystack-operator, бэкапы через Velero, поддержка MongoDB и OpenBAO

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели5.5K

Предыдущим релизом платформы был 0.41. И тут неожиданно будущий релиз 0.42 стал ответом на главный вопрос жизни, вселенной и всего такого: слишком много серьезных изменений накопилось в платформе. Так что 0.42 пришлось переименовать в 1.0.

С выходом версии 1.0 платформа Cozystack перешла на новую архитектурную модель. Мы создали систему пакетов на основе FluxCD и артефактов OCI, похожую на apt в Debian/Ubuntu, но для Kubernetes (см. раздел «Развертывание на основе пакетов» ниже). Это позволило нам реализовать новый подход — Build Your Own Platform (BYOP).

Читать далее

Они уже убили ви-си. На очереди Хабр?

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели37K

Когда ви-си загнулся окончательно, появилось немало статей с подборкой ресурсов, которые этот самый ви-си могут заменить. Если говорить грубо и прямо, то фактически, контент-маркетологи и разные сомнительные личности, убившие в свое время этот самый ви-си, стали составлять подборки площадок, на которые нога их брата еще особо не ступала. Один из таких ресурсов стал Хабр.

Да, здесь уже не первый год орудуют самые продвинутые из контент-маркетологов. Однако теперь сюда явно доберется и основная их масса. Конечно, есть некий барьер в виде необходимости получить инвайт на Хабр, чтобы писать статьи, но он, насколько я понимаю, достаточно легко обходится за деньги с помощью серых схем с уже набравшими рейтинг дельцами от контент-маркетинга.

Читать далее

Неизбежное будущее Kubernetes: почему оркестратор должен пойти по пути Linux Kernel

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели21K

Сейчас Kubernetes воспринимается как «готовое» и самодостаточное ПО — грубо говоря, как отдельная программа. Да, чтобы его использовать в проде, придется добавить к нему разных cloud native-инструментов: CNI, service mesh и т.п. штуковины. Однако всё же K8s выглядит именно как приложение (иногда его даже называют ОС для облаков). 

На мой взгляд, такое понимание Kubernetes заводит рынок в тупик. Очевидно, что сложность оркестратора должна расти, очевидно, что будет все больше сфер, в которых он будет использоваться и которые способны извлечь немало пользы из внедрения K8s. Если рынок не начнет смотреть на Kubernetes как на Linux Kernel, это заведет нас в тупик, и вот почему...

Читать далее

Вышла werf 2.0: новый движок развёртывания Nelm и 300+ релизов за четыре года

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5.9K

Четыре года мы развивали и улучшали werf 1.2, но теперь наконец‑то выпустили стабильную werf 2.0. Причина простая — последовательно накопилось множество улучшений (300+ релизов!), а кроме того, мы доработали новый движок развёртывания Nelm, и в werf 2.0 это единственный движок. Старый движок удалён. Nelm обратно совместим с Helm 3, поэтому никаких особых изменений в чартах не потребуется — они будут развёртываться так же, как и раньше.

В некоторых случаях у Nelm отличается поведение: например, у него более строгая валидация чартов, поэтому, хотя Nelm и доступен в werf 1.2, по умолчанию мы его включили только в werf 2.0.

Рассказываем, зачем мы сделали Nelm, что под капотом werf 2.0, как werf будет развиваться в будущем и как ее попробовать на своем проекте уже сейчас.

Читать далее

HashiCorp обвинила сообщество OpenTofu в краже кода Terraform, но что-то пошло не так

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели25K

3 апреля на сайте InfoWorld вышла статья известного публициста на тему Open Source и юриста Matt Asay под названием «OpenTofu, возможно, демонстрирует нам, как не надо делать форк». Лидер-абзац в статье довольно жёсткий: 

Не согласны с лицензией? Просто сделайте форк проекта, но не выкидывайте его код — говорите, что он всегда был доступен публично. Сравните код и лицензию HashiCorp с версией OpenTofu.

Разберемся в этой истории последовательно — кто прав, кто виноват и чем всё закончилось.

Читать далее
1

Информация

В рейтинге
41-й
Работает в
Зарегистрирован
Активность

Специализация

Редактор