Ответ
Мой процесс деплоя — это выполнение четкого чек-листа, встроенного в CI/CD пайплайн, и активный мониторинг.
-
Предварительные проверки (до запуска):
- Убеждаюсь, что все тесты (unit, integration) прошли успешно в пайплайне.
- Проверяю, что собранный артефакт (Docker-образ) загружен в registry с правильным тегом.
- Смотрю на diff конфигураций (например,
kubectl diff -f k8s/), чтобы понимать, что именно изменится.
-
Запуск деплоя и наблюдение:
- Запускаю деплой через пайплайн (например,
helm upgrade --installилиkubectl apply). - Сразу начинаю отслеживать rollout статус:
kubectl rollout status deployment/my-app --timeout=300s. - Мониторю логи новых подов в реальном времени:
kubectl logs -f deployment/my-app --tail=50.
- Запускаю деплой через пайплайн (например,
-
Верификация после деплоя:
- Проверяю health-чек приложения:
curl -f http://<service>/health. - Запускаю несколько smoke-тестов через пайплайн на ключевые бизнес-сценарии.
- Открываю дашборды в Grafana/Prometheus, смотрю на графики ошибок (HTTP 5xx), latency и потребления ресурсов. Сравниваю с состоянием до деплоя.
- Проверяю health-чек приложения:
-
План отката:
- Если метрики выходят за рамки или health-чек не проходит, немедленно инициирую откат:
kubectl rollout undo deployment/my-app. - После отката анализирую логи и метрики провалившейся версии, чтобы понять причину.
- Если метрики выходят за рамки или health-чек не проходит, немедленно инициирую откат: