피드로 돌아가기
Zero-Downtime Crossplane v1 v2 Migration: Adopt-in-Place at Production Scale
Dev.toDev.to
Infrastructure

인프라 재생성 없는 Zero-Downtime 기반 Crossplane v1 v2 마이그레이션 달성

Zero-Downtime Crossplane v1 v2 Migration: Adopt-in-Place at Production Scale

Pavan Madduri2026년 6월 26일10advanced

Context

Crossplane v2 도입에 따른 Namespaced Resource 모델 전환 과정에서 v1 워크로드의 마이그레이션 필요성 증대. 기존의 '삭제 후 재생성' 방식은 VPC나 EKS NodeGroup 같은 핵심 인프라의 파괴를 유발하여 서비스 중단 및 노드 로테이션이라는 치명적 리스크를 내포함.

Technical Solution

  • external-name을 기반으로 실제 Cloud Resource와 v2 Managed Resource(MR)를 매핑하는 Adopt-in-Place 전략 채택
  • crossplane.io/composition-resource-name(crn)과 external-name의 일치 여부를 통해 리소스 재생성 없이 소유권만 이전하는 로직 설계
  • crossplane beta render --observed-resources 명령어를 통한 사전 렌더링 및 Observed vs Desired 상태 비교로 Orphan 리소스 발생 가능성 사전 차단
  • Claim과 Composite 양측에 crossplane.io/paused 어노테이션을 설정하여 마이그레이션 중 상태 충돌 및 불필요한 Reconciliation 방지
  • v1 Composite의 label과 ownerReference를 v2 XR로 업데이트하여 인프라 실체는 유지한 채 제어 평면의 소유권만 변경하는 Reparenting 수행

- 마이그레이션 전 `render` 명령어로 Adopt-in-Place, Net-new, Orphan 리소스를 분류하고 Orphan 제로 상태를 확인하십시오. - Claim만 일시 중지하는 것이 아니라 Composite까지 함께 Pause 하여 제어 루프의 간섭을 완전히 제거하십시오. - 특히 NodeGroup 같은 민감한 리소스는 crn 일치 여부가 노드 로테이션 발생 여부를 결정하므로 정밀하게 검증하십시오. - Connection Secret의 일시적 공백으로 인한 다운스트림 서비스 장애 가능성을 고려하여 연결성 검증 단계를 추가하십시오.

원문 읽기