Devops Bootcamp с Федосеевым
5.22K subscribers
427 photos
22 videos
6 files
442 links
Это проект Слёрма: коммьюнити для начинающих DevOps-инженеров, как стартовать в Девопс, вебы от ТОП экспертов, новости, общение и поддержка

Бесплатный курс по DevOps: https://to.slurm.io/2pKSCw
Download Telegram
История работ на Gitlab. Часть 1💬

Друзья, всем привет! Сегодня расскажу одну историю из моей практики.
Однажды перед нами встала довольно понятная задача: в связи с ростом нагрузки и горизонтальным масшатбированием инстанса потребовалось вынести Sidekiq на отдельный хост.

🔴Схема была такой: делаем основной хост с API и всем тем, что осталось и новый отдельный хост под Sidekiq. Мы проверили, что у Sidekiq есть необходимый сетевой доступ, на основном GitLab‑узле Sidekiq отключили, а на новом сервере включили.
Итог: все основные тесты прошли успешно. Стандартные фоновые задачи работали нормально. Пайплайны запускались, джобы отрабатывали без явных ошибок. А вот с динамическими пайплайнами возникла проблема, они не могли найти артефакты.

Как это выглядело
Джоба, которая должна была читать артефакты предыдущего стейджа, падала с ошибкой о том, что артефакты не найдены. Но при этом:
• В UI GitLab артефакт у предыдущей джобы был, его можно было скачать руками.
• Логи runner’а показывали стандартный запрос за артефактами, а затем падение на стороне GitLab.

Ошибка проявлялась именно в сценариях с динамической генерацией. Ну как ошибка...даже не ошибка
  "exception.class": "Gitlab::Ci::Artifacts::DecompressedArtifactSizeValidator::FileDecompressionError",
"exception.message": "File decompression error",

Чем-то похожие проблемы нашлись тут и тут.

Если логически предположить, что теперь он ищет артефакты не там, значит выносим все артефакты, чтобы условия были единые. Для этого унесем их в S3, так как его можно использовать для хранения разных объектов. НО на тот момент артефакты всё ещё лежали на локальном диске. После вынесения Sidekiq эта схема стала особенно хрупкой.

🔴В итоге
• Унесли все CI‑артефакты в S3‑совместимое object storage
• Привели конфигурацию к единой схеме хранения, чтобы и web, и Sidekiq работали только через объектное хранилище.
• Динамические пайплайны перестали падать, GitLab стабильно находил объекты, а Sidekiq корректно обрабатывал джобы, завязанные на артефакты. Все, можно применять на проде?

Как бы не так. Новая проблема – сломавшиеся GitLab Pages
Как только мы пофиксили одну проблему, вылезла следующая. Пользователи начали жаловаться, что GitLab Pages перестали открываться, часть проектов стала отдавать 404, а новые деплои страниц как будто вообще не происходили. То есть:
• В репозиториях джобы pages отрабатывали успешно.
• В файловой системе на стороне GitLab мы видели новые сборки в директории, которая служит storage для Pages
• При обращении к GitLab Pages через домен выдавался 404, пока не перезапускали gitlab-pages.

В нашем случае наложились сразу несколько факторов. И пути хранения перенастроенные (после ухода в object storage артефактов), и отдельный сервер Sidekiq, который обрабатывает джобы, отвечающие за публикацию Pages.
В результате, gitlab-rails и Sidekiq думали, что Pages задеплоены на s3, складывали контент в нужное место, но сам Pages искал pages_deployments на файловой системе. Прям как тут.

Решение вроде бы простое:
gitlab_rails['object_store']['objects']['pages']['bucket'] = 'gitlab-pages'

• Проверяем, что все пути совпадают и перезапускаем сервис.
• Видим, что Pages вернулись к жизни и начали стабильно подхватывать новые деплои без ручных перезапусков.

🔴Но тестирование снова не проходит. Теперь у пользователей не находятся SSH ключи.
Это последний неприятный эффект, который мы получили «бонусом» после всех изменений. Но о нем в следующей части)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👀65😱1
Коллеги, приветствую👋

Рад сообщить, что Слёрм анонсировал новый курс: Интенсив по погружению в GIT

Как проходит обучение:
➡️10 дней практики по 2–3 часа в день
➡️Видеоуроки + текстовые гайды
➡️Разбор заданий от эксперта
➡️Командный проект с ретроспективой и проектом в портфолио

