Make. Build. Break. Reflect.
1.33K subscribers
157 photos
4 videos
1 file
170 links
Полезные советы, всратые истории, странные шутки и заметки на полях от @kruchkov_alexandr
Download Telegram
#kubernetes

Допустим, есть задача поработать одновременно с двумя кластерами кубера.
Исторически я делал это так:
- для работы с несколькими кластерами использовал ключ контекста у кубконтрол
kubectl describe pod --context prod-1
# а в другом табе/шелле
kubectl describe pod --context stage-2

- для переключения контекстов kubectx (когда с одним кластером работал)
- в одном терминале открывал несколько табов: в одном прод, в другом стейдж

Жить с этим было можно, но пздц раздражало, что контексты нельзя нормально "разнести".
Хотелось, чтобы в одном табе был прод, в другом стейдж, и при этом не приходилось постоянно прописывать --context руками.

Потом я узнал про утилиту kubie, и жизнь заметно упростилась.
Контекст стал привязан к конкретной шелл сессии, а не глобально, и стало намного удобнее параллельно работать с несколькими кластерами.
Особенно в связке с cmux и его воркспейсами+табами+пинами это вообще топ.
Я всегда на 100% знаю где какой кластер и не ошибусь с продом.
Мастхэв любого инженера, у кого больше двух кластеров.

Там какие-то ещё есть фичи, но именно эта для меня наиболее топовая.

Вчера в одном из чатов кинули ссылку на репозиторий, я зашёл посмотреть, что у них нового, и наткнулся на эту ишшую:
- https://github.com/kubie-org/kubie/issues/385
Похоже, у проекта не всё гладко, что немного грустно - тулза реально удобная.🚬

Ну и вдруг кто не знал:
- https://github.com/kubie-org/kubie
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
#пятница

Похоже цепочка замыкается. 😬

anykey 🦍
sysadmin
devops
devsecops
sre
platform
mlops
aiops
agentops
anyops
..
anykey 🦍
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰21😁12💯6
#aws #TIL

Век живи, век учись.
Сегодня на работе узнал об ещё одном ограничении Амазона.
Всегда знал, что их много, но каждый раз как новый.

При попытке обновить инлайн полиси у роли "всё поломалося!" с текстом ошибки
Maximum policy size of 10240 bytes exceeded for role RoleName

И старая уже не работает и новую ещё не залить.🤡
Встало ракообразно.

Из забавного (иначе я не могу назвать):
- это именно инлайн полиси на IAM Role, а не managed полиси
- лимит на суммарный размер всех инлайн политик роли, а не только одной 😬

Ну штош, придется оптимизировать, а как ещё.
Либо резать джейсон, либо выносить правила в менеджед полиси.

- https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯12
#всратость

Очередной раз листая бесконечные чатики, наткнулся на интересный вопрос.
https://xn--r1a.website/linkmeup_podcast/11014
Чатик, а кто что думает касательно того факта, что каждый второй проект на гитхабе предлагает установить результаты своей плодотворной деятельности через curl -fsSL https://точнонепалево.ком/install.sh | bash?

Как это потом удалить? Как это обновить? Что делать, если пайп баша икнёт? Как объяснить адептам «Ну ты скачай и посмотри, что там, а не сразу запускай», что 99% народонаселения не испытывает никакого желания читать несколько сотен строчек спагетти-кода? А даже если и читают, то есть такой неудобный нюанс, который забывают многие, что как только curl скачал первые строки, пайп их сразу отдаёт в баш, а не ждёт, когда скачается весь файл?


А и правда, насколько это хреново?
На личной свежей тачке запустил анализ чего я вообще ставил через curl | bash за последнее время.
Нашёл 5 штук.

cat ~/.zsh_history | strings | grep -E 'curl.*\|.*(bash|sh)' | head -100

curl -fsSL https://claude.ai/install.sh | bash
curl https://cursor.com/install -fsS | bash
curl -fsSL https://openinterpreter.com/install | sh
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
curl -fsSL https://pi.dev/install.sh | sh


Результат неоднозначный:
- Open Interpreter образцово: SHA-256 верификация, мутекс блокировка при установке (признаюсь сам узнал про это при изучении скрипта, знал лишь частично), маркированные блоки в .zshrc чтобы потом легко убрать. Вообще ок, хоть и беда с башкой при хелл депенденси.

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

- Cursor норм, но чексам не проверяет вообще.
Просто качает архив и распаковывает. Конечно же не ок.

- Hermes - вот тут началось. Ставит питон 3.11, ноджс, playwright, хромиум (~300MB, лол), может попросить sudo и доставить системные пакеты через brew/apt.
После rm -rf ~/.hermes/ следы всё равно остаются.
Я не смог полностью удалить все следы.🤡

- Pi - просто npm install -g, удаляется одной командой.
Зачем вообще нужен был скрипт с анимациями - загадка, лол.

Главная первая проблема: да, я запускаю говно, не проверяя. 🦍
Исправлюсь.

Главная вторая проблема: если я запустил скрипт и не сохранил его - я никогда не узнаю точно что именно было установлено, потому что скрипт по URL живой и меняется.
В целом можно отследить по гиту и коммитам, но всё же, зачем себе сложности пилить.
Если есть публичный репо 😀.

Наверное правильно было бы делать:
curl -fsSL https://example.com/yet-another-zalupa-install.sh | bash -x 2>&1 | tee ~/yet-another-zalupa-install.log

Так хоть есть что читать потом, чтобы почистить.
Хотя не, если там подпроцессы, то ничего не запишется, да?

Ну решил ради интереса посмотреть что там в инсталлерах у других продуктов - взял первые попавшиеся из истории слака и телеги:
curl -fsSL https://mimo.xiaomi.com/install | bash
curl -fsSL https://opencode.ai/install | bash
curl -fsSL https://install.determinate.systems/nix | sh -s -- install
curl -fsSL https://get.jetify.com/devbox | bash


