업그레이드와 롤백은 어떤 단위로 연습해야 하는가?
upgrade 전 공식 호환 경로, Kubernetes, kernel, CRD와 설정 변경을 확인하고 현재 state, manifest와 node image를 snapshot합니다. 별도 cluster에서 policy, Service, DNS, L7, encryption과 node reboot suite를 통과한 뒤 작은 node pool을 canary로 올립니다. data plane upgrade와 kernel, CNI, ingress 변경을 같은 창에 묶지 않습니다.
canary 동안 endpoint regeneration, program load, Map migration, connection reset, drop, error와 application p99를 이전 pool과 비교합니다. 버전이 섞인 기간의 지원 범위와 최대 시간을 정하고, 다음 batch는 on-call과 service owner가 승인합니다. 새 기능을 즉시 켜지 말고 version upgrade 안정화 뒤 별도 변경으로 배포하면 rollback을 단순화할 수 있습니다.
rollback은 Helm release만 되돌리는 명령이 아닐 수 있습니다. CRD, Map, proxy와 agent state의 하위 호환성, 이미 바뀐 node image와 장기 connection을 고려해야 합니다. 검증된 이전 image의 새 node pool로 workload를 drain해 옮기는 방식도 준비하고, 양쪽 datapath가 동시에 route를 소유하지 않게 전환 순서를 명시합니다.