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