- Мимо без чексам, качает с закрытого CDN. Никакого публичного репо, никакого способа проверить что там. Просто доверяй Xiaomi, да.😬
- OpenCode делает редирект на GitHub. Звучит норм? Ан нет: редиректит прямо на ветку dev. Продакшн инсталлер с dev-ветки, без тегов, меняется при каждом коммите. Чот я чайкой крикнул как это забавно выглядит.
- Nix единственный из четырёх кто хотя бы TLS 1.2+ с нормальными шифрами форсит и ретрай делает. Сам бутстрап скрипт - просто качает раст бинарь который уже всё и делает. И у них есть нормальный uninstaller как я понял.
- Devbox качает бинарь без верификации, кладёт через sudo в /usr/local/bin. Без подтверждения, без чексам. И как бонус - если никс не стоит, поставит сам. Получаешь девбокс, а в нагрузку прилетает весь никс стор. Но я плохой никс инженер, может чего не понимаю и это норма.

Да, можно сказать, что "да это же софт для изолированных песочниц! какая разница?".
Ну не все ставят тот хермес в песочницу. Как и курсор агент.
Этот паттерн установки у многих же, для основных рабочих машин и серверов.
Проблема больше и глубже, как по мне.

Ну а вообще да, дрянная практика, ещё один вектор атаки с сотней вариативных способов нагнуть ленивых инженеров.
А эта лень обязательно кого-то невероятно больно ударит.
Печаль.
Please open Telegram to view this post
VIEW IN TELEGRAM
1💯15😁41👍1
#всратость #devops #ai

Очередные размышления.

Мы автоматизировали общение и написание кода, но не процессы


Везде и всюду "ИИ", агенты, и много "ИИ нейтив трансформаций".
Работодатель хочет многого, сокращает издержки, верит в автоматизацию, в несуществующий ИИ, а мы теперь трудимся за пятерых.
Ну вот это вот всё все итак знают.

Однако никто не рассказывает "а чо по процессам?".
Я чот не вижу, чтобы кто-то транформировал процессы.
Во всяком случае у нас на это забили болт, как мне кажется.

Пример:
прилетает девелопер, пишет "не работает релиз в прод".
Стоп. Не так.
А, мы ж теперь ЗА ИИ ТРАНСФОРМАЦИЮ!

12:28 прилетает мне в слак сообщение, клодом написанное, с красивым форматированием и полной подробной информацией, что перестал работать релиз в прод. С путями, текстом ошибки, предполагаемой проблемой.
12:35 мой агент агента агента агентный агент пишет в ответ "Спасибо за обращение! сейчас вернусь с обеда! Сделаю!" обратно в слак.

пу-пу-пу

13:22 возвращаюсь к лэптопу, ныряю в проблему при помощи Claude code ненаглядного, запускаю несколько mcp и cli tools, дергаю там skills, получаю reports - все по ии-трансформационному!
13:28 понимаю суть проблемы с пруфами: argocd не может синкнуть git репозиторий - протух токен, при помощи которого он обращается для гит пулл синка
13:36 при помощи клода пишу и отправляю не менее красивое отформатированное сообщение в слак канал для девопс команды "парни, проверьте, плиз, в этом проекте/группе есть ли деплой токены? не протухло ли чего?" - планируя, что следующим вопросом попрошу просто рефрешнуть

а никто не отвечает

13:41 агентный агент пингует devops duty дежурного в треде "хелп спасити памагити"
13:52 девопс отвечает мне, что "PAT у нас почти год уже нет, токенов у тебя тут нет"
13:53 агент быстро делает ресёрч, говорит пойдем посмотрим что за токен, иду в волт сам, копирую токен - а там, мать его, glpat- и правда персональный токен. Ну, вероятно, кто-то это сделал год назад, пока было разрешено и это попало в прод и так работало год".
14:04 сам пишу девопсу "можешь ли ты создать токен новый?"
14:08 получаю ответ "мы не создаем/менеджим токены, расскажи свою боль и мы поможем тебе"
14:13 пилю кулстори с подробным пояснением, что тупо токен протух и все подробности проекта/путей и тп

тадам

15:24 отвечают мне, что могут запилить ssh key, есть ли у нас сервис аккаунт?
15:25 разбираюсь чо там настроено (я не основной инженер на этом проекте)
15:35 честно отвечаю, что меня устроит любой ПРОСТОЙ и БЫСТРЫЙ вариант без переделок, вообще любой вариант устроит, хоть деплой токен на 7 дней - за неделю успею переделать все нормально по любым вашим требованиям, мне лишь бы прод поднять
15:41 мне делают деплой токен - с временем протухания, а так же сервис аккаунт без времени протухания и кладут логин/токен в Vault. Два варианта - что первое подойдёт.
15:42 я руками, не доверяя агенту, делаю патч externalsecret, добавляя туда новый логин и новый путь до токена, дергаю форс-рефреш экстерналсекрет, патчу арго аппликейшн на ре-синк - всё руками в терминале
15:45 - сервис задеплоен, проблемы нет, синк работает
15:46 - агентном создаю в беклог таску, чтобы терра модуль аргошки поменять на новый формат логина/пароля с новыми путями в волте

Бл, ну камон.
Два девопса* два часа решают проблему протухшего токена, ну камон.🤡🤡

Итого: 6 минут на диагностику, 2 часа на согласование токена, 4 часа невозможности задеплоить релиз от момента обнаружения проблемы до фикса.

