Kubernetes 컨트롤러 설계에서 Reconciliation 루프 패턴 설명
Kubernetes 컨트롤러를 설계할 때 가장 먼저 적용한 건 Reconciliation Loop 패턴이다. 현재 상태(Current State)와 원하는 상태(Desired State)를 비교해 차이가 있을 때만 조정 동작을 수행하는 방식인데, 이벤트 기반이 아니라 상태 기반으로 동작하기 때문에 네트워크 파티션이나 이벤트 유실 상황에서도 안정적으로 작동한다. 컨트롤러-런타임 라이브러리를 사용해 CRD와 연결했고, 상태 업데이트는 Status Subresource를 분리해 스펙 변경과 상태 변경이 서로 영향을 주지 않도록 설계했다. 가장 주의한 것은 무한 루프 방지였는데, 상태 업데이트 후 다시 Reconcile이 트리거되는 순환을 막기 위해 변경이 실제로 있을 때만 Update를 호출하는 조건을 추가했다. 이 경험에서 컨트롤러는 기능보다 안정성과 멱등성을 먼저 설계해야 한다는 걸 배웠다.