프로젝트

일반

사용자 정보

실행

새 기능 #12943

기존에 운영중이던 LVM 논리 볼륨 PVC 로 마이그레이션

이 헌제님이 10일 전에 추가함. 하루 전에 수정됨.

상태:
진행
우선 순위:
높음
담당자:
목표 버전:
시작 시간:
2026/02/04
완료 기한:
2026/02/05 (9일 지연)
진척도:

0%

추정 시간:
10:00 시간
발견 버전:
반영 버전:
난이도:
쉬움
중요도:
조력자:
회사:
연락처:
점수:
1.75

설명

목표

  • csi-dirver 에 의해 PVC 생성 시 생성된 볼륨이 아닌, AnyStor-E 에 이미 운영중인 볼륨을 PVC 생성 시 해당 볼륨을 지정하여 PV 로 생성할 수 있어야 한다.

해결안

  • pvc 에 annotation 을 넣어서 지정되어 있으면 연결 하는 로직 추가
pvc, err := k8sClient.CoreV1().PersistentVolumeClaims(ns).Get(ctx, pvcName, metav1.GetOptions{})
lv := pvc.Annotations["gms.io/lv"]
  • Persistent Volume 제거 시에도 LV 가 지정되어 있는 경우라면 원래 볼륨을 제거하지는 않도록 한다.
  • 복구한 경우는 어떻게 할지 구상 필요

변경사항

  1. CRD Spec 에 IsPreserved 필드 추가
  2. PVC annotation 으로 기존 LV 지정
    • PVC annotation gms.io.lv 확인
    • AnyStor-E 에서 기존 LV 존재 확인
    • 기존 LV 가 없으면 codes.NotFound 에러 반환
    • newLv.Spec.IsPreserved = true 설정
  3. Reconciler 에서 IsPreserved 확인
    • 볼륨 생성 함수에서 IsPreserved == true 이면 AttachPersistemtVolume 호출
      • AttachPersistemtVolume 에서는 PV 와 LV 정보만 연결하고, Pool, PoolSize 등은 storageclass 내용을 적용
    • 볼륨 삭제 함수에서 IsPreserved 로 기존 LV 보존 여부 판별
  4. DeletePersistentVolume 에 preservedLV 파라미터 추가하고 preservedLV 이면 LV 삭제 스킵
  5. 예제 파일 추가
    • example/csi-pvc-thin.yaml 에서 annotation 을 적용하는 예제를 별도로 파일을 생성하여 추가
    • 별도로 생성한 파일을 사용하는 pod 생성 예제 추가
  6. 운용중인 볼륨이 있는 경우 처리사항에 대한 가이드 작성

난이도 및 추정시간

  • 해결안으로 끝나면 난이도는 쉬움, 테스트는 스냅샷까지 다양하게 테스트해봐야 할 것 같아서, 추정시간 6시간
실행

내보내기 Atom PDF

클립보드 이미지 추가 (최대 크기: 50 MB)