Автор и спикер курса: Кирилл Казарин, менеджер глобальных направлений DevOps/SRE в RingCentral Inc. Стаж в администрировании — 15 лет.

Старт: 20 мая

ПОЛУЧИТЬ НОВЫЕ ЗНАНИЯ
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🔥1
Приветы! На связи Аниса 🤓

Легендарные долгожданные майские начались!

Включаем режим качественного отдыха и перенимаем Правила жизни моего уважаемого альфа-кота Сырка (фото прилагаю в обязательном порядке):

Правило 1:
Сон — наш союзник

Для современного кота и человека очень важно перезагружаться. Выходной — прекрасная возможность успокоиться и позволить себе вздремнуть после прогулки 😴


Правило 2:
Любопытство — путь к развитию

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


Правило 3:
Здоровый эгоизм — необходимая часть личности

Не нравится, как гладят — уходим в домик, а если чувствуем перегруз в работе — говорим «нет» новым задачам или предлагаем двигать приоритет текущих (об этом, кстати, был пост). Быть хорошим для всех равнозначно потере самого себя.


Как считаете, база?
Обязательно делитесь фотками и мудростями своих пушистых домочадцев в комментариях — часто они и правда делают нас лучше)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥96💯3
История работ на Gitlab. Часть 2💬

Мы остановились на проблеме с SSH‑доступом. Часть пользователей неожиданно перестала подключаться по SSH:
• Ключи в UI GitLab были видны, как добавленные.
• При попытке клонирования или git fetch GitLab запрашивал пароль или возвращал ошибку «Permission denied (publickey)».

🔴В чем суть
• Когда Sidekiq был на том же сервере, он читал /var/opt/gitlab/.ssh/authorized_keys и было нормально.
• Когда мы вынесли его, он начал писать в свой /var/opt/gitlab/.ssh/authorized_keys на ноде сайдкика.
Произошла потеря мапинга ключа и прав пользователя, которая через БД. Помог ребилд этого файла из БД gitlab-rake gitlab:shell:setup. Но при добавлении или изменении ключа он писал новую инфу снова на ноду сайдкика. И так по кругу.

Решили проблему вот так.

А теперь финальное, сломалось покрытие кода. Просто перестал работать данный функционал.
Для code coverage Sidekiq парсит job.log в рилтайме, но процесс лога джобы такой, что он пумой кладётся на ФС гитлаба в одно место во время джобы (и тут он ещё не артефакт). А по завершению запаковывается уже в артефакт в другое место, по флоу в ссылке.

И раньше сайдкик нормально парсил этот job.log в директории, а после выноса он перестал видеть ФС на основной ноде и не парсил ничего, но при этом опять же все артефакты заданий в UI и S3 были.

В итоге включили инкрементальное логирование. Теперь логи шлются в Redis, а не во временный файл на ФС. Redis виден Sidekiq и он может парсить логи для поиска и отображения процентов в интерфейсе. Из плюсов, логи теперь вобще не пишутся на ФС, а из минусов, эта схема не работает с кластерным Redis.

Какая мораль
Вынос Sidekiq на отдельный сервер – шаг вполне стандартный и рекомендованный для масштабирования GitLab. Документация хорошая, но иногда совсем не ясно где искать необходимое.
При этом, он обнажает любые неаккуратности в конфигурации и особенности архитектуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4
Когда Terraform план уже всё сказал, а ты всё равно идёшь дальше, потому что “ну там, наверное, не критично”
😁18👍1
Салют! На связи Аниса 👸

Вопрос вам на засыпку:

Знаете про Эффект ореола?

Это когда одно яркое качество создает общее впечатление обо всем остальном.

Красивая девушка = несерьёзная. Спокойный мужчина = не лидер. Рекомендация от сотрудника = особенный кандидат.
И любимое: сотрудник бигтеха = сильный и лучший кандидат с уважением ко всем бигтехам 😬

🗣 Почему так происходит?

1️⃣Экономия когнитивных ресурсов
Мозгу проще сделать быстрый вывод на основе одной детали, чем тратить время и энергию на анализ всех характеристик



2⃣Стремление к непротиворечивости
Мы склонны верить, что если человек добрый, то, скорее всего он ещё умный и честный. Так проще создать в голове полный образ