Много вопросов, мало ответов**:
- почему сразу не дать право создавать деплой/сервис-аккаунт с токеном? В чём проблема? Чем помогает такой вахтеризм?
- в чём проблема быстро выдать PAT на 7 дней с техдолгом переделки вместо двух часов пинг-понга? Мы прод, бл, чиним, алё, ребята.
- мы всё автоматизируем, но час можем не отвечать в слаке. Кто тогда отвечает за аптайм?
- где алерт на экспайред токенов? Где борда?

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

Однако никакой клодкод и ИИ трансофрмация не заменит нормальные процессы , в том числе сакральные тайны ротации секретов и понятную матрицу доступов.
Никакой ИИ не поможет, если час нет ответа.
Пока этого нет – AI трансформация это просто новая обёртка поверх старого бардака.

Мы ускорили всё, кроме принятия простейших, сука, решений.
Мы сделали ответы красивее, но не быстрее.
Мы автоматизировали действия, но не договорённости.

И пока это так - мы ни-хе-ра не становимся эффективнее.
Мы просто делаем тот же самый бардак, только быстрее, дороже и с более красивыми лозунгами.

- - -
* Я девопс на отдельных проектах, есть лишь часть прав.
А есть эээ я хз как называется, ну пусть будут Глобальные девопсы, они и гитлабом управляют и рутом организаций в амазоне/ажуре и многое другое.
Права нам дают как утяткам, не понимаю в чём смысл, если честно.


** все претензии только к процессам, а не к девопсам.
Свою роль в этом бардаке я так же чётко вижу, как и многие слабые места.
Please open Telegram to view this post
VIEW IN TELEGRAM
113💯7👍3
#apple #devops #tools и снова #всратость

Деградация и вайбкодинг.


Не так давно я пересел на новые для себя вещи:
- раздельная клавиатура (там ничего нового, минимальные различия с обычной клавиатурой)
- для редких случаев отдельный magic touchpad
- макбук
- дополнительный большой монитор

Потому все свои рабочие процессы строю по принципу "не трогать тачпад, минимум движений". Учу много шоткатов. Пока не всё получается.
Между тем считаю, что операционная система Тахо весьма ужасна.

К сожалению в макбуке нет многих очевидных вещей, которые хотелось бы видеть.
Каждый раз надо что-то менять в настройках через терминал, то ставить какие-то утилиты.
Работа с окошками - rectangle.
Биндинг клавиш - Karabiner-Elements. Особенно спасает с проклятыми раскладками в ЕС (Германия).
Менеджер пакетов - Homebrew.
Ланчеры типа Raycast.
Ну и так далее, ну в общем штатно мак ну не совсем готов для работы инженера.

И так я привык к этому, что изначально воспринимал, что "в маке многого нет".😬

Идём к моей микрозадачке.

Все стандартные шоткаты всем известны:
- command+tab - между самими программами
- ctrl+tab - между табами внутри программы
А вот если, например, открыто несколько VSCode или несколько окон браузера Кром - такой комбинации нет.
Мишн контрол тут мне просто не очень подходит с дополнительным монитором.

Мне сперва показалось "да кому это надо", но нет, у меня несколько окон браузера открыто - от MCP Developer Tools для разработки до браузера для себя. Редактор кода - под каждую репу (да, иногда мне так удобнее, чем флипать воркспейсы). Такая же фигня с terminal раньше была (сейчас с cmux неактуально).

Что сделал я? Конечно же спросил какую-то нейронку (не помню уже кто) - какая есть для моей задачи утилита?🤡
Нейронка честно выполнила свою работу и сказала, что есть крутой проект - reef.

Они взяли и навайбкодили (я уверен) новый продукт.
- https://getreef.app/ (тут попросят денежку, но можно поставить 0)
- https://github.com/gouwsxander/reef (сразу бесплатный архив)
Не пересекаются по логике и хоткеяи с ректанглом.
В общем одни плюсы.

Как это работает:
- просто качаешь и ставишь программу
- затем в самой программе биндишь цифру 0, например, на VSCode
- открываешь свои 15 VSCode
- жмёшь ctrl+0
- появляется прозрачное окно посредине экрана и выбираешь нужный экземпляр
- всё

Я недаром говорил, что это "навайбкожено", потому как оно не свичится, если один экземпляр Кром браузера открыт на фуллскрин, а второй нет, но там решается через другие шоткаты и меня это не аффектит.
Подходит только и исключительно для тех, кто одновременно запускает несколько копий браузера/терминала/редактора кода и не хочет прикасаться к тачпаду.

Сижу, значит, уже почти привык к новой утилите и работе, решил затащить статью для моих читателей.
Пишу всё это и думаю, а что у них ещё есть.
Поиск выдал замечательный ролик на ютубе, с чего всё начиналось.
Где, собственно, у автора такие же мысли/проблемы возникли с окошками
https://www.youtube.com/watch?v=niRCi5zJvHU

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

И тут мои глаза цепляют комменты к видео..
Господи, стыд-то какой.🤡🤡🤡🤡🤡

