В Kubernetes приложение иногда стартует раньше PostgreSQL. Какой вариант поставки наиболее безопасен?

Из вариантов наиболее полный — отдельный контролируемый запуск миграций и readinessProbe приложения. Readiness не допускает трафик до готовности, а миграции не конкурируют при старте каждой реплики.

Короткий ответ

Что ответить на собеседовании

Из вариантов наиболее полный — отдельный контролируемый запуск миграций и readinessProbe приложения. Readiness не допускает трафик до готовности, а миграции не конкурируют при старте каждой реплики.

Подробный разбор

Ответ с пояснениями

Условие

В Kubernetes приложение иногда стартует раньше PostgreSQL. Какой вариант поставки наиболее безопасен?

  • Увеличить число реплик сервиса.
  • Повторять подключение к базе с ограниченным числом попыток.
  • Добавить проверку подключения к PostgreSQL перед готовностью пода.
  • Выполнить миграции отдельным контролируемым шагом и использовать readinessProbe приложения.
  • Убрать интеграционные тесты из GitLab CI.
  • Поставить паузу 30 секунд перед запуском приложения.

Ответ

Из вариантов наиболее полный — отдельный контролируемый запуск миграций и readinessProbe приложения. Readiness не допускает трафик до готовности, а миграции не конкурируют при старте каждой реплики.

Приложению также нужны ограниченные retries с backoff для временной недоступности БД. Проверка только TCP-подключения не доказывает наличие подходящей схемы. Фиксированный sleep ненадёжен, а увеличение реплик не исправляет порядок готовности. Изменения схемы должны быть совместимы с одновременно работающими версиями приложения.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее