26M24d

Young-Kyoo Kim·2026년 3월 24일

이번에 새로 추가된 파일 4개입니다. 각 파일의 핵심 내용을 정리하면:


infra_precheck.yml — 인프라 건전성 자동화 (Play 2개)

Play 1은 K8s Worker 노드에 직접 SSH해서 실행합니다:

  • NTP: chronyc tracking으로 오프셋을 ms 단위로 추출 → 500ms 초과 시 assert fail (업그레이드 블로킹)
  • Disk SMART: smartctl -A로 Reallocated Sector, Pending Sector, Uncorrectable 카운트 → 임계치 초과 드라이브 식별
  • Image Pre-pull: Nexus 레지스트리 로그인 후 업그레이드 대상 이미지를 노드 전체에 사전 배포

Play 2는 jump_host(AWX runner)에서 실행합니다:

  • Disk Ghosting: kubectl get pvdirectpvdrives CR을 대조해서 Ghost PV / Orphan PV / 비정상 Drive 상태 탐지
  • Healing: mc admin info --json에서 itemsHealing > 0이면 assert fail로 업그레이드를 강제 차단
  • Resource Margin: Allocatable - MinIO Requested = 여유 자원이 설정 임계치 이상인지 계산
  • IAM 백업: User + Group + Policy 목록 + iam export zip
  • Bucket Metadata 스냅샷: 버킷별 Versioning / Quota / Lifecycle / Replication / Object Lock / Encryption 전부 파일로 저장

functional_verify.yml — 사후 기능 검증 + Rollback Trigger

  • Multipart Upload: dd로 테스트 파일 생성 → mc cp --part-size로 업로드 → MD5 다운로드 검증 (데이터 무결성 확인)
  • Presigned URL: Download/Upload URL 생성 → curl로 실제 HTTP 200 응답 검증
  • OIDC Auth: Keycloak에 패스워드 그랜트로 토큰 발급 → AssumeRoleWithWebIdentity STS 호출까지 연계 검증
  • LDAP Auth: ldapsearch로 바인드 테스트 + mc idp ldap info로 MinIO 설정 확인
  • Rollback Trigger: S3 에러율 / TCP 재전송률(/proc/net/snmp) / Spill-to-disk 로그 카운트를 임계치와 비교 → 초과 시 AWX Job을 fail로 종료해서 알람 트리거

UI_CHECK_GUIDE.md — 스크립트로 대체 불가한 시각 확인 항목

MinIO Console, AWX Job Visualizer, Grafana 3개 UI에서 각각 무엇을 어디서 보는지, 정상/이상 판단 기준, Before 스냅샷 캡처 시점을 가이드합니다. Grafana Annotation API로 업그레이드 시작/완료 시각을 그래프에 자동 마킹하는 curl 명령어도 포함되어 있습니다.

===

총 7개 파일로 구성된 AWX Playbook 세트입니다. 구조와 사용법을 간단히 정리하면:


파일 구성

파일역할
pre_upgrade_checklist.yml사전 점검 — MinIO/K8s/Cilium 상태 확인 + 백업
post_upgrade_checklist.yml사후 점검 — 버전/헬스/S3테스트/Replication/Perf 비교
awx_job_templates.ymlAWX Job Template 6개 + Workflow 정의
vars/main.yml엔드포인트, 네임스페이스, 임계치 등 공통 변수
inventory.ymlK8s 노드 + jump_host(AWX runner) 인벤토리
Dockerfile.eemc + kubectl + cilium + helm 포함 EE 이미지

AWX 등록 순서

  1. Dockerfile.ee로 Execution Environment 빌드 후 레지스트리에 push
  2. vars/main.yml에서 실제 endpoint/namespace 수정
  3. AWX에서 MinIO Credential (access/secret key) 생성
  4. awx_job_templates.ymlawx import로 등록

태그로 부분 실행 가능 — 예를 들어 K8s/Cilium만 점검하고 싶으면 --tags "k8s,cilium", S3 테스트만 하고 싶으면 --tags "s3test"로 해당 Task만 실행됩니다.

Workflow는 사전 점검 → Slack 알림 → Approval(수동 업그레이드 후 승인) → 사후 점검 순서로 흘러가도록 구성되어 있습니다.

===

MinIO AIStor 공식 문서를 기반으로 업그레이드 시 사전/사후 checklist를 정리해드릴게요.


✅ 사전 (Pre-Upgrade) Checklist

1. 백업

업그레이드 시작 전 아래 명령어로 클러스터 설정을 반드시 백업해야 합니다.

mc admin config export ALIAS > minio-config.txt
mc admin cluster bucket export ALIAS
mc admin cluster iam export ALIAS

Kubernetes 환경이라면 추가로:

kubectl get tenant
kubectl get secrets

2. Release Notes 검토

현재 버전과 신규 버전 사이의 모든 릴리스 노트를 검토하여 변경 사항을 전체적으로 파악해야 합니다. 특히 하위 호환이 되지 않는(non-backwards compatible) 릴리스에 주의해야 하며, 해당 버전에서는 다운그레이드가 불가능합니다.

3. 하위 환경(Dev/QA/Staging)에서 사전 검증

Production 클러스터나 중요 데이터가 있는 환경에 적용하기 전에, 반드시 하위 환경(Dev/QA/Staging)에서 먼저 업그레이드를 검증해야 합니다. 검증 없이 Production에 적용하는 것은 전적으로 사용자의 책임입니다.

