SILLYFEED
Открыть канал в Telegram

Посты канала Kubernetes и кот Лихачева в SillyFeed: единая лента публичных Telegram-каналов со ссылками на оригиналы.

Все про Kubernetes и немного про кота Маркуса.Это проект Слёрма – учебного центра для IT-специалистов.Чат для конструктивного общения:https://t.me/+Q4z_2ckAkBxhNWNiЗадать вопрос:https://t.me/K8sSlurm_bot?start=question

Посты канала

Kubernetes и кот Лихачева
⚡️Зачем нужно писать свой-k8s-оператор?Эта статья описывает процесс создания собственного k8s-оператора для автоматического копирования секретов в разные неймспейсы.Казалось бы, что сложного, возьми, например, kubernetes-reflector, да копируй секреты, но авторам статьи не хватило удобства использования, да еще и проблемы с OOM возникали на большом количестве секретов, которые просто так не решались.Когда вообще нужно копировать секреты?1. ImagePullSecrets: Чтобы можно было скачивать образы из private container registry.2. TLS-сертификаты: Для работы Ingress с wildcard-сертификатом (например, *.example.com) этот сертификат должен находиться в неймспейсе, где находится объект ingress. А wildcard-сертификат может использоваться одним приложением в десятках разных неймспейсов, включая временные неймспейсы для тестов. Множим на количество приложений и легко может получить десятки тысяч копий таких сертификатов в большой системе.Sidenote: писать контроллеры в целом несложно, но нужно учесть некоторые правила, о которых я уже упоминал в посте.Так что если ваша система небольшая (десятки - сотни сервисов), вы, возможно, с такими проблемами никогда не столкнетесь. И написание своих велосипедов будет скорее необходимостью, чем простым желанием покодить на Go 🙃
Kubernetes и кот Лихачева
🐈k8s-информерыА вы задумывались, как работают операторы в Кубе?Как они понимают, что состояние манифеста поменялось и пора применять изменения?Сразу скажем: нет никакого постоянного цикла, который бомбардирует API-сервер запросами.Работает это при помощи informers — продвинутых клиентов к API-серверу.Как работают informersНа старте informer отправляет запрос типа LIST, чтобы получить список всех запрашиваемых объектов (например, подов).У всех объектов есть поле resourceVersion, которое помогает отслеживать версию объекта.Все полученные объекты сохраняются в in-memory-кеш в памяти запросившего процесса (обычно это Go-приложение).Далее informer отправляет WATCH-запрос с привязкой к resourceVersion, то есть получает только изменения, которые произошли после запрошенной версии.При чём тут операторыИнформер — это источник событий.Оператор — это потребитель событий.🟠 Информер видит изменение → кладёт данные в очередь обработки для оператора (всё так же in-memory).🟠 Reconciliation loop берёт данные из очереди.🟠 Reconciler читает актуальное состояние объекта из кеша информера (без походов по сети) и применяет логику.Это разделение важно: если оператор тормозит, информер продолжает обновлять кеш в фоне.Масштабируемся до десятков операторовВнутри одного бинарника (например, controller-manager) могут быть десятки контроллеров, которым нужны одни и те же объекты.Специальный SharedInformer открывает одно соединение к API-серверу и позволяет множеству клиентов в том же процессе получать одни и те же события (по сути — синглтон).Если что-то могли потерятьРаз в N минут информер выполняет полную ресинхронизацию.Это страховка от проблем с сетью и гарантия того, что в итоге все события будут обработаны, пусть и в редких случаях — не сразу.Но всё не так однозначно, и в разработке операторов есть много нюансов.Об этом — в следующий раз.🙂
Kubernetes и кот Лихачева
Архитектурные диаграммы для вашего k8sРазобраться в инфраструктуре проще, когда она нарисована. И в этом нам поможет kubediagrams.➡️ Что это такое?KubeDiagrams — это инструмент, который позволяет генерировать довольно наглядные архитектурные диаграммы на основе того, что задеплоено в кластере или лежит у вас в репозитории. Он использует манифесты, позволяя быстро визуализировать взаимосвязи между подами, сервисами, деплойментами и другими ресурсами.➡️ Пример использования с проектом opentelemetry demo.Этот проект был выбран, потому что для него нет готовой картинки в README на github (а там есть разные примеры, начиная от простых деплоев wordpress, заканчивая более сложными проектами типа cassandra).Добавим репозиторий opentelemetry demo и поставим в кластер:helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-chartshelm install my-otel-demo open-telemetry/opentelemetry-demoПоставим kubediagrams прямо из github и запустим через python virtualenv:git clone https://github.com/philippemerle/KubeDiagrams.gitpython3 -m venv myenv; source myenv/bin/activatepip install PyYAML diagramsИ получим ошибку 😟 Понадобилось доустановить graphviz для создания картинок. На macos ставится так:brew install graphvizРезультат для opentelemetry demo:kubectl get all -o yaml | ./KubeDiagrams/bin/kube-diagrams -o /tmp/otel.png -Warning: картинка огромная, потому что компонентов много, и все они развернуты в одном namespace.

