25장 direct deploy와 GitOps를 환경에 맞게 선택한다
이 책의 main path는 CI job이 kubectl set image를 실행하는 push-based deploy다. 흐름이 눈에 보여 처음 배우기 쉽다. 그러나 CI runner가 cluster network와 deploy credential을 가져야 하고, 실제 상태가 Git manifest와 달라질 수 있다.
GitOps에서는 Argo CD 같은 in-cluster reconciler가 Git의 desired state를 pull한다. CI는 image를 만들고 configuration repository에 새 digest PR을 만든다. review 후 merge되면 controller가 반영한다.
| 항목 | Direct CI deploy | GitOps pull |
|---|---|---|
| 시작 난이도 | 낮음 | controller·repository 추가 |
| cluster credential | CI에 필요 | controller 내부에 유지 |
| desired state 감사 | 별도 evidence 필요 | Git history가 중심 |
| 긴급 수동 변경 | drift 가능 | 자동 되돌림 가능 |
| 추천 | 작은 팀·학습·단순 환경 | 여러 cluster·엄격한 변경 통제 |
GitOps가 자동으로 안전을 보장하지 않는다. 잘못된 manifest가 merge되면 정확하게 잘못된 상태를 만든다. sync window, health check, rollback, secret strategy, controller upgrade와 repository 권한이 필요하다. 두 방식을 한 environment에서 무계획하게 섞어 서로 image를 덮어쓰게 하지 않는다.