Переводим проекты с...
 
Уведомления
Очистить всё

Переводим проекты студии на Kamal 2: что обычно забывают?

5 Сообщения
4 Пользователи
2 Реакции
341 Просмотры
chaika
Сообщения: 4
Автор темы
Пишет в irb техдир небольшой студии
Присоединился: 10 месяцев назад
[#119]

Небольшая студия, восемь клиентских проектов на Rails от 7.1 до 8.1, деплой у всех разный: где-то Capistrano, где-то руками по SSH. Хочу привести всё к Kamal 2: на проект один VPS у хостера, приложение, Postgres как accessory, Thruster перед Puma. Пробный проект уже выкатил. Что обычно забывают на таком сетапе, пока не прилетело ночью?


4 ответа
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

Мой обычный список граблей для Kamal на одном сервере:
- бэкапы базы-accessory. Kamal её поднимет, но бэкапить не будет, и класть бэкап на тот же диск бессмысленно;
- в .kamal/secrets только ссылки на переменные окружения или менеджер паролей, а не сами значения: файл лежит в репозитории. Видел там пароль от базы открытым текстом, не надо так;
- диск: старые образы Kamal чистит сам, а логи Docker без ротации съедят место за пару месяцев;
- healthcheck: стандартный /up проверяет только, что приложение загрузилось, а не что оно видит базу.
Accessory для базы примерно такой:

accessories:
  db:
    image: postgres:17
    host: 203.0.113.10
    port: "spbrubyconf.ru:5432"
    env:
      secret:
        - POSTGRES_PASSWORD
    directories:
      - data:/var/lib/postgresql/data

Ответ
Шухрат 1998
Сообщения: 2
Только поставил Ruby DevOps-инженер
Присоединился: 7 месяцев назад

Про SSL: с ssl: true kamal-proxy получает сертификат сам, но только когда домен уже смотрит на сервер и открыт 80-й порт. Переключайте DNS клиента до первого деплоя, иначе он повиснет на выпуске сертификата.


Ответ
chaika
Сообщения: 4
Автор темы
Пишет в irb техдир небольшой студии
Присоединился: 10 месяцев назад

Про бэкапы в точку, на пробном их не было. Сделал отдельный accessory с pg_dump по крону раз в сутки и выгрузкой в объектное хранилище в другом регионе, плюс ротацию логов Docker в daemon.json, max-size 50m. Деплой сейчас 3 минуты против 8 на Capistrano.


Ответ
Роман64
Сообщения: 2
Только поставил Ruby SRE
Присоединился: 9 месяцев назад

и восстановление из этого бэкапа хоть раз проверьте. бэкап, из которого ни разу не поднимались, ещё не бэкап


Ответ