Сине-зеленый деплой — это метод развертывания приложений, который минимизирует downtime и риски при обновлении. Основная идея: одновременно существуют две идентичные production-среды:
Изначально:
Процесс обновления:
После переключения:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "0" # Изначально весь трафик к blue
spec:
rules:
- host: myapp.example.com
http:
paths:
- backend:
service:
name: blue-service
port:
number: 80
path: /
pathType: Prefix
✅ Нулевой downtime - переключение происходит мгновенно
✅ Быстрый откат - достаточно перенаправить трафик обратно
✅ Безопасное тестирование - можно тестировать новую версию на реальной инфраструктуре
✅ Упрощение CI/CD - четкое разделение стадий
❌ Требует ресурсов - нужно поддерживать две среды
❌ Сложность с stateful-сервисами - проблемы с БД и состоянием
❌ Нужна инфраструктура - балансировщики, мониторинг
Тестирование перед переключением:
Работа с данными:
Мониторинг:
// Пример проверки здоровья перед переключением
func isGreenHealthy() bool {
resp, err := http.Get("http://green-service/health")
return err == nil && resp.StatusCode == 200
}
Сине-зеленый деплой — это мощная стратегия для:
Несмотря на ресурсозатратность, этот метод обеспечивает максимальную надежность процесса обновления, что особенно важно для финансовых систем, маркетплейсов и других highload-проектов.