История работ на Gitlab. Часть 1💬
Друзья, всем привет! Сегодня расскажу одну историю из моей практики.
Однажды перед нами встала довольно понятная задача: в связи с ростом нагрузки и горизонтальным масшатбированием инстанса потребовалось вынести Sidekiq на отдельный хост.
🔴 Схема была такой: делаем основной хост с API и всем тем, что осталось и новый отдельный хост под Sidekiq. Мы проверили, что у Sidekiq есть необходимый сетевой доступ, на основном GitLab‑узле Sidekiq отключили, а на новом сервере включили.
Итог: все основные тесты прошли успешно. Стандартные фоновые задачи работали нормально. Пайплайны запускались, джобы отрабатывали без явных ошибок. А вот с динамическими пайплайнами возникла проблема, они не могли найти артефакты.
⏩ Как это выглядело
Джоба, которая должна была читать артефакты предыдущего стейджа, падала с ошибкой о том, что артефакты не найдены. Но при этом:
• В UI GitLab артефакт у предыдущей джобы был, его можно было скачать руками.
• Логи runner’а показывали стандартный запрос за артефактами, а затем падение на стороне GitLab.
Ошибка проявлялась именно в сценариях с динамической генерацией. Ну как ошибка...даже не ошибка
Чем-то похожие проблемы нашлись тут и тут.
Если логически предположить, что теперь он ищет артефакты не там, значит выносим все артефакты, чтобы условия были единые. Для этого унесем их в 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 на файловой системе. Прям как тут.
Решение вроде бы простое:
• Проверяем, что все пути совпадают и перезапускаем сервис.
• Видим, что Pages вернулись к жизни и начали стабильно подхватывать новые деплои без ручных перезапусков.
🔴 Но тестирование снова не проходит. Теперь у пользователей не находятся SSH ключи.
Это последний неприятный эффект, который мы получили «бонусом» после всех изменений. Но о нем в следующей части)
Друзья, всем привет! Сегодня расскажу одну историю из моей практики.
Однажды перед нами встала довольно понятная задача: в связи с ростом нагрузки и горизонтальным масшатбированием инстанса потребовалось вынести 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['object_store']['objects']['pages']['bucket'] = 'gitlab-pages'
• Проверяем, что все пути совпадают и перезапускаем сервис.
• Видим, что Pages вернулись к жизни и начали стабильно подхватывать новые деплои без ручных перезапусков.
Это последний неприятный эффект, который мы получили «бонусом» после всех изменений. Но о нем в следующей части)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👀6❤5😱1
Коллеги, приветствую👋
Рад сообщить, что Слёрм анонсировал новый курс: Интенсив по погружению в GIT
Как проходит обучение:
➡️ 10 дней практики по 2–3 часа в день
➡️ Видеоуроки + текстовые гайды
➡️ Разбор заданий от эксперта
➡️ Командный проект с ретроспективой и проектом в портфолио
⏩ Автор и спикер курса: Кирилл Казарин, менеджер глобальных направлений DevOps/SRE в RingCentral Inc. Стаж в администрировании — 15 лет.
⏩ Старт: 20 мая
⏩ ПОЛУЧИТЬ НОВЫЕ ЗНАНИЯ
Рад сообщить, что Слёрм анонсировал новый курс: Интенсив по погружению в GIT
Как проходит обучение:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
Приветы! На связи Аниса 🤓
Легендарныедолгожданные майские начались!
Включаем режим качественного отдыха и перенимаем Правила жизни моего уважаемого альфа-кота Сырка(фото прилагаю в обязательном порядке):
Правило 1:
Сон — наш союзник
Правило 2:
Любопытство — путь к развитию
Правило 3:
Здоровый эгоизм — необходимая часть личности
Как считаете, база?
Обязательно делитесь фотками и мудростями своих пушистых домочадцев в комментариях — часто они и правда делают нас лучше)
Легендарные
Включаем режим качественного отдыха и перенимаем Правила жизни моего уважаемого альфа-кота Сырка
Правило 1:
Сон — наш союзник
Для современного кота и человека очень важно перезагружаться. Выходной — прекрасная возможность успокоиться и позволить себе вздремнуть после прогулки😴
Правило 2:
Любопытство — путь к развитию
Будь то исследование картонной коробки или истории возникновения египетских пирамид — всё это добавляет интереса к жизни и позволяет сохранить себя в роли не только работника, но и человека, самого себя.
Правило 3:
Здоровый эгоизм — необходимая часть личности
Не нравится, как гладят — уходим в домик, а если чувствуем перегруз в работе — говорим «нет» новым задачам или предлагаем двигать приоритет текущих (об этом, кстати, был пост). Быть хорошим для всех равнозначно потере самого себя.
Как считаете, база?
Обязательно делитесь фотками и мудростями своих пушистых домочадцев в комментариях — часто они и правда делают нас лучше)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤6💯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. Документация хорошая, но иногда совсем не ясно где искать необходимое.
При этом, он обнажает любые неаккуратности в конфигурации и особенности архитектуры.
Мы остановились на проблеме с 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 были.
Какая мораль
Вынос Sidekiq на отдельный сервер – шаг вполне стандартный и рекомендованный для масштабирования GitLab. Документация хорошая, но иногда совсем не ясно где искать необходимое.
При этом, он обнажает любые неаккуратности в конфигурации и особенности архитектуры.
Please open Telegram to view this post
VIEW IN TELEGRAM
Gitlab
Fast lookup of SSH keys | GitLab Docs
Configure a faster SSH authorization method for GitLab instances with many users.
👍4🔥4
Салют! На связи Аниса 👸
Вопрос вам на засыпку:
Знаете про Эффект ореола?
Это когда одно яркое качество создает общее впечатление обо всем остальном.
Красивая девушка = несерьёзная. Спокойный мужчина = не лидер. Рекомендация от сотрудника = особенный кандидат.
И любимое: сотрудник бигтеха = сильный и лучший кандидатс уважением ко всем бигтехам 😬
🗣 Почему так происходит?
1️⃣ Экономия когнитивных ресурсов
2⃣ Стремление к непротиворечивости
3️⃣ Влияние стереотипов
🗣 Всегда ли Эффект ореола отражает реальную картину вещей?
Конечно, нет. Однако, важно уметь использовать этот эффект в свою пользу) Да, в поиске работы психологические хитрости — это на одном уровне с софт-скилами, не иначе!
Вообще, скажу так: уловочек много! Если захотите почитать про правила для бывалых — дайте знать, с удовольствием поделюсь👸
Вопрос вам на засыпку:
Знаете про Эффект ореола?
Это когда одно яркое качество создает общее впечатление обо всем остальном.
Красивая девушка = несерьёзная. Спокойный мужчина = не лидер. Рекомендация от сотрудника = особенный кандидат.
И любимое: сотрудник бигтеха = сильный и лучший кандидат
Мозгу проще сделать быстрый вывод на основе одной детали, чем тратить время и энергию на анализ всех характеристик
Мы склонны верить, что если человек добрый, то, скорее всего он ещё умный и честный. Так проще создать в голове полный образ
Окружение и социальная среда формируют шаблоны, которые автоматически применяются к людям
Конечно, нет. Однако, важно уметь использовать этот эффект в свою пользу) Да, в поиске работы психологические хитрости — это на одном уровне с софт-скилами, не иначе!
Базовые правила Эффекта ореола:
• самый сильный козырь в резюме ставим на видное место
• буквально заучиваем самопрезентацию для собеседования, так как у первого впечатления нет второго шанса
• если случилась лажа в начале — говорим об этом вслух. Озвученное волнение имеет меньше власти над нами и лучше выглядит в глазах со беседующего в отличие от непроизнесенного
Вообще, скажу так: уловочек много! Если захотите почитать про правила для бывалых — дайте знать, с удовольствием поделюсь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥3
Коллеги, приветствую!👋
Сегодня — последний день, когда можно купить курсы Слёрма со скидкой 40% по промокоду➡️ MAY26
❗️ Это отличная возможность прокачать навыки по Docker, Terraform, Git, Ansible и другим востребованным направлениям — системно усилить свои компетенции и закрыть пробелы в знаниях
Полный список курсов, которые вы можете приобрести со скидкой доступен➡️ здесь
🔴 Важно: скидка не действует на комплекты курсов, сертификаты и подписку и доступна только для физлиц.
Успейте воспользоваться предложением, пока акция не закончилась
Сегодня — последний день, когда можно купить курсы Слёрма со скидкой 40% по промокоду
Полный список курсов, которые вы можете приобрести со скидкой доступен
Успейте воспользоваться предложением, пока акция не закончилась
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
🔥17👍12👏3⚡1
Приветы! На связи конечно Аниса, пятница же 😎
Ранее рассказывала об Эффекте ореола, как и почему он работает. Зафиксировали.
А сегодня расскажу о таком, уже для продвинутых:
Как использовать Эффект ореола при поиске работы?
1️⃣ Следим за первой и последней минутой общения
2️⃣ Думаем, какой образ и какие качества мы хотим транслировать
3️⃣ Ни в коем случае не обесцениваем себя вслух (очень частая ошибка 😕 )
На самом деле, таких крючков много. Однако даже если начать реально использовать эти три — положительный результат уже будет заметен. Я, кстати, сама использую такие приёмчики — рекомендую😎
Если у вас есть свои, то делитесь!)
Ранее рассказывала об Эффекте ореола, как и почему он работает. Зафиксировали.
А сегодня расскажу о таком, уже для продвинутых:
Как использовать Эффект ореола при поиске работы?
Человеческая психика круто запоминает начало и конец беседы.
Начало — первое впечатление. Конец — запоминающееся послевкусие.
Если есть волнение, можно им открыто поделиться, это обычно располагает.
Вполне нормально, что мы одновременно обладаем социальными ролями "Кореш Серёги" и "Котик" и "Кандидат на senior-разработчика". Перед собеседованием важно продумать, какими качествами может обладать последний, и транслировать их.
Еще раз: мы не играем роль. Все эти роли уже есть в нас, и их важно просто вывести на передний план.
Фразы в стиле "я, конечно, не эксперт в этом”, "у меня не так много опыта", "может быть, я не совсем подхожу" могут казаться проявлением милой скромности. Но психологически они создают такое впечатление: кандидат сам подсказывает работодателю, где в нем сомневаться.
Лучше сказать так:
"Интересно, у меня фокус в работе был в другом, однако было бы интересно погрузиться в эту задачу — меня отчасти это и заинтересовало в вакансии”.
На самом деле, таких крючков много. Однако даже если начать реально использовать эти три — положительный результат уже будет заметен. Я, кстати, сама использую такие приёмчики — рекомендую
Если у вас есть свои, то делитесь!)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍3🤝2
Коллеги, приветствую👋
Рекомендую посмотреть бесплатный урок по системе контроля версий Git
Что вы узнаете на бесплатном уроке:
➡️ Зачем вообще нужны системы контроля версий
➡️ Почему Git — это стандарт, который используют все
➡️ Что такое методология управления инфраструктурой, использующая систему управления версиями кода Git как единый источник достоверной информации (GitOps) и когда код правит миром
➡️ Чем Git может быть полезен вам прямо сейчас
⏩ Забрать бесплатный урок
Рекомендую посмотреть бесплатный урок по системе контроля версий Git
Что вы узнаете на бесплатном уроке:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1