서버 운영에서 배포보다 더 중요한 것은 문제가 발생했을 때 빠르게 복구하는 능력입니다.
새로운 Application Version을 배포한 이후 예상하지 못한 오류가 발생할 수 있습니다.
예를 들어:
- 새로운 코드 배포 후 API 오류 발생
- Container 실행 실패
- 성능 저하 발생
- Database 연결 문제 발생
- 사용자가 서비스 오류 경험
이런 상황에서 기존 정상 Version으로 빠르게 돌아갈 수 있어야 합니다.
Kubernetes는 Deployment Revision 관리와 Rollback 기능을 제공하여 이전 상태로 복구할 수 있는 구조를 제공합니다.
Rollback은 문제가 발생한 Deployment를 이전 정상 Version으로 되돌리는 Kubernetes 운영 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Deployment | Version 변경 관리 |
| ReplicaSet | 이전 Pod 상태 저장 |
| Revision | 배포 기록 관리 |
| Rollback | 이전 Version 복구 |
Kubernetes Rollback 구조를 이해하면 Production 환경에서 배포 실패 상황에 빠르게 대응하고 서비스 중단 시간을 줄일 수 있습니다.
Kubernetes Rollback이 필요한 이유
현실적인 서버 운영에서는 모든 배포가 항상 성공하지 않습니다.
예:
새로운 Version 배포
↓
Application 오류 발생
↓
사용자 장애 발생
↓
빠른 복구 필요
만약 서버 운영자가 직접 이전 파일을 복사하고 설정을 변경한다면 복구 시간이 오래 걸립니다.
Kubernetes는 이전 배포 정보를 저장하여 명령어 하나로 Version 복구가 가능합니다.
Kubernetes Deployment Revision이란?
Rollback을 이해하려면 Revision 개념을 알아야 합니다.
Deployment가 업데이트될 때마다 Kubernetes는 새로운 Revision을 생성합니다.
예:
Revision 1
Application v1
↓
Revision 2
Application v2
↓
Revision 3
Application v3
각 배포 상태가 기록되어 필요할 때 이전 Version으로 돌아갈 수 있습니다.
Kubernetes Rollback 동작 구조
Rollback은 Deployment와 ReplicaSet을 이용합니다.
구조:
현재 상태:
Deployment v3
↓
문제 발생
↓
Rollback 실행
↓
ReplicaSet v2 활성화
↓
Pod v2 생성
↓
서비스 복구
Kubernetes는 이전 ReplicaSet 정보를 활용하여 복구합니다.
Kubernetes Rollback 실행 과정
일반적인 운영 흐름:
1단계: 새로운 Version 배포
Application v2 배포
↓
Rolling Update 진행
2단계: 장애 확인
- Error 증가
- Health Check 실패
- 사용자 오류 발생
3단계: Rollback 실행
이전 Revision 선택
↓
복구 진행
4단계: 서비스 정상화
기존 Version Pod 실행
↓
Traffic 정상 처리
배포 실패 시간을 최소화할 수 있습니다.
Kubernetes Rollback 명령어 구조
Deployment 상태 확인:
kubectl rollout history deployment app-name
배포 기록 확인:
kubectl rollout history deployment app-name --revision=2
Rollback 실행:
kubectl rollout undo deployment app-name
특정 Version으로 복구:
kubectl rollout undo deployment app-name --to-revision=2
운영 환경에서 자주 사용하는 명령어입니다.
Kubernetes Rollout Status 확인
배포 진행 상태는 확인이 필요합니다.
명령어:
kubectl rollout status deployment app-name
확인 내용:
- 새로운 Pod 생성 여부
- 업데이트 완료 여부
- 오류 발생 여부
배포 자동화 환경에서도 중요한 과정입니다.
Kubernetes Rollback과 ReplicaSet 관계
Deployment는 직접 Pod를 관리하지 않습니다.
구조:
Deployment
↓
ReplicaSet
↓
Pod
새로운 Version 배포:
ReplicaSet v1
↓
ReplicaSet v2 생성
Rollback:
ReplicaSet v1 다시 활성화
이 구조 때문에 빠른 Version 복구가 가능합니다.
Kubernetes Rollback과 Rolling Update 관계
Rolling Update와 Rollback은 함께 사용됩니다.
Rolling Update:
기존 Version
↓
새로운 Version 교체
Rollback:
새로운 Version
↓
기존 Version 복구
안정적인 배포 운영을 위한 양방향 구조입니다.
Kubernetes Rollback 설정 시 고려사항
Production 환경에서는 Rollback 전략이 필요합니다.
| 항목 | 설명 |
|---|---|
| Revision 관리 | 복구 가능한 기록 유지 |
| Image Version 관리 | 명확한 Tag 사용 |
| Database 변경 확인 | 호환성 검토 |
| Health Check | 장애 빠른 감지 |
특히 Database 변경은 Rollback 시 주의해야 합니다.
Kubernetes Rollback과 Database Migration 문제
Application Rollback은 쉽지만 Database Rollback은 복잡할 수 있습니다.
예:
Application v2
↓
Database Schema 변경
↓
Application 오류
↓
Application v1 Rollback
문제:
기존 Application이 변경된 Database 구조를 사용하지 못할 수 있음
따라서 Production 환경에서는 Database Migration 전략이 필요합니다.
Kubernetes Rollback 장애 사례
실제 운영에서 발생하는 문제:
| 문제 | 원인 |
|---|---|
| Rollback 실패 | Revision 없음 |
| Pod 실행 실패 | Image 문제 |
| 서비스 오류 지속 | Database 변경 |
| 복구 지연 | Monitoring 부족 |
배포 전 검증 과정이 중요합니다.
Kubernetes Rollback 운영 전략
안정적인 운영을 위해 다음 방식을 사용합니다.
개발 환경
↓
Test 배포
↓
Staging 확인
↓
Production 배포
↓
문제 발생 시 Rollback
단계적인 배포 전략이 서비스 안정성을 높입니다.
Kubernetes Rollback과 CI/CD 관계
자동 배포 환경에서는 Rollback도 자동화할 수 있습니다.
구조:
Code 변경
↓
CI/CD Pipeline 실행
↓
Kubernetes Deployment
↓
Health Check
↓
실패 감지
↓
자동 Rollback
DevOps 환경에서 중요한 기능입니다.
Kubernetes Rollback 장점
| 장점 | 설명 |
|---|---|
| 빠른 복구 | 서비스 장애 시간 감소 |
| Version 관리 | 배포 기록 유지 |
| 자동화 가능 | CI/CD 연결 |
| 운영 안정성 | 배포 위험 감소 |
Rollback은 Production Kubernetes 운영의 필수 기능입니다.
자주 묻는 질문
Kubernetes Rollback은 삭제된 Pod를 복구하나요?
기존 Pod를 그대로 복원하는 방식이 아니라 이전 ReplicaSet 기반으로 새로운 Pod를 생성합니다.
모든 Version으로 돌아갈 수 있나요?
Revision 기록이 유지되어 있다면 특정 Version으로 복구할 수 있습니다.
Rollback하면 Database도 자동 복구되나요?
아닙니다.
Application Version만 복구되며 Database 변경은 별도의 관리가 필요합니다.
마무리
Kubernetes Rollback은 Deployment Version 기록을 활용하여 장애 발생 시 이전 정상 상태로 빠르게 복구하는 운영 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Deployment | 배포 상태 관리 |
| ReplicaSet | Version 상태 유지 |
| Revision | 배포 기록 저장 |
| Rollback | 이전 상태 복구 |
Rollback 구조를 이해하면 Kubernetes 환경에서 배포 실패 상황에 대응하고 안정적인 Production 서비스를 운영할 수 있습니다.
다음 글에서는 Kubernetes 운영 중 자주 발생하는 문제를 해결하는 Kubernetes Troubleshooting 완벽 가이드! Pod 오류와 장애 분석 방법 이해하기를 알아보겠습니다.