Оказывается всё в маке есть для этой задачи.
- command + ` (ноут из Германии, на США раскладке вроде command + >)
- ctrl + стрелка вниз

Прикиньте какая у нас меня сейчас деградация.
- двое ребят пилят целое приложение, потому, что не захотели ПОГУГЛИТЬ блд
- я, пользуюсь ответами нейронки по изначально неверно составленному запросу (утилита, а не нативный шоткат), ставлю этот софт и занимаюсь никому не нужной настройкой.
Ну не жопа ли.

Да, конкретно их софт поможет, если открыто 50+ программ с 10+ реплик каждый, но у меня такой задачи и не стоит, лол, мне между 2-3 флапаться.
Ну или нужен строгий альттаб шоткат на конкретное приложение.
Потому пока себе его оставил, вдруг для некоторых случаев нужно будет 😬

Что наш ждёт через лет пять.. 🫣

- - -
Кстати само видео - интересное, слушать чужие размышления при разработке и проблемах это классно.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁29
#aws #AWScommunity #kubernetes #eks #troubleshooting #база

Дефолты.


Однажды прилетает алёрт. Чот поломалось. Захожу в слак прочитать.
Сперва поднялся трафик бизнес нагрузки. Затем поднялся лаг на топиках кафки.
Был рост SQS очередей. Какие-то алерты по куберу.

В общем всё выглядело, как "чот сломалось, но совершенно не понятно что".

Полез я в oncall канал, а там уже бурное обсуждение, пока я кушонькал.

Какая была основная гипотеза до меня:
- прилетело большое количество клиентов (спасибо сейлзам, никогда не предупреждают о наплыве х5 новых кастомеров)
- это провоцировало трафик, по графике графаны примерно х4 от вчеращнего в то же время
- кубернетис поды, которые обрабатывают входящий трафик, начали скейлится и упёрлись в максимум 100
- карпентер начал скейлить ноды в нод группах, упёрся в максимум 60 нод на группу (для этих типов пода было так)
- всё пошло по половому органу и начало дальше копиться со всех сторон

Чего же решили коллеги в этот момент траблшутинга?
Конечно же "а давайте заскейлим побольше! Нагрузка просто большая и надо дать больше ресурсов!". Да чо я душню, я так же сделал бы.
Поменяли максимум нод в нод группе до 200, а количество проблемых подов до 250 (вроде бы).

Ну штош, а лучше и не стало.
Сразу же перестал работать интернал сервис, не мог подключится к редису. Потом посыпались алерты, что поды в пендинге, нехватка капасити нод на одной нод группе. Редис коннекшны 5000+.
Потом макс коннекшн в РДС. Потом про нехватку инстансов в us-east-1 регионе.
Потом было что-то ещё, но уже было и не важно.

Нас просто завалило алёртами.
По-моему мы всем сервисом уныло прилегли и прилегли надолго.

Когда я подключился к инциденту, как раз было море алёртов, и я честно не понимал с чего начать. У каждого была своя гипотеза, каждый пытался что-то делать и менять, отчасти неверно.
Например для одного из сервисов меняли макс реплики у HPA, но ресурс управлялся KEDA и ващет надо было менять sclaedobject.
"Алекс, у нас ещё и HPA не работает!" 😢

Куда бы я не тыкнулся - везде были ошибки и везде было плохо.
Спустя полчаса я понял, что проблема в скейлинге - всё стало хуже, когда начали всё скейлить.

Мои коллеги копали в основную гипотезу, что "не хватает капасити, не хватает нод, не хватает подов, потому везде очереди".

Мне же показалось странным, а почему увеличение подов и нод не помогло?
Там же банальная арифметика, как так-то?!

Ну ладно, упало и упало, а чего по логами то у нас?
Коллеги побежали смотреть логи приложений и сказали из нового и необычного:
- таймауты подключения к редису
- таймауты подключения к базе РДС (ну да, положили мы базу несколькими сотнями тысячами подов)
- таймауты подключения к SQS
- таймауты..
стоп, смысле мы не можем к sqs подключится?
Он, в отличии от RDS/Redis не может ругаться на нехватку ресурсов.
А что за ошибки?
Благо сервисы были ок и писали более детальные ошибки.
Быстренько рапарсив десяток микросервисов я понял, что у всех проблема с ресолвом хоста.
Ещё один нырок в гит - там и лайвнесс пробы так же проверяют всякие ElastiCache/RDS/MSK.

Бл, ну значит чот с днс.
Быстро свичусь в kube-system неймспейс, смотрю что по логам в CoreDNS и метрикам в виктории метрикс.
Сука. Нагрузка большая по CPU.
Стоп, погодите-ка, а почему там всего две реплики?!

Быстро делаю скейл реплик до 10 штук (вот так просто, не глядя),прям через kubectl.
Через минуту ошибки ДНС в логах прекращаются.
Ещё через минуту все очереди SQS/MSK начинают разбираться с неимоверной скоростью.
Ещё через минут 5 падают все нагрузки по коннекшнам ко всем эндпойнтам и алёрты стремительно зеленеют.
За 15 минут инцидент был потушен.

Пилю постмортем, таски себе как экшн айтемс:
- поставить алертинг кластервайд и на сам корднс
- поставить гибкий конфиг/скейлинг подов корднс (ну там кеда или чо)

Так а почему же был инцидент?
Всё очень просто:
- прилетело большое количество трафика
- начались ошибки ДНС из-за скейлинга подов и нод (ну типа регулярно было 150 подов, стало 600, цифры из головы)
- корднс не успевал всё обработать
- вместо скейлинга корднс подов мы обосрались и заскейлили бизнес нагрузку, добавив новые реплики и ноды, нагрузив днс ещё больше, поломав флоу теперь уже у всех микросервисов, задев редисы, базы данных, положив все базы макс коннешнами и так далее

Стало интересно, а потому всего 2 реплики?

Оказывается CoreDNS ставился из аддонов (такая внутренняя штука в Амазон ЕКС).
И дефолтное значение мин/макс - 2.🤡

Самое странное (на момент инцидента) - все эти параметры нельзя было изменить.
Сейчас 100% знаю, что можно, но тогда было нельзя.
Аддон ставился терраформом, а тот не позволял изменять ЦПУ/Мемори лимиты/реквесты и количество реплик. Просто тупость.
На память там либо баг терраформа был, либо не позволяла апишка авс.
А может мы просто не разобрались 😬

Пришлось вместо терраформ аддона просто запилить хелм чарт, в котором прописали и автоскейлинг и реплики и реквесты с лимитами.

Формула расчёта была типа
The default proportional scale is to add an additional replica for every 256 cores or 16 nodes in the cluster—​whichever happens first.

Украл сейчас с документации.
Понятно, что при скейлинге плюс +80 новых (в пике) нод, 2 реплики было недостаточно.

Какая же мораль:
- увеличение капасити не всегда есть решение, а иногда и крайне сильное ухудшение, которым можно вообще весь сервис уложить полностью
- ну камон, как можно было работать без node-local-dns
- без алертов ДНС никуда
- дефолты AWS аддонов подходят не всем

Если говорить про то, что мне запомнилось, для себя я вынес мысль
проблема не в скейлинге как таковом, а в том, что скейлили не то узкое место
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24🥰2🤡2🌭2👍1
CV мальчика:
- "мы сократили time-to-market с 2 дней до 5 минут 🚀"

CV мужчины:
- "For a period of approximately 20 minutes, ~96% of GitHub Actions runs on GitHub-hosted runners were failing to start, with start delays exceeding 5 minutes"

Мы разные.

https://www.githubstatus.com/incidents/cstx3v63mklm
😁33🤣11🗿1
#devops #troubleshooting #opensource

Понадобилось мне тут на работе проверить есть ли троттлинг ЦПУ.
Причём без создания, тупо взять квери, проверить в explore на графане с датасорса виктории метрикс и всё.
Это новый проект, там ещё обсервабилити не готов, мне чисто проверить.

Зашёл я на свой любимый сайт, откуда пиз ворую алерты
https://samber.github.io/awesome-prometheus-alerts/rules/

А там красота - всё зарефактили, всё по-другому.
Зашёл в раздел кубера - а там этого алерта нет.
Command+f тоже не находит по ключевым словам.
Поискал на главной - тоже нет.
Самая большая тупость рефакторинга - нет поля для поиска по сайту.🚬

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

И тут мне стало интересно, а чо поиск не показывал? Чего поиска нет на сайте.
С плейврайт я уже работал, а теперь захотелось поработать с аддоном для браузера Крома.
https://github.com/ChromeDevTools/chrome-devtools-mcp

В конфиге MCP серверов это всё выглядит просто
    },
"chrome-devtools-my": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--autoConnect"
]
}

Со стороны браузера Кром надо просто галочку включить
chrome://inspect/#remote-debugging


Как это работает в двух словах:
- запускаю клодкод в терминале
- прошу чот проверить/поменять
- включаю галочку дебаггинга в браузере
- клод спрашивает разрешения, открывает либо отдельную сессию/профиль браузера, либо в моей же сессии (смотря как настроить!!!). У меня это отдельная сессия-профиль, Он открывает вкладку, спрашивает разрешение на управление браузером и работает
- сам через нативный developers tools видит ошибки в консоли, в нетворкинге, латенси запросов, все url бэкенда и всё!
- делает виртуальные скриншоты, ищет поля, и исправляет поля
- он буквально за меня кликает все элементы страницы и видит весь дебаг
- галочку потом можно снять для успокоения паранойи

Буквально за минуты получаю ответ, что "а тут херово навайбкожено в слоях провалился поиск 😎", пилю исправление, прошу нейронку проверить исправление, проверяется так же через девелопертулс. Потом ещё сам проверяю - поиск работает, несчастный троттлинг показывает, даже по всем разделам. Ого, у опенсерч тоже есть троттлинг.

Прошу запилить МР на гитхаб с минимальнейшими исправлениями и скриншотами "до/после".
https://github.com/samber/awesome-prometheus-alerts/pull/590

На выходных автор смержил, правда потом поправил поиск - не в центре экрана, а аккуратнее в углу справа.

Итоги:
- поправить простые(!) фронт штуки с помощью нейронки, Кром браузера и мсп девелоперс тулс - достаточно легко в 2026. QA, фронтенд - тут не нужны😢, можно самому делать мелкие исправления БАГОВ. Фичи пилить я бы не решился.
- по токенам подобные мелкие штуки недорогие - специально посчитал, около 7000 токенов вышло
- девелопертулс мне понравился больше, для дебаггинга он прям топ
- для СЕБЯ(!) я определил так:
- - - https://playwright.dev - автоматизированные тесты, кросс браузеры
- - - https://github.com/ChromeDevTools/chrome-devtools-mcp - сила в дебаггинге нативного девелоперс тулс
Это похожие, на первый взгляд, инструменты, но с разными задачами как по мне.
- а, ну да, теперь на сайте снова можно юзать поиск и воровать алерты🤡
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰14🔥3👍2🤡1
#aws #azure

Синергия близко.
☑️»☁️

https://aws.amazon.com/about-aws/whats-new/2026/06/aws-security-hub-supports-monitoring-microsoft-azure/

AWS Security Hub теперь мониторит Azure.
Не шутка, судя по всему.

Как я понял оно пока мониторит: Azure VMs, ACR-образы, Function Apps и Azure identities.

SH сам находит эти ресурсы, гоняет их по CIS Benchmark, складывает в единый инвентори и подключает к существующим EventBridge-автоматизациям.
То есть findings по AWS и Azure - в одной консоли, в одном формате!
Нечто невероятное как по мне.

Из минусов - не работает в ОАЭ , Бахрейне и Новой Зеландии, ну да не в первый раз с региональными огрызками сталкиваемся.

Так же у них появился новый функционал.
https://aws.amazon.com/about-aws/whats-new/2026/07/aws-security-hub-network-scanning/


Самое забавное тут не факт фичи, а то, что Амазон в принципе полез мониторить чужое облако. Обычно multi-cloud security продают Wiz, Orca и другие - потому что у самих вендоров конфликт интересов "зачем нам следить за конкурентом".
А тут AWS такой: "сейчас наведём порядок и в вашем Ажуре всё будет в ажуре"

Перекраивание рынка идёт уже сейчас.
Прямо вот уже сейчас идёт. Выстоят только самые крепкие.

Ждём радости пользователей и горькие слёзки нескольких компаний в этой нише индустрии, куда лезет Амазон.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
#devops #troubleshooting #база #одинденьизжизни

Иногда появляются проблемы, которые нельзя быстро решить.
Они неожиданные и вступаешь в ступор "а как какать?".


У нас много подключенных SaaS и интеграций.
Время от времени приходят разные коллеги и просят добавить/обновить DNS записи.
Например интеграция с каким-нибудь chargebee  или hubspot чем бы это не было. Да тысячи их, я даже не знаю чо они делают.

В основном задача состоит из двух типов записи:
- добавить новый CNAME
_E2E2BURMALDADZHIGURDA SOMEDOMAIN.COM
- обновить существующий TXT добавив туда новый хост
"v=spf1 include:outlook.com include:hubspotemail.net include:chargebee.com ~all\""

В общем-то ничего сложного,
Стек на тераформе и легко пилю MR, где добавляю, получаю аппрув, качу в мейн и ..а всё отлично, какие ещё и.

Спустя время прибегают сейлзы/саппорт с большими глазами, говорят не доходят часть почты, а это критикал.
🔥🔥🔥
Бежишь смотришь пайплайн - всё ок, тераформ всё раскатал, валидация прошла, все чеки тоже прошли - всё чисто.
nslookup, dig - базовые привычные команды проверки показывают, что всё ок.

Ну магии не существует, пошли на https://mxtoolbox.com/
Пацаны не даром свою зарплату получают (в отличии от меня, лол), и сайт показывает ошибки нарушения контракта.😞

Ошибка, что адресов уже много и пррривет, RFC, и его лимиты.
Дальнейший поиск меня приводит к неизвестному мне ранее
https://datatracker.ietf.org/doc/html/rfc7208

Оказывается есть лимиты и тут. Сука.

RFC 7208 (спека на SPF) прямо говорит: суммарно можно использовать не больше 10 механизмов, которые дёргают DNS - include, a, mx, ptr, exists, redirect.
И считается это не построчно, а рекурсивно - если внутри одного include спрятан ещё include, он тоже идёт в зачёт. Круто, да? Я сам в охере.

То есть в самой записи можно хоть 100 include понаписать - терраформ смолчит, все валидации пройдут, все провайдеры (клаудфлер в данном случае) скажут ок, MR смержится, ревьюер поставит approve, всё ок. Даже на клаудфлер появится. А хлебнёшь ложку говна уже на проверке письма: получатель досчитывает до 10го lookup и такой "аригато, дальше не считаю" - permerror. Причём не сразу и не у всех - где-то письма улетают в спам, где-то тихо дропаются. Полный рандом, сука. Предполагаю из-за разных политик корректных МТА.

Ок, причину мы нашли, быстро ревертаем коммит, проверяем через https://mxtoolbox.com/ и нам показывают, что всё хорошо.

Ок, мы вернули как было, успокаиваем продажников и саппорт и думаем - "а как быть дальше?" Задачу надо решить.

Вот так сходу есть две мысли
- узнать каким-то образом - все те SPF записи в TXT нужны ли нам - не можем ли мы что-то удалить, чтобы добавить нужное? 😏
- как-то эээ по сабдоменам уровнем ниже разнести записи, ну типа того

Слава вселенной - всё в гите и можно узнать по каждому добавлению SPF кто и когда добавлял. Есть название таски, автор. Идём в личку в слак всем людям, спрашиваем "а эта запись ещё нужна? Модем ли мы дропнуть или ещё используем?".

К счастью в этом случае нашли 1 запись, которая 100% не нужна и больше не используется, дропнули её и добавили новую по задаче.

Как быть при следующем добавлении следующей SPF записи и все они нужны?
А хз, я там уже не работаю 😬

Я и правда честно - не знаю, варианты те же в голове:
- развести интеграции по поддоменам со своим SPF (типа mail.PARTNER.SOMEDOMAIN.СOM), а не тащить всё в основной домен
Тогда, предполагаю, каждый поддомен считает свои 10, а не делит один лимит на всех, но это надо проверять.
- завести привычку прогонять запись через mxtoolbox перед каждым новым includ
- тупорылые танцы со статикой IP, но это статика, шанс инцидента при смене адреса возрастает в 10 раз

Итоги:
- иногда подстава откуда не ждёшь, никакие штатные валидаторы тебе не покажут потенциальную ошибку. В этом случае нам даже впаяли инцидент 😔
- RFC это боль, сколько раз я уже в своей практике упирался в какие-либо лимиты
- если бы не гит-блейм по таскам - чистили бы SPF вслепую.
Инвестируй в IAC - трейсинг "кто и зачем добавил" окупается на все 100% ровно в такие моменты. Git+IaC=❤️

и да, иногда никакого куберентиса 😀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥166👍4
Дуров тоже молодец.
Захотел я поправить ссылки некрасиво отправленные выше..

Если править через "новый редактор макрдаун в телеграме" - текст заметки просто уничтожается без права восстановления.
😬
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥123👍2👏1
#ai #devops

Раз в 2-3 недели гоняю команду
/insights
в claude code.

Она парсит все мои сессии за последние дни и выкатывает наглядный html-отчёт без лишней воды: сильные стороны, где я реально эффективен, где просаживаюсь, что можно заавтоматизировать, какие бэд-практисы проскакивают.

Отдельно подскажет, чем обогатить CLAUDE.md, как лучше структурировать контекст, где утекают токены и время, и какие паттерны повторяются из сессии в сессию, какие скиллы новые запилить на повторяющиеся задачи.
Научит новым промптам.
Подсветит боли и фрустрации как на скрине 😀.

Смотрю, где стал лучше, где наоборот деградировал, и по итогу подкручиваю промпты, сетап и подход к работе.
Реально держит систему в тонусе, а не работу по инерции.
Если с английским не очень - гугл-переводчик отчёт нормально осилит.

Рекомендация - 10 из 10.

Для кодекса и курсора есть НЕ нативные аналоги, но я сам их не тестировал, лишь видел в чатах обсуждение:
- https://github.com/tim-hilde/opencode-insights
- https://github.com/rapidrabbit76/OpenCodeInsights


- - -
Всегда стрёмно такое постить - сейчас вокруг все дохера умные, что ни напиши - "я и так знаю".😬
А простейшая нативная фича - никто не в курсе среди моих знакомых (на работе, я уверен, все в курсе).
Тонкая грань между "база-базная" и "о, а я не знал" 🦍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍64😁3
#бытовое

Когда-то давно я подсел на браузер Chrome и долго на нём сидел.
У меня была целая коллекция закладок.

Как безумный, собирал все интересные ссылки, что попадались мне в интернетах:
- 15 постмортемов от крупных инцидентов и детальным разбором каждого
- как сделать лазер своими руками из DVD-привода
- список всех linux capabilities
- сайт для поиска авиабилетов
- виза в Канаду и что для этого нужно
- все адмишн контроллеры кубера и что они делают
- вебкамеры у подъезда
- чейнджлог кубера 1.19-1.29
- как выучить корейский за 40 уроков
- генерация блоков для комментов
- топ книг для систем дизайна и архитекторов
- грокаем алгоримы %авторнейм%

И тысячи прочей информации.

Всё это было разложено по директориям, внутри которых тоже были директории. Максимально эффективно и понятно - разобрался бы даже посторонний человек, получивший доступ к закладкам. Была даже директория TODO на потом почитать. Всё интересное, на что не хватало времени сразу, закидывал туда. Ага, может, у кого-то тоже такая была или есть.

За многие годы директорий стало больше 60, а закладок больше 2000.

Совсем недавно я пересел на макбук и решил попробовать браузер Safari. В какой-то момент задумался: а нужно ли вообще импортировать все закладки, почистить их перед миграцией или начать с нуля?

Начал разбираться и с грустью понял, что половиной не пользовался уже несколько лет, а 30-35% вообще недоступны - 404 или домена больше нет 🤡.

Сперва немного посидел, сам потыкал руками, потом сделал бэкап закладок, экспортировал их и скормил нейронке - она прошлась по ссылкам курлом в цикле и убрала кучу неактивных. Я снова импортировал, закладок стало около 1100.

Оглядев всё это, почистил TODO-лист, освободил ещё сотен пять, наверное. Потом прошёлся по разделам, посмотрел, какие мне вообще нужны, и снёс целые директории.

Когда закладок осталось около 400, убрал ещё часть директорий - тех, что были уже не нужны для деления на категории. Потом задумался: а заходил ли я по этим ссылкам хоть раз за последний год? В общем, руками удалил то, чем давно не пользовался.

В итоге у меня осталась всего одна директория Alex (так удобнее на панели закладок), внутри - 5 поддиректорий и суммарно около 70 закладок, которыми пользуюсь регулярно. Временные TODO-закладки кидаю прямо на панель, и если не пользуюсь ими - по пятницам чищу, оставляя только директорию Alex.

Поработал так несколько недель и понял, что ничего и не поменялось. Что 70 закладок, что миллион. Бекап закладок улетел в дальний архив.

Я удалил примерно 95% своих закладок. Оставил исключительно то, что использую.
Грустно, но, вероятно, иногда стоит сбросить уже ненужный груз истории.😢
С появлением хороших машин для поиска информации (я всё ещё гуглю) и, особенно, доступными бесплатными нейронками, хранить закладки "на всякий случай" уже немного бессмысленно.

А на Сафари я так и не переехал 😬
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21💯5🤡1
#aws скоро #пятница

Хорошо детям.
С них, вероятно, не берут проценты за саппорт от суммы счёта.
😁37
#всратость #AWScommunity

В 2026 году появилось больше 1000 новичков в программе AWS Community builder.
- https://builder.aws.com/content/3GMVsYO0NN5toIiTRkK0i2yU7i1/new-aws-community-builder-welcome-here-is-how-to-hit-the-ground-running

На днях люди начали получать свой первый мерч.

Ну штош, хотя бы видно, что не всё вайбкодят ребята.
Что-то даже пишут сами, руками.

Welcome to the tean, folks. 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🔥3🤔1😎1
#longread #devops #troubleshooting #одинденьизжизни

Пересечения.

У нас на работе много проектов.
На части из них я как выделенный инженер (был), частично могу кого-то заменять на соседних проектах.

Однажды коллега с соседнего проекта ушёл в длительный отпуск.
На время отпуска меня попросили быть заменой:
- мне выделили все доступы к куберам
- перминш сеты к аккаунтам амазона
- добавили в доменные группы гугла
- дали все ключевые url адреса
- ну и гитлаб, куда без него, дали права девелопера ко всему

Провели небольшой онбординг за полчаса, в целом не так сложно быть заменой, проект пока вроде не в проде, так что критикал нет ничего.
Я проверил все адреса, к волту, к UI фронта и так далее - всё ок.

Жизнь несправедлива и человек из отпуска так и не вернулся, прошла волна увольнений, смыв с борта часть команды.
Так бывает 😢

Спустя время на этот проект пришёл новый человек (ну его с 2 проектов подвинули сразу на 4 что-ли, лол).
Меня попросили его заонбордить, так как предыдущего инженера уже нет.
Немного странно (я знаю буквально ничего), но ок.

Я просто повторил ровно то, что делали мне - сделал заявки на доменные группы гугла, репозитории гитлаба, куберы - в общем всё то же, тупо скопировав из системы саппорт заявок и джиры.

Приходит этот новый инженер ко мне и говорит:
- сюда есть доступ, сюда есть, туда тоже ок, а вот UI интерфейсы продукта - доступа нет.

Ну странно.
Самое странное, что у меня то есть доступ - мы визуально равны по правам.

Проверяем все группы на https://groups.google.com - у нас одинаковые, связанные с этим проектом.
Рестарт ПК, рестарт тейлскейла - никакого эффекта.

Пишем заявку девопсам:
- так и так, вот ссылки на заявки, вот такие группы у меня и у него, вот такие адреса

Вспоминаю, что была какая-то табличка в гугл докс - прикладываю и её, типа вдруг поможет. Табличка просто содержит подсети по всем проектам - бронь, кому что надо.
Сам почти никогда не пользовался - все подсети по аккаунтам нарезаны были на всех проектах до меня и без меня.
Спустя полчаса девопс пишет - всё исправил - не хватало подсетей в tailscale.
Ещё через пара минут новый инженер пишет, что всё ок (ну и там ещё пара человек заодно, кто пришёл на проект).
В фоне смотрю в гитлаб репозитория - там МР на добавление в конфиг тейлскейла:
{ // projectname 111
"src": [
"group:project1-prod@domain.com",
"group:project1-qa@domain.com"
],
"dst": [
"10.******/16",
"10.******/16",
"10.******/16"
],

Проблема решена.
У всех доступы есть, все довольны.

- - -
Решил все дела на работе и пошёл пить чай. Пью и думаю:
ну ведь магии не бывает, я то имел доступ к этим сайтам по продукту.
Как так-то? Что за бред? У меня был доступ и до и после исправлений. Херня какая-то.

Эта мысль буквально не давала мне покоя до вечера и рано утром я радостным щеночком побежал разбираться.
Я посмотрел конфиг тейлскейла и буквально сразу, поиском, понял, где тут ошибка.
Первые два октета совпадали с одним моим текущим проектом 😬
То есть в конфиге тейлскейла было ещё и
{ // projectname 222
"src": [
"group:project222-stage@domain.com",
"group:project222-prod@domain.com"
],
"dst": [
"10.******/16",
"10.******/16",
"10.******/16"
],

Абсолютно те же подсети!

Удивился, полез в историю уволенного инженера - нашел в переписке намёки на то, что он был в курсе пересечений и это надо было сделать.
Вероятно я об этом забыл или невнимательно слушал 🤡

Пишу новому инженеру на проект:
- ты только пришёл сюда, а у тебя уже есть техдолг: целым аккаунтом Х в AWS переехать на другие подсети, с полным пересозданием всех ресурсов ))))😂🤣

- - -
До сих пор не знаю, что реально меня триггенуло разбираться дальше после "проблема решена":
- то, что уволенный инженер месяц-полтора назад намекал/говорил про пересечение подсетей, а я это забыл и где-то в глубине подсознания я всё же знал ответ
- то, у меня большое любопытство и мне неспокойно, когда решение есть, а объяснения нет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍172
#kubernetes #argocd #ai #agents #devops

Baseline.

С появлением LLM/AI/agent я начал использовать технику baseline.
Я даже не знаю, техника ли это или часть терминологии тестов для CICD, просто использую и всё. Откуда узнал - не знаю, может где вычитал.

Смысл простой: спрашиваю агента*, что он может сделать для бейзлайна
- обновления кубернетис кластера
- обновление аргосиди (недавно бампал 2.14 до 3.4.5)
- изменение количества нод/шардов кластера CNPG


В общем всё то, где есть "состояние ДО изменения/апгрейда" и "состояние ПОСЛЕ изменения/апгрейда".
Чтобы понять как прошёл апдейт и нет ли деградации/ошибок.

Агент фиксирует состояние до апгрейда, затем я вношу изменения через МР, затем прошу агента проверить состояние после изменения.

Пример промпта: "Обновляю арго с 2.14 до 3.4.5, вот ссылка на мой MR на апдейт, сделай бейзлайн Argo, потом я смерджу и ты проверишь после".
Дальше он сам:
- снимает статусы всех Applications (Healthy/Degraded/Unknown/OutOfSync)
- собирает табличку "апп > статус"
- смотрит логи git-сервера Argo
- проверяет RBAC/SSO
- смотрит все релейтед CRD и версии
- фиксирует аномальный рост CPU/memory
- смотрит синк дюрейшны и реконсилейшн лаги
- всё складывает в txt/json в недра /tmp

Мержу МР, апгрейжу, говорю "готово" - агент повторяет то же самое и делает тупой дифф.
Счётчики статусов совпали - говорит "всё ок".
Не совпали - смотрит, какой апп деградировал и почему, сам же лезет смотреть логи git-сервера.

Нюанс: объём проверок - не константа, а то, что написано в промпте.
- если под рукой Grafana/Prometheus/VictoriaMetrics - можно попросить дёрнуть реальные метрики, а не только статусы Applications
- если просто бросил текстом "сделай бейзлайн арго апдейт" - получишь узкий набор: статусы, табличка, логи
- можно сперва спросить агента "какой бейзлайн ты сможешь снять для %операциянейм%?" и после получения большого списка сделать промпт на бейзлайн с нужными тебе проверками

Никакой магии в хуках/скиллах/CLAUDE.md для этого не нужно - модель просто следует тексту запроса.
Артефакт - куча текстовых файлов в недрах /tmp, плюс если отдельно попросишь - тикет в Jira с состоянием до/после для истории.
Можно даже самому глазами/регулярками проверить, если не веришь агенту.

Только фактчекинг, без прогнозов, без галлюцинаций (в моей практике).

Рекомендация 10 из 10.
Начните использовать слово baseline в промптах при подготовке к изменению/апгрейду.
Проверки на деградацию/ошибки при апгрейдах никогда ещё не были столь простыми.

- - -
*Проверялось только на claude code.
19👍11