4. 오래된 버전 여부 확인 및 SUBNET 지원 요청

최신 안정 버전(stable)보다 6개월 이상 뒤처진 AIStor 클러스터의 경우, 업그레이드 절차 중 추가 지원과 가이드를 위해 MinIO SUBNET 활용을 고려하세요.

5. KMS 암호화 키 데이터베이스 백업 (KMS 사용 시)

업그레이드 전에 반드시 암호화 키 데이터베이스를 백업해야 합니다. 이는 예기치 않거나 원하지 않는 업그레이드 결과에 대비한 보호 조치입니다.

6. Erasure Code 기반 노드 다운 가능 수 계산 (OS/하드웨어 업그레이드 병행 시)

노드를 안전하게 몇 대까지 내릴 수 있는지는 Erasure Code의 stripe 크기와 parity 설정에 따라 다릅니다. 예를 들어, 서버 8대·드라이브 8개·stripe 8·parity 3인 클러스터는 최대 3대까지 서버 장애를 허용합니다. 한 번에 2대씩 내리면 1대의 여유가 생겨 안전하게 유지됩니다.

7. Kubernetes 환경 추가 사전 확인 사항

Kubernetes 환경에서는 Operator 버전이 6.x.x 또는 7.x.x인지 확인해야 하며, 5.x.x 이하인 경우 SUBNET에 문의하거나 먼저 지원되는 차트 버전으로 업그레이드해야 합니다. 또한, 업그레이드 수행 시 Kubernetes 사용자에게 최소 cluster-admin 권한이 있어야 합니다.

그 밖에 확인할 사항:

  • helm version 확인 (v3.17 이상 필요)
  • Community Edition → AIStor 전환 시: 영구적이며 롤백 불가 임을 인지

✅ 사후 (Post-Upgrade) Checklist

1. 바이너리 버전 일치 확인

모든 노드에서 minio --version을 실행하여 동일한 버전으로 업그레이드되었는지 확인해야 합니다. 모든 노드가 같은 AIStor 바이너리 버전을 사용하지 않으면 다음 단계로 진행하지 마십시오.

minio --version

2. 클러스터 전체 정상 동작 확인

업그레이드 완료 후 mc admin info 명령어를 사용하여 모든 AIStor 서버가 온라인 상태이고 정상 동작하며, 설치된 AIStor 버전이 올바르게 반영되어 있는지 확인합니다.

mc admin info ALIAS

3. 서비스 재시작 확인 (Linux)

업그레이드 후 mc admin service restart 명령어로 클러스터 내 모든 노드를 동시에 재시작합니다. S3 호환 SDK와 애플리케이션은 자동 재시도 기능을 포함하고 있어 재시작 과정에서 일반적으로 서비스 중단이 없습니다.

mc admin service restart ALIAS

4. 클라이언트 애플리케이션 정상 동작 확인

업그레이드 후 S3 SDK를 사용하는 클라이언트 애플리케이션들이 정상적으로 읽기/쓰기 작업을 수행하는지 검증합니다.

5. 다운그레이드 계획 사전 수립 (비상 대비)

AIStor는 명시적으로 불가하다고 기재된 경우를 제외하고 이전 버전으로 다운그레이드를 지원합니다. 단, 이전 버전에서 지원되지 않는 기능, 개선 사항, API는 다운그레이드 후 사용할 수 없게 됩니다. 다운그레이드를 결정하기 전에 클라이언트 애플리케이션과 사전에 조율하여 대비해야 합니다.


요약 정리:

구분주요 항목
사전설정 백업 (config/bucket/IAM), Release Notes 검토, 하위 환경 테스트, SUBNET 지원 확인, KMS 백업, Erasure Code 계산
사후버전 일치 확인, mc admin info로 클러스터 상태 점검, 서비스 재시작, 애플리케이션 정상 동작 확인, 롤백 플랜 수립

Community Edition → AIStor 전환은 되돌릴 수 없으므로 사전 검증이 특히 중요합니다.

===

좋습니다. 공식 문서 + MinIO/K8s/Cilium 운영 경험 기반으로 명령어 레벨 위주로 정리해드릴게요.좋습니다, 명령어 위주로 체계적으로 정리해드릴게요.탭별로 클릭해서 체크 가능한 체크리스트입니다. 몇 가지 포인트만 보충 설명드리면:

업그레이드 전 주의사항

  • mc admin heal 이나 mc admin decommission이 진행 중이면 완료 후 업그레이드하는 것이 안전합니다. 진행 중에 업그레이드하면 데이터 일관성 이슈가 생길 수 있습니다.
  • mc support perf로 업그레이드 전 기준값을 꼭 저장해두세요. 사후 비교 때 유용합니다.

Cilium 관련

  • MinIO Pod가 롤링 재시작되면서 IP가 변경되면 Cilium endpoint가 일시적으로 not-ready 상태가 됩니다. cilium endpoint list에서 모든 MinIO endpoint가 ready로 돌아올 때까지 확인하는 게 중요합니다.
  • cilium monitor --type drop으로 policy_denied 드롭이 잡히면 NetworkPolicy가 새 Pod IP를 아직 인식 못한 것이므로 잠시 기다리면 자동 해소되는 경우가 대부분입니다.

Grafana에서 업그레이드 직후 집중 모니터링

  • minio_inter_node_traffic_errors_totalcilium_drop_count_total 두 개가 가장 먼저 튀는 지표입니다. 업그레이드 직후 약 5~10분간 집중적으로 보시면 됩니다.

0개의 댓글