3️⃣Влияние стереотипов
Окружение и социальная среда формируют шаблоны, которые автоматически применяются к людям



🗣 Всегда ли Эффект ореола отражает реальную картину вещей?

Конечно, нет. Однако, важно уметь использовать этот эффект в свою пользу) Да, в поиске работы психологические хитрости — это на одном уровне с софт-скилами, не иначе!

Базовые правила Эффекта ореола:

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



Вообще, скажу так: уловочек много! Если захотите почитать про правила для бывалых — дайте знать, с удовольствием поделюсь 👸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥3
Коллеги, приветствую!👋

Сегодня — последний день, когда можно купить курсы Слёрма со скидкой 40% по промокоду ➡️ MAY26

❗️Это отличная возможность прокачать навыки по Docker, Terraform, Git, Ansible и другим востребованным направлениям — системно усилить свои компетенции и закрыть пробелы в знаниях

Полный список курсов, которые вы можете приобрести со скидкой доступен ➡️ здесь

🔴Важно: скидка не действует на комплекты курсов, сертификаты и подписку и доступна только для физлиц.

Успейте воспользоваться предложением, пока акция не закончилась
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Коллеги приветствую👋

Снова отвлекусь от привычных технических тем, и расскажу историю как я хотел купить себе кепку. Типичная ситуация, как в комедии "Малкольм в центре внимания" в сцене про замену лампочки: "Как ты думаешь, что я делаю?"

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

🔴Начал искать другие, но или выбор слишком большой, или его нет и не удалось что-то выбрать, чтобы было не хуже.

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

🔴На этом этапе я сел придумывать концепцию, генерировать векторные изображения и писать ТЗ на целый лист А4.

🔴Собрав текстовое описание, логотипы и примерные рендеры, я пошёл в организации, которые шьют кепки с нуля. Написал в разные места. Меня либо игнорировали, либо сказали, что с таким ТЗ мне делать ничего не будут, и только одна компания отозвалась и сказала, что сделаем, но после этого перестала отвечать на сообщения.

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

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

🔴Выставка закончилась, и старательный китаец, вернувшийся к себе домой, начал мучать меня каталогами тканей, странными требованиями и нежеланием читать ТЗ. Если не проверить что угодно — результат будет неожиданный. Долго думал, как бы он просто не сделал мне кепку размером с брелок. Подходящего образования, чтобы понимать в выкройке, у меня нет, но рулетка и кепка в руке помогали.

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

Ниже отправлю фото кепок, которые у меня получились⬇️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥6
Такой результат у меня получился⚡️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍12👏31
Приветы! На связи конечно Аниса, пятница же 😎

Ранее рассказывала об Эффекте ореола, как и почему он работает. Зафиксировали.

А сегодня расскажу о таком, уже для продвинутых:

Как использовать Эффект ореола при поиске работы?

1️⃣ Следим за первой и последней минутой общения
Человеческая психика круто запоминает начало и конец беседы.
Начало — первое впечатление. Конец — запоминающееся послевкусие.
Если есть волнение, можно им открыто поделиться, это обычно располагает.


2️⃣ Думаем, какой образ и какие качества мы хотим транслировать
Вполне нормально, что мы одновременно обладаем социальными ролями "Кореш Серёги" и "Котик" и "Кандидат на senior-разработчика". Перед собеседованием важно продумать, какими качествами может обладать последний, и транслировать их.
Еще раз: мы не играем роль. Все эти роли уже есть в нас, и их важно просто вывести на передний план.


3️⃣ Ни в коем случае не обесцениваем себя вслух (очень частая ошибка 😕)
Фразы в стиле "я, конечно, не эксперт в этом”, "у меня не так много опыта", "может быть, я не совсем подхожу" могут казаться проявлением милой скромности. Но психологически они создают такое впечатление: кандидат сам подсказывает работодателю, где в нем сомневаться.
Лучше сказать так:
"Интересно, у меня фокус в работе был в другом, однако было бы интересно погрузиться в эту задачу — меня отчасти это и заинтересовало в вакансии”.


На самом деле, таких крючков много. Однако даже если начать реально использовать эти три — положительный результат уже будет заметен. Я, кстати, сама использую такие приёмчики — рекомендую 😎
Если у вас есть свои, то делитесь!)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3🤝2
Коллеги, приветствую👋

Рекомендую посмотреть бесплатный урок по системе контроля версий Git

