7.8 KiB
구현 기록 (plan.md 대비 변경사항)
변경 이력
2026-03-16
-
Dockerfile 수정:
COPY --from=builder /app/public ./public에서 public 디렉토리가 존재하지 않아 빌드 실패. builder 단계에RUN mkdir -p public추가로 해결. -
next.config.js 수정:
serverExternalPackages는 Next.js 15+ 옵션. Next.js 14에서는experimental.serverComponentsExternalPackages로 변경. -
ArgoCD 연동 방식 변경: argocd CLI가 bastion에 미설치되어 있어, kubectl로 직접 Secret(repo 인증) + Application 리소스를 생성하는 방식으로 대체.
-
API Route params 수정: Next.js 14 App Router에서 동적 route의
params를Promise<{ type: string }>으로 처리 (async params pattern). -
CI Harbor 로그인 실패 수정: 비밀번호
Ijinc123!@#$의 특수문자(!,$)가 큰따옴표 안에서 shell에 의해 해석되는 문제.echo "${{ env.REGISTRY_PASSWORD }}"→echo '${{ secrets.REGISTRY_PASSWORD }}'(작은따옴표 + secrets 직접 참조)로 변경. -
CI env 블록 구조 변경: workflow 레벨
env에서 secrets를 매핑하던 방식을 제거하고, 각 step에서secrets.XXX를 직접 참조하도록 변경. -
SSR 클라이언트 에러 수정:
echarts-for-react,html2canvas,jspdf가 SSR 비호환 라이브러리라 클라이언트 에러 발생.dynamic(() => import(...), { ssr: false })로 변경하고,html2canvas/jspdf는 함수 내부에서 동적 import하도록 수정. -
Helm chart 버전 전략 변경: plan.md에서는 고정 버전
0.1.0이었으나, ArgoCD가 동일 버전에서 변경을 감지하지 못하는 문제 발생. semver pre-release(0.1.0-sha)도 정식 버전보다 낮게 취급되어>0.0.0range에서 감지 안 됨. 최종적으로 타임스탬프 기반 patch 버전(0.1.YYYYMMDDHHMMSS)으로 변경하여 매 빌드마다 고유한 정식 semver 생성. -
ArgoCD targetRevision 변경:
0.1.0고정 →>0.0.0semver range로 변경하여 새 chart 버전 자동 감지. ArgoCD 기본 polling interval(~3분) 내에 자동 sync됨. -
Deployment 이미지 태그 변경:
image.tagvalues 고정 대신{{ .Values.image.tag | default .Chart.AppVersion }}으로 변경. ArgoCD helm values에서image.tagoverride 제거하여 chart의appVersion(CI에서sha-xxxx로 설정)을 자동 사용. -
.gitignore 추가: plan.md에 없었으나
.env,node_modules/,.next/등을 git에서 제외하기 위해 추가. -
NodeTable 크래시 수정:
i.instance가 undefined인 경우.includes()호출 시 에러 발생.i.instance && i.instance.includes(nodeName)으로 방어 코드 추가. -
기간 선택 UI 변경: 기존 일수(days) 선택에서 시작일/종료일 직접 설정 가능한 date range picker로 변경. 프리셋 버튼(1/3/7/14/30일)도 유지.
-
Network 차트 분리: 기존 단일 Network 차트를 Ingress/Istio로 분리.
metrics.ts타입도network: NetworkMetrics→ingress: NetworkMetrics; istio: NetworkMetrics로 변경. -
Istio Summary Card 추가: 상단 요약에 Istio 카드(보라색 테두리) 추가. grid-cols-4 → grid-cols-5로 변경.
-
Instance 라벨 변경: Prometheus 결과에서
instance(IP:9100) 대신node라벨을 우선 사용하도록 변경.r.metric.node || r.metric.instance || ''. -
NAS 라벨 변경: NAS 사용률 차트에서 node 대신 mountpoint 라벨로 표시.
processResults(nasData, 'mountpoint')파라미터 추가. -
차트 인터랙션 개선: hover 시 모든 데이터 tooltip 표시(emphasis focus: series), 클릭 시 해당 시리즈만 solo 표시/해제, 시간대 tooltip에 포함.
-
CI Harbor 로그인 재시도 추가: 간헐적 로그인 실패 대응으로 3회 retry 루프(5초 간격) 추가.
-
차트 컴포넌트 ref 오류 수정:
next/dynamic으로 감싼echarts-for-react에refprop이 TypeScript 오류 발생.ref={chartRef}→onChartReady콜백 패턴으로 변경하여 echarts 인스턴스 직접 캡처. TimeSeriesChart, NetworkChart 모두 적용. -
Prometheus 쿼리 변경: CPU(
avg by (node)), DISK(sum by 제거), ISTIO_RX/TX(container_network메트릭 사용)로 values.yaml 및 prometheus.ts 기본값 업데이트.
2026-03-17
-
Git remote URL 인증 설정:
git push origin main이 credential 없이 실패..env의 Gitea 접속 정보를 remote URL에 포함시켜 해결. -
날짜 적용 버튼 추가: 날짜 변경 시 즉시 데이터 로딩되던 것을 "적용" 버튼 클릭 시에만 로딩되도록 변경. 날짜 미변경 시 버튼 비활성화(회색), 변경 시 파란색 활성화.
-
NodeTable Disk 컬럼 확장: 기존 max만 표시하던 Disk 컬럼에 avg, min 추가.
-
NAS 사용률 상세 테이블 추가:
NasTable컴포넌트 신규 생성. mountpoint별 avg/max/min 표시. -
Ingress/Istio Network 상세 테이블 추가:
NetworkTable컴포넌트 신규 생성. RX(파란색 태그)/TX(초록색 태그)별 avg/max/min 표시. Ingress, Istio 각각 별도 테이블로 표시. -
주의 구간을 차트 옆으로 이동: 하단
AlertSection제거하고AlertPanel컴포넌트 신규 생성. CPU/Memory/Disk 각 차트 오른쪽(280px)에 해당 메트릭의 주의 구간 표시. 차트 높이(300px)에 맞추고 내용 초과 시 스크롤 가능. 주의사항 없으면 초록색 "특이사항 없음" 표시. -
NAS/Ingress/Istio 주의 구간 추가: NAS는 Disk과 동일 기준(80% warning, 90% critical). Ingress/Istio는
NetworkAlertPanel컴포넌트 신규 생성, Z-score peak 기반 트래픽 급증 감지. 모든 차트 오른쪽에 AlertPanel 배치. -
Z-score threshold 변경: peak 감지 기본 threshold 2 → 5로 상향. 평균에서 표준편차 5배 이상 벗어나야 peak 판정.
-
Memory 주의 기준 변경: warning 85%/critical 95% → warning 80%~90%/critical 90% 초과로 변경.
-
CI paths-ignore 추가:
*.md,docs/**파일만 변경된 push에서는 CI 스킵. 불필요한 Docker 빌드 및 파드 재배포 방지. -
NetworkChart markArea 추가: Ingress/Istio 차트에도 Z-score peak 구간을 빨간색 반투명 영역으로 표시. 기존에는 TimeSeriesChart만 markArea가 있었음.
-
Alert 유형 구분 태그 추가: AlertPanel에서 PEAK(보라색), WARNING(주황색), CRITICAL(빨간색) 태그로 Z-score peak과 임계값 경고를 시각적으로 구분.
-
Alert 클릭 → 차트 확대 기능: AlertPanel의 peak 항목 클릭 시 해당 시간대로 차트가 dataZoom.
forwardRef+useImperativeHandle로 차트 인스턴스의zoomToRange메서드 외부 노출. -
Z-score 상승 방향만 감지:
Math.abs(zScore) > threshold→zScore > threshold로 변경. 평균 이하 급감은 peak로 잡지 않음 (NAS에서 평균 아래 구간이 잘못 표시되던 문제 해결). -
Zoom 최소 padding 15분: peak 구간이 30분 미만이어도 앞뒤로 최소 15분씩 여유를 두고 확대되도록
MIN_PADDING = 15 * 60 * 1000추가. -
Z-score threshold 메트릭별 분리: 전체 threshold 5 → Disk/NAS는 2, CPU/Memory/Ingress/Istio는 5로 분리.
processResults에peakThreshold파라미터 추가. 개별 메트릭 API(/api/metrics/[type])에도PEAK_THRESHOLD맵으로 적용. -
최소 표준편차(MIN_STDDEV) 가드 추가:
stddev < 0.5이면 데이터 변동이 무의미하므로 peak 감지 스킵. Disk 데이터가 거의 일정할 때(50.00~50.05) stddev가 극소값이 되어 미세 변동이 peak로 잡히던 문제 해결. -
nodeSelector 추가: Deployment에
nodeSelector: nodegroup: nd추가. values.yaml에nodeSelector항목 추가, deployment.yaml 템플릿에 조건부 렌더링.