tgoop.com/dev_easy_notes/472
Last Update:
Пару лет назад, когда я только пришёл в команду инфры, одной из первых задач было перевести одного бота в кубер. Потому что у нас в компании все мелкие сервисы как раз активно туда переезжали. И я тогда вёл забавный дневник, который назвал: "Путешествие мобильщика в мире куберов". Погнали:
👉 Поставили задачу перевести RMS (внутреннюю систему) в k8s. Думаю: «Справлюсь быстро, нужно всего-то почитать пару док – выглядит изи».
👉 Изучаю, что вообще такое k8s, читаю инструкцию по переезду. Оказывается, у нас есть своя обёртка над k8s – называется Unic.
👉 Изучаю, что за Unic. Нихера не понятно, но очень интересно. Начинаю разбираться, как работают пайплайны для деплоя в Unic.
👉 Нужно запросить доступ к k8s от CI нашего проекта. Пишу админу, прошу изменить настройки сети. Меня шлют лесом – бля, я что, опять на сайте знакомств?
👉 В итоге договариваемся, прокидываем сетевые доступы от CI до k8s.
👉 Настраиваю пайплайны публикации по инструкции для демо-проекта. Добавляю Dockerfile, подключаю пайплайны Unic, в доках которого гордо заявлено, что он сам умеет собирать и публиковать докер. Генерирую паспорт проекта – да, именно паспорт.
👉 Пробую задеплоить демо-проект. Пайплайны падают, ругаются на паспорт. Благо я из Казахстана и к доёбам из-за паспорта привык.
👉 Пишу в группу SRE по поводу паспорта. Они просят прописать специальные доступы в CI.
👉 Снова прошу владельца инфры прописать доступы. Он прописывает мне по ебалу. Отказывает, говорит: не выдам доступы.
👉 Пишу снова SRE, что не получается выбить доступы. Спрашивают: "Нужно деплоить на прод?". Отвечаю: "Нет, только в QA".
👉 Тогда отвечают: "А, ну если в QA, то и с паспортом не надо заморачиваться". Блять…
👉 Отключаю таски проверки паспорта в CI (жалко, в Госуслугах так нельзя). Пробую ещё раз задеплоить демо-проект.
👉 Фейл: неправильный формат конфигурационного файла (хотя я взял его с демо-проекта без изменений). Ещё раз изучаю файл, выставляю все поля как надо.
👉 Пробую снова – оказывается, Unic рот топтал сам собирать и публиковать докер. Надо делать всё вручную.
👉 Добавляю отдельную job-у для публикации докера демо-приложения.
👉 Фейл: нужны сервис-аккаунты для публикации в Artifactory, которые соответствуют билд-инфре. Остальные не работают.
👉 Прошу создать эти аккаунты – слава богу, сделали сразу. Меняю настройки пайплайнов.
👉 Докер опубликовался, но деплой упал: не хватило ресурсов. Оказывается, нужно количество инстансов +1 запасной.
👉 Делаю 3 инстанса в namespace. Три инстанса для сервиса, у которого 3 запроса в неделю – Big Tech, хуле…
👉 Ещё попытка деплоя – успешно! Демо-приложение задеплоилось. Пытаюсь перенастроить пайплайны на наше приложение.
👉 Запускаются, но сразу падаем. Причина – неизвестна. Начинаю искать.
👉 Оказалось – неправильно настроен health check. Думаю написать заявление, но передумал.
👉 Меняю health check. Пробую деплой. Успешно. Приложение запустилось.
👉 Пробую отправить запросы. Запросы уходят в пустоту – происходит целое нихера.
👉 Понимаю: срочно нужны логи. Внедряю логирование. Деплой успешный. Пытаюсь найти логи – логов нет!
👉 Теряю надежду, хочется плакать. Читаю доку ещё раз. Проверяю "чистилище" для неправильных логов – да, они, разумеется, тут. Правлю формат логов.
👉 Логи есть. Отлично. Понимаю, где ошибка в обработке запроса. Чиню.
👉 Делаю пробные запросы. Аллилуйя – всё работает.
BY Dev Easy Notes
Share with your friend now:
tgoop.com/dev_easy_notes/472