Что вы узнаете на бесплатном уроке:
➡️ Зачем вообще нужны системы контроля версий
➡️ Почему Git — это стандарт, который используют все
➡️ Что такое методология управления инфраструктурой, использующая систему управления версиями кода Git как единый источник достоверной информации (GitOps) и когда код правит миром
➡️ Чем Git может быть полезен вам прямо сейчас

Забрать бесплатный урок
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Коллеги, приветствую👋🏻

Приглашаю вас сегодня в 19:00 на вебинар: «Введение в ИИ: от LLM и MCP до ИИ-агентов»

Эксперты на вебинаре обсудят:
🔴как работает LLM;
🔴 полезные приемы написания запросов для ИИ на выполнение задачи (промптов);
🔴 как работать с внутренними данными с помощью ИИ-агентов;
🔴 что такое MCP и зачем это нужно;
🔴 как создать своего первого ИИ-агента.

Что ещё будет на вебинаре:
Вы скорее всего слышали про сертификацию CKAD (Certified Kubernetes Application Developer).
Обычно на этот экзамен выделяют 120 минут и 18 задач. На вебинаре эксперты проведут демо, как решить все задания буквально за пару минут с помощью ИИ.

Спикеры вебинара — эксперты курса «ИИ в работе DevOps-инженера»:
София Филиппова, ИИ-инженер в компании Innova.
Виктор Ведмич, старший архитектор решений.

Ссылка на веб придет в бота:
➡️ Регистрация за 30 сек ⬅️
Please open Telegram to view this post
VIEW IN TELEGRAM
Коллеги приветствую👋🏻

Сегодня снова продолжаем на необычном примере разбирать функционал гитлаба и на сегодня PAGES

Я уже рассказывал про свою потребность формировать марштуры для поездок на мотоцикле для себя и своих друзей.
И как удобно делать? Ставить тикеты! ну точнее Work Items

➡️https://git.notoxops.com/moto/moto-routing/-/work_items?sort=created_date&state=all&first_page_size=20

➡️Для заведения маршрута заводится Issue по шаблону "create_route" в котором уже описаны основные поля для заполнения
При необходимости заводится "create_trip" - как частный случай маршрута и он имеет уже свои поля.

➡️И когда закончено формирование таски марштрута - она переводится в закрытые. После чего пайплайн запускается или руками или по расписанию и собирает на основаении задач легкую статическую страницу для отображения, которую можно показывать друзьям.

https://pages.notoxops.com/moto/moto-routing/

Это и есть простая демонстрация pages

В пайплайне только одна job

pages:
stage: deploy
script:
- *генерация страниц*
artifacts:
paths:
- public

Остается еще один интересный момент с тем, на каком адресе будет размещаться pages и тут есть 3 варианта:
1️⃣Путь на основании пути проекта например https://pages.notoxops.com/moto/moto-routing/
2️⃣На основании уникального айди например https://pages.notoxops.com/moto-routing-2a884c
3️⃣На отдельном домене https://moto.notoxops.com что потребует подтверждения домена. Также существует возможность выпустить свой сертификат

У меня выбран 1й вариант, но мне нравится и 3й, но есть сложности с тем, что у меня gitlab стоит за прокси и сертификаты там-же. Поэтому редиректа на https нет.

➡️Для чего это еще можно применять:
Отчеты о сборке, релизах публиковать на удобных страницах или хостить свой сайт на gitlab.

За майские праздники проехал только 3 маршрута - это не много, но честные поездки. Будет свободная минутка - заполню лучше.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Коллеги, приветствую👋

Слёрм объявляет о запуске нового практического курса «Разработка ИИ-агентов»

Для кого этот курс:
Инженеры DevOps / SRE (автоматизация инцидентов, диагностика через kubectl);
Backend-разработчики (интеграция LLM в сервисы);
Специалисты, пишущие на Python и желающие перейти в ИИ-инженерию без углубления в ML

Результаты по окончании 10 недель обучения:
🔴Сборка мульти-агентной системы (Incident Response / K8s Troubleshooter);
🔴Проработка вопросов безопасности, мониторинга и оптимизации стоимости LLM-запросов;
🔴Итоговый GitHub-репозиторий с архитектурой и интеграцией автоматизированных оценок качества и производительности (CI/eval-тесты) в CI/CD-пайплайны.

