Твои действия во время деплоя

«Твои действия во время деплоя» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Мой процесс деплоя — это выполнение четкого чек-листа, встроенного в CI/CD пайплайн, и активный мониторинг.

  1. Предварительные проверки (до запуска):

    • Убеждаюсь, что все тесты (unit, integration) прошли успешно в пайплайне.
    • Проверяю, что собранный артефакт (Docker-образ) загружен в registry с правильным тегом.
    • Смотрю на diff конфигураций (например, kubectl diff -f k8s/), чтобы понимать, что именно изменится.
  2. Запуск деплоя и наблюдение:

    • Запускаю деплой через пайплайн (например, helm upgrade --install или kubectl apply).
    • Сразу начинаю отслеживать rollout статус: kubectl rollout status deployment/my-app --timeout=300s.
    • Мониторю логи новых подов в реальном времени: kubectl logs -f deployment/my-app --tail=50.
  3. Верификация после деплоя:

    • Проверяю health-чек приложения: curl -f http://<service>/health.
    • Запускаю несколько smoke-тестов через пайплайн на ключевые бизнес-сценарии.
    • Открываю дашборды в Grafana/Prometheus, смотрю на графики ошибок (HTTP 5xx), latency и потребления ресурсов. Сравниваю с состоянием до деплоя.
  4. План отката:

    • Если метрики выходят за рамки или health-чек не проходит, немедленно инициирую откат: kubectl rollout undo deployment/my-app.
    • После отката анализирую логи и метрики провалившейся версии, чтобы понять причину.