Ещё по теме «Технологии»

Технологии
Пентестинг. Этичный хакинг.
SQL Injection в 2026 году: Одна ошибка - и ваша база данных в Darknet :)Казалось бы, мы в 2026 году. У нас есть квантовые вычисления, продвинутый ИИ и беспилотные такси. Но старый добрый SQL Injection всё еще в топе OWASP и всё еще позволяет хакерам сливать гигабайты данных за считанные минуты.Почему это всё еще работает?--- Наследие (Legacy): Код, написанный 10 лет назад, до сих пор крутится в бэкенде крупных корпораций.--- Сложные API: Современные микросервисы общаются через сотни эндпоинтов, где валидация данных иногда проседает.--- ИИ на службе у хакеров: Если раньше атакующему нужно было подбирать кавычки вручную, то сегодня LLM-агенты автоматически сканируют код и находят слепые (blind) инъекции там, где их не видел статический анализатор.Как выглядит слив всей базы сегодня?Достаточно одного незащищенного поля в поиске или заголовке HTTP-запроса. С помощью техники UNION SELECTили автоматизированных инструментов (вроде прокачанного sqlmap) злоумышленник:--- Обходит аутентификацию.--- Получает список всех таблиц.--- Выгружает персональные данные пользователей (PII).В худшем случае - получает доступ к файловой системе сервера.Итог: Репутационные потери, огромные штрафы по GDPR и полная остановка бизнеса.Как не стать героем новостей о взломе?--- Забудьте про конкатенацию строк. Только Parameterized Queries (Prepared Statements). Это база.--- ORM - не панацея. Даже популярные библиотеки могут иметь уязвимости в методах вроде .raw(). Проверяйте, что вы туда передаете.--- Принцип наименьших привилегий. У пользователя базы данных, под которым работает веб-приложение, не должно быть прав DROP TABLE или доступа к системным таблицам.--- WAF с поддержкой ИИ. В 2026-м обычные регулярные выражения не спасают. Нужны системы, анализирующие поведение и аномалии в запросах.Главный урок: Безопасность - это не разовое действие, а процесс. Если вы не проверяли свои старые сервисы последние полгода, скорее всего, они уже под прицелом.А как часто вы проводите аудит безопасности своих SQL-запросов? Рассказывайте!#cybersecurity #SQLi #infosec #webdevelopment #programming #2026tech #data-protection
Круто об искусстве
Механические сороконожки Тео Янсена, которые Strandbeest зовутся. Или «Пляжные звери» (Strandbeest; strand - пляж; beest - зверь). Потому что «Стены между искусством и инженерией существуют только в наших умах» (Тео Янсен)▪Симпсоны. 28 сезон 10 серия.
Трифонов PRO Пластик
✨✨Сегодня 4 мая — День «Звёздных войн». Для меня это повод напомнить себе и вам: производство изделий из пластика — это почти искусство. А в каждом искусстве есть светлая и тёмная сторона.❤️ Светлая сторона: сырьё стабильное, режимы точные, брака нет. Технолог чувствует материал, оснастка надёжная, станок работает без сбоев.😈 Тёмная сторона: паспорт идеальный, а сырьё — 🤬. Коробление возвращается, как ситхи. Термопара горит в самый неподходящий момент. Опытный технолог ушёл, заменить некем.🗡Мы с вами, как настоящие джедаи, обязаны придерживаться светлой стороны.Стабильность, предсказуемость, качество — наша Сила.Пусть тёмная сторона остаётся в кино. А на ваших заводах — только светлая.✨✨ Да пребудет с вами Сила
Торшин вслух
Начинаю серию постов про ИИ-агентов в бизнесе, написанную на основе моего опыта работы с ИИ, того, что делают мои клиенты-предприниматели и выступления создателя Claude Code Бориса Черни.Если вы руководитель и до сих пор ждёте, что ваши сотрудники «сами разберутся» с ИИ-инструментами — вы уже теряете темп. Не потому что они ленятся, а потому что вы не задали им направление.Я недавно слушал выступление создателя Claude Code. И знаете, что поразило больше всего? Не скорость написания кода. А то, как радикально меняется сам процесс ввода новых людей в проект. Раньше онбординг занимал 2–3 недели. Теперь — 2–3 дня. Как? Новые люди с помощью ИИ могут задавать вопросы системе, а не сразу лезут делать проекты или править файлы. Если у вас есть документы, программный код, протоколы встреч и т.п. - можно использовать ИИ-инструменты, тот же Claude Code или его аналоги (OpenCode, Qwen Code, Gemini Cli и др.), чтобы быстро и легко разобраться в том, что есть. Это не про «вайбкодинг» в смысле «нажал кнопку и готово». Это про управление вниманием и контекстом. В новой реальности достаточно понимать, как ваш ИИ-агент «мыслит», где галлюцинирует, и как направить его энергию в русло бизнес-задачи.Как и с людьми, согласны?Первый шаг, который рекомендует Борис: не просите ИИ писать. Спросите его: «Как это работает?», «Откуда взялись эти документы и решения, аргументы в функции?», «Кто и зачем это менял в прошлом году?». ИИ ответит глубже, чем поиск по файлам. Он покажет скрытый контекст, который раньше уходил в устные объяснения или терялся в комментариях.Рождается новый тип сотрудника. Новый тип руководителя. Не тот, кто контролирует каждый чих. А тот, кто выстраивает систему обратной связи. Ставите задачу — агент предлагает план. Вы говорите «да» или «нет». Агент дорабатывает. Вы получаете результат, а не процесс.Это не замена менеджеров и инженеров. Это «экзоскелет», умножение их ценности. Но только если все перестанут бояться «чёрного ящика» и начнут задавать ему правильные ВОПРОСЫ.Что скажете? Готовы доверить команде ИИ-агента, но оставить за собой право утверждать план? Или пока боитесь, что «он сам решит, как лучше»? Начали внедрять?Продолжение следует.
S.E.Book
⌚️Seiko UC-2000, умные часы из 1984 года.• Представьте себе умные часы, но из 1984 года. Звучит как что-то прямо из научно-фантастического фильма, ведь 80-е годы прошлого века не славятся большими достижениями в области персональных компьютеров. Но это реальность, и это именно то, что было создано компанией Seiko в те времена и было известно как UC-2000 — «персональный информационный процессор», который можно носить на запястье (на фото). Как и следовало ожидать, это было новое устройство, которое было выпущено по цене 300 долларов (это что-то около 900 долларов сегодня с учётом инфляции).• Часы выглядят как компьютер и работают почти как компьютер, хотя технически их нельзя назвать компьютером, пока вы не подключите к ним внешнюю клавиатуру, которая добавит им соответствующую функциональность.• Устройство состояло из двух частей: часов и клавиатурной док-станции. Циферблат Seiko UC-2000 представляет собой жидкокристаллический матричный дисплей с чёрным ободком, а корпус — серый металлик, сочетающийся с браслетом из нержавеющей стали. В нижней части расположены четыре кнопки, окрашенные в оранжевый цвет на внешних концах и серый в середине, которые заменяют заводную головку в качестве механизма настройки. Внешне он невероятно похож на современные смарт-часы.• Когда часы устанавливаются на док-станцию, они превращаются в совершенно гиковскую машину, которая стала бы настоящим украшением витрины коллекционера техники. Это QWERTY-клавиатура с дополнительными кнопками для переключения языка и доступа к различным функциям. С левой стороны находится квадратный вырез, в котором располагаются часы, взаимодействующие с клавиатурой посредством электромагнитов.• Клавиатура достаточно большая, чтобы поместиться в кармане, но не настолько, чтобы носить её на запястье вместе с часами. На самом деле она выглядит комично большой, если носить её в таком виде, но если бы клавиатура была меньше, на ней было бы очень трудно печатать.• Часы показывают время и дату, могут работать как секундомер, а также как будильник, как и большинство других цифровых часов того времени. Но в сочетании с клавиатурой UC-2100 они превращаются в «Информационную систему на запястье», которая может хранить заметки, вести расписание встреч и работать как калькулятор. Вы можете сохранить до 2 заметок по 1000 символов каждая, отсюда и название модели UC-2000. Представляете, какие ограничения были в то время? Целых 2 заметки!!!• А еще была док-станция UC-2200, которая поставляется с принтером (на фото) с катушечной подачей, на случай, если вам понадобится что-то напечатать в дороге. Как вам такие высокие технологии? Так то...➡️ https://www.namokimods.com/smartwatch-from-1984#Разное
Ирина Жохова
Я тут тестировала новый BorkИ вот мои выводы!Хороший пластик.Удобный в руке.Мощный.Насадки длинные, подходят для длинных волос.Но хочу обратить внимание, хоть и форма у стайлера как у обычного фена, и сопло удобное.Это не проф формат фена.Каждый раз при выключении все настройки температуры и мощности обнуляются, приходится настраивать все заново)В держателе для фена в тележке, не держится.Суеты много вызывает. Но это субъективные ощущенияКто то купил уже?
Господин Архитектор
Об Аду на контроллере и загрузку в память Кто-то, проделав упражнения из предыдущего поста, мог втянуться в разработку и отладку. И первое, с чем вы столкнетесь при отладке - с тем, что после пересборки прошивки необходимо еще записать её на flash. Но, во-первых, с ростом размера прошивки это замедляется, во-вторых, flash изнашивается. На помощь приходит возможность ядра Cortex M4 исполнять код прямо из встроенной в чип static RAM (1). Особенность данного ядра в том, что адресное пространство SRAM находится не там же, где ROM, поэтому линковать программу надо по другому адресу. Правда, при выключении платы программа пропадет, но во время отладки нас такое устраивает, главное, не сбрасывать питание. Кроме этого, процессор сам не сможет загрузиться, поэтому после пуска надо будет его тормозить, и загружать отладчиком в него программу. ПРИЕМЛЕМО. 1. Итак, первое, что надо сделать, это собрать программу с поддержкой запуска из SRAM. Для этого достаточно передать ключ вот так: alr build -XLOADER=RAM Линкер выдаст предупреждение, что обнаружил секцию данных, которая содержит исполнимый код; игнорируем. А вот bin мы готовить не будем, грузить будем прямо из elf-файла, он уже содержит всю информацию о правильных адресах. 2. На борту у stm32-discovery 1Мб Flash и всего 192кб SRAM, из неё часть придется потратить под программу, поэтому нужно ещё и следить за оптимизацией кода, и за тем, чтобы не случилось переполнения памяти. Мы собираемся оптимизировать код, а также посмотреть, что там с запасом по памяти. Для этого надо немного доработать файл disco1.gpr следующим образом: package Linker is   for Default_Switches ("Ada") use (      "-Wl,--gc-sections",      "-Wl,--print-memory-usage");end Linker; Теперь, если собрать приложение командой выше, мы увидим следующий текст:Memory region         Used Size  Region Size  %age Used           flash:                  0 GB         1 MB         0.00%          sram12:          25272 B       128 KB     19.28%             ccm:                   0 GB        64 KB         0.00%Обратите внимание, теперь мы не будем перетирать флэш каждый раз (flash used = 0) 3. Теперь запустим наш OpenOCD так же, как мы делали раньше, но сбросим и остановим процессор:openocd -f board/stm32f4discovery.cfg -c "init; reset halt; arm semihosting enable;" 4. Как я и говорил, грузить будем дебаггером. Для этого в соседней консоли запустим вот какую команду.alr exec -- arm-eabi-gdb bin/disco1 -ex 'target extended-remote localhost:3333' -ex 'load' Отладчик загрузит прошивку, остановится на первой команде. В этой консоли надо набрать команду "cont", и переключиться на консоль OpenOCD. Если всё сделано верно, можно увидеть сообщения от исполняющейся программы, как и в предыдущей серии. -- Итого, теперь при перекомпиляции и заливке flash-память мы не будем трогать, код будет работать из встроенной RAM кристалла. А когда понадобится опять подготовить прошивку для flash, нужно будет указать ключ -XLOADER=ROM или удалить его вовсе из строки. (1) То, что исполнение из SRAM может быть медленнее, чем из Flash, удивительно для десктопа, но вполне нормально для некоторых чипов с эффективной подкачкой кода.
Под капотом B2B
😪Интеграционная задачкаКлиент просит сделать так, чтобы новую позицию каталога можно было добавить в веб-интерфейсе только если такого артикула нет в 1С. А если есть – автоматически подтянуть оттуда. Как решать? Какие проблемы видите?
Луч внимания Жени Софронова
ChatGPT и рефлексияМне понравился вот этот подкаст про chatGPT. Хороший баланс общего и конкретного: https://www.youtube.com/watch?v=ButSJrf1AIYИдея, которая мне понравилась: chatGPT — это универсальная штука, которую мы своими запросами переводим в разные состояния. Чем в более конкретное состояние мы переводим штуку, тем более конкретный и подходящий ответ получаем. А из общего состояния получается банальный generic ответ.Важно, что эти запросы могут быть абстрактными. Могут быть и низкоуровневыми, но тогда мы не используем мощь chatGTP.Например, для перевода в состояние можно использовать такие фразы: Веди себя, как кто-то. Говори со мной, как с кем-то. Твой ответ должен соответствовать таким-то ценностям. Твой ответ должен соответствовать таким-то намерениям. Твой ответ должен вызывать такие-то чувства.Есть шутки про то, что chatGPT не заменит людей, потому что люди не смогут нормально написать задание. Ну это правда.Мне нравится метафора, что взаимодействие с chatGTP — это как взаимодействие с дизайнером с позиции арт-директора. Нормальный арт-директор не говорит, что именно должен сделать дизайнер («Подвинь, увеличь, перекрась»), а уточняет контекст («Учти, что это будет использоваться, как вывеска в метро»).Получается, что сейчас нужны такие навыки:1. Понимать на абстрактном уровне, что именно не нравится, но не придумывая конкретное решение.2. Понимать на абстрактном уровне, что мы хотим получить, но не придумывая конкретный ответ.3. Иметь в голове широкий спектр параметров сообщений (настроение, намерение, ценности...). И вообще осознавать, что эти параметры есть.Это делать сложно. ChatGPT — это не волшебная коробка, которая читает мысли, а волшебная коробка, которая работает на топливе рефлексии: лучше подумаешь — лучше получишь ответ