➡️Инструментарий: LangGraph, FastMCP, LiteLLM, DeepEval, Langfuse, Docker, K8s.

➡️Формат: 12 уроков, QA-сессии, чат с экспертами, проверка проекта, именной сертификат.

УЗНАТЬ ПОДРОБНОСТИ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
— Пользуешься нейросетями в работе? Понятно
— Не пользуешься нейросетями в работе? Понятно


Салюты, это Аниса 👸

Ага, попались! Думали, что это очередной кринжовый пост в интернете о том, как круто использовать ИИ везде и во всех сферах жизни? А вот и нет!

Я за сохранение рассудка базовых когнитивных способностей. Однако и тормозить в освоении новых технологий не стоит.

🤓 В общем, рассказываю, что я уже доверила нейросетям:

📎поиск профильных конференций, среди участников которых я могу найти классных кандидатов
📎поиск исследований рынка труда, включая зарубежные источники (с обязательной перепроверкой)
📎составление списка ключевых слов для резюме, чтобы пройти ИИ-фильтры на том самом карьерном сайте
📎подбор новых духов, поиск игры по воспоминанию из детства и тд


🤢 Что я точно пока не готова делегировать:

📎разбор откликов
📎скрининг резюме и принятие решения на основе ИИ-вердикта
📎переписка с кандидатами и т.п.

На мой взгляд, все, что касается взаимодействия человека с человеком — это суперценная и индивидуальная штука, которая не заканчивается на анализе текста. Многое основывается на сенсорном и психологическом механизме. Дада, вот такая я умная..


Это я к чему?
Мы живем в такое время, когда важно сохранять баланс между сохранением человеческого и приобретением навыков. Уметь работать с ИИ — реально крутая штука, и я сама пока в процессе познания этого инструмента.

〰️И велик будет тот, кто в работе будет AI-native, а с людьми.. human-native, скажем так!〰️ (с) Аниса С.

А вы что об этом думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍6🔥6
Коллеги приветствую. Недавно вышла версия Gitlab 19 версии.
Нравится рассказывать о интересных фичах и хотелось бы разобрать кучу всего интересного что добавилось, но большинство фич в платной версии конечно.
Рассмотрим функционал кастомизированные inputs для merge requests

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

Вот один из вариантов применения, можно вставить и попробовать

spec:
inputs:
environment:
description: "Куда деплоим демо"
default: "test"
options:
- "test"
- "stagging"
test_suite:
description: "Какой набор тестов запускать"
default: "smoke"
options:
- "smoke"
- "full"

---
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- when: never

stages:
- info
- test
- deploy

show-inputs:
stage: info
script:
- echo "MR pipeline demo"
- echo "environment=$[[ inputs.environment ]]"
- echo "test_suite=$[[ inputs.test_suite ]]"

smoke-tests:
stage: test
rules:
- if: '"$[[ inputs.test_suite ]]" == "smoke"'
script:
- echo "Running SMOKE tests"
- echo "Quick checks only"

full-tests:
stage: test
rules:
- if: '"$[[ inputs.test_suite ]]" == "full"'
script:
- echo "Running FULL tests"
- echo "Long regression suite"

deploy:
stage: deploy
script:
- echo "Deploy to $[[ inputs.environment ]]"
- |
if [ "$[[ inputs.environment ]]" = "stagging" ]; then
echo "Stagging mode demo"
else
echo "Test mode demo"
fi
7
Коллеги, приветствую👋

Сегодня хотел рассказать о том, какие инструменты реально нужны в работе Devops-инженеру.

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

Коротко о каждом:
🔹 Ansible — автоматизация конфигураций и управление инфраструктурой без агентов. Решает рутину с серверами от и до.
🔹 Docker — контейнеризация как стандарт современной разработки. Изучите сети, тома, оркестрацию на базовом уровне.
🔹 GitLab CI/CD — построение пайплайнов, которые автоматизируют тестирование, сборку и доставку на прод. Экономит часы каждый спринт.
🔹 Terraform (базовый) — инфраструктура как код для новичков. Научитесь описывать облачные ресурсы декларативно.
🔹 Terraform (продвинутый) — продвинутое использование: модули, работа с состояниями в команде, production-ready подходы.

До 31 мая действует скидка 20% на любой из этих видеокурсов, по промокоду: БУТКЕМП20
А как ваши дела? Поделитесь в комментариях👇