infra-report/record.md

2.5 KiB

구현 기록 (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의 paramsPromise<{ 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에서 제외하기 위해 추가.