104 Commits

Author SHA1 Message Date
hiondal
c90253efd6 Jenkins 가이드 Docker Hub 자격증명 설정 보강
- Docker Hub Credentials 필수 설정 명확화
- Rate Limit 해결을 위한 자격증명 등록 방법 강조
- Jenkins 관리자 수행 작업 구체화

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 19:34:41 +09:00
hiondal
dfa0ab8c0c Docker 이미지 빌드 오류 해결
1. JDK 버전 일치성 문제 해결
   - Dockerfile OpenJDK 23 → Eclipse Temurin 21로 변경
   - 프로젝트 JDK 21과 일치시킴

2. Docker Hub Rate Limit 해결
   - Jenkinsfile에 Docker Hub 로그인 추가
   - dockerhub-credentials 자격증명 설정 필요
   - eclipse-temurin 이미지로 변경하여 안정성 향상

3. Jenkins 가이드 업데이트
   - Docker Hub Credentials 설정 방법 추가
   - Rate Limit 문제 해결 방안 제시

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 19:25:20 +09:00
hiondal
291306f5c7 Jenkins CI/CD 파이프라인 구축 완료
- Kustomize 기반 환경별 매니페스트 구성 (dev/staging/prod)
- Base 및 Overlay 구조로 환경별 설정 분리
- 각 환경별 Deployment, Service, ConfigMap, Secret 패치 적용
- Jenkinsfile 작성 (Gradle JDK21, SonarQube, Quality Gate 포함)
- 환경별 설정 파일 및 수동 배포 스크립트 생성
- Jenkins CI/CD 가이드 문서 및 검증 스크립트 작성
- DEV 환경 Ingress Host를 base와 동일하게 수정 (체크리스트 준수)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 19:09:05 +09:00
hiondal
c9d99b34d6 Jenkins post 블록 DSL 오류 해결 - Scripted Pipeline 방식에 맞게 일반 stage로 변경 2025-09-12 18:06:07 +09:00
hiondal
338ce1bd6b update jenkinsfile 2025-09-12 17:54:22 +09:00
hiondal
6e793a4155 Kustomize deployment patch 파일 구조 개선 - 서비스별 개별 파일로 분리 및 deployment-{service}-patch.yaml 명명 규칙 적용 2025-09-12 17:43:56 +09:00
hiondal
1f06b0a307 Kustomize deployment-patch 오류 해결 - 각 Deployment별 target 명시로 패치 매칭 수정 2025-09-12 17:27:05 +09:00
hiondal
6a00c5ece7 Jenkins 파이프라인 파드 자동 정리 설정 추가 - podRetention: never()로 즉시 삭제 2025-09-12 17:16:33 +09:00
hiondal
7fb0f0fc2c Jenkins 파이프라인 가이드 업데이트 - podTemplate 최적화, Kustomize 설치 개선, patch 방법 변경 반영 2025-09-12 17:12:08 +09:00
hiondal
8c8f40a00e Jenkins 파이프라인 sudo 권한 문제 해결 - kustomize를 사용자 디렉토리에 설치하도록 수정 2025-09-12 16:50:25 +09:00
hiondal
cbdf0faa14 Jenkins 에이전트 Pod에 CICD 전용 노드 tolerations 추가
- tolerations: dedicated=cicd:NoSchedule 설정 추가
- CICD 전용 노드에서만 파이프라인 실행되도록 제한
- Kubernetes 네이티브 YAML 설정으로 노드 격리 구현
- CI/CD 워크로드 전용 리소스 보장
2025-09-12 16:39:38 +09:00
hiondal
6540dc4d07 Jenkins 파이프라인 리소스 최적화: podman 컨테이너 CPU 요청량 조정 (500m) 2025-09-12 16:30:25 +09:00
hiondal
64903b1b51 Jenkins 에이전트 연결 안정성 대폭 개선
- slaveConnectTimeout: 300초로 연결 타임아웃 설정
- activeDeadlineSeconds: 3600초로 Pod 최대 실행 시간 제한
- idleMinutes: 30분으로 에이전트 재사용 설정
- 컨테이너별 리소스 제한 추가 (podman: 1-2 cores, gradle: 0.5-1 core)
- hudson.remoting.RequestAbortedException 연결 에러 해결
- Context7 기반 Jenkins Kubernetes 플러그인 모범사례 적용
2025-09-12 16:23:26 +09:00
hiondal
fd4dc944f7 Jenkins CI/CD 가이드 업데이트: services.each 루프 최적화 및 timeout 설정 반영 2025-09-12 16:09:42 +09:00
hiondal
0e9c206ae1 Jenkins 파이프라인 최적화: SonarQube 분석을 services.each 루프로 리팩토링 및 Docker 빌드 timeout 설정 추가 2025-09-12 16:05:57 +09:00
hiondal
e945db9dfe 파이프라인 빌드 오류 수정: redis.embedded 의존성을 it.ozimov로 변경 2025-09-12 15:17:43 +09:00
hiondal
2f88059309 update jenkinsfile 2025-09-12 14:58:36 +09:00
hiondal
672d82d425 Jenkins 파이프라인 변수 참조 문법 오류 수정
- Groovy 변수를 bash shell에서 사용 시 올바른 문법으로 변경
  - 잘못된 형태: \${variable} → 올바른 형태: ${variable}

- 수정된 Stage별 변수 참조:
  - Setup AKS: props.resource_group, props.cluster_name, environment
  - SonarQube Analysis: 모든 서비스별 projectKey의 environment 변수
  - Container Build: service, environment, imageTag 변수
  - Kustomize Deploy: environment, imageTag 변수 및 kubectl 명령어

- bash shell에서 "syntax error: bad substitution" 오류 해결
- Jenkins 파이프라인 정상 실행 가능하도록 문법 표준화

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 14:54:59 +09:00
hiondal
c7e5a86de8 Jenkins CI/CD 파이프라인 완전 구축 및 가이드 개선
- Kustomize 기반 환경별 매니페스트 구조 생성
  - Base: 공통 리소스 및 네임스페이스 설정
  - Overlays: dev/staging/prod 환경별 설정
  - Patch: 환경별 replicas, resources, 도메인 설정

- Jenkins 파이프라인 구축
  - 완전한 Jenkinsfile 작성 (빌드, 테스트, 배포)
  - SonarQube 품질 분석 및 Quality Gate 적용
  - ACR 이미지 빌드 및 푸시 자동화
  - AKS 배포 자동화

- 환경별 설정 관리
  - dev: 1 replica, 기본 리소스, HTTP
  - staging: 2 replicas, 중간 리소스, HTTPS
  - prod: 3 replicas, 고사양 리소스, HTTPS, 보안 강화

- 배포 자동화 도구
  - 수동 배포 스크립트 작성 및 실행 권한 설정
  - 롤백 방법 및 트러블슈팅 가이드 포함

- 완전한 구축 가이드 문서 작성
  - Jenkins 환경 설정 방법
  - Credentials 등록 방법
  - Pipeline Job 생성 방법
  - 배포 실행 및 모니터링 방법
  - 체크리스트 및 트러블슈팅 가이드

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 13:23:13 +09:00
hiondal
042198deb0 Jenkins CI/CD 파이프라인 완전 구축 및 가이드 개선
주요 작업:
- Kustomize 기반 환경별 배포 구조 완성 (dev/staging/prod)
- deployment-patch.yaml 개선: replicas + resources 통합 관리
- Strategic Merge Patch 형식으로 변경하여 가독성 및 유지보수성 향상
- 환경별 차등 리소스 할당 정책 적용
- Jenkins 파이프라인 스크립트 및 수동 배포 스크립트 완성
- 상세한 체크리스트 및 실수 방지 가이드 추가

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 12:09:54 +09:00
hiondal
892f30ba44 Jenkins CI/CD 파이프라인 구축 완료
- Kustomize 기반 환경별 배포 구조 구축
  • Base 매니페스트: deployment/cicd/kustomize/base/
  • 환경별 오버레이: overlays/{dev,staging,prod}
  • 기존 k8s 매니페스트를 Kustomize 구조로 마이그레이션

- Jenkins 파이프라인 설정
  • Jenkinsfile: Pod Template, SonarQube, 배포 자동화
  • 환경별 설정 파일: config/deploy_env_vars_{env}
  • 수동 배포 스크립트: scripts/deploy.sh

- Azure 연동 설정
  • ACR (acrdigitalgarage01) 및 AKS (aks-digitalgarage-01)
  • 환경별 리소스 분리 및 보안 설정

- 완전한 구축 가이드 문서
  • deployment/cicd/jenkins-pipeline-guide.md
  • Jenkins 플러그인, RBAC, 트러블슈팅 가이드 포함

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 10:46:05 +09:00
hiondal
0f1e22c5dc 전체 서비스 빌드 설정 업데이트 및 kos-mock 데이터 동기화 2025-09-11 18:37:56 +09:00
hiondal
fb0c5da973 .gitignore에 H2 데이터베이스 파일 제외 추가: 자동 생성되는 *.db 파일들 Git 추적 제외
🔧 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 13:18:57 +09:00
hiondal
3e96b33001 KOS Mock 서비스에 CORS 설정 추가하여 브라우저 CORS 에러 해결
- SecurityConfig.java에 CORS 설정 추가
- 모든 Origin 패턴 허용 및 OPTIONS 요청 처리
- application.yml에 허용 도메인 설정 추가
- 브라우저에서 Mock 데이터 생성 API 호출 시 CORS 에러 해결
2025-09-11 13:16:51 +09:00
hiondal
1bcf004e51 kos-mock SecurityConfig 포맷 수정: 파일 끝 줄바꿈 추가
🔧 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 13:10:37 +09:00
hiondal
04b3eba6c6 kos-mock CORS 설정 추가: Spring Boot 모범사례 적용으로 크로스 오리진 요청 지원
- SecurityConfig에 CorsConfigurationSource 빈 추가
- 모든 HTTP 메소드 지원 (GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD)
- 환경변수 기반 Origin 패턴 설정 (개발환경: *, 프로덕션: 구체적 도메인)
- Preflight 요청 캐시 및 노출 헤더 설정
- application.yml에 CORS 설정 블록 추가

🔧 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 13:07:13 +09:00
hiondal
e4f3c32c8a kos-mock Redis 설정 재추가: 캐시 설정 복원 및 로컬 환경 대응
🔧 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 11:41:02 +09:00
hiondal
8e9e0780ae kos-mock application.yml에서 Redis 설정 완전 제거: 불필요한 Redis 설정 블록 제거로 설정 정리 완료 2025-09-11 11:39:50 +09:00
hiondal
bf353ad4a5 kos-mock Redis 및 Cache 의존성 제거: @EnableCaching 제거, spring-boot-starter-data-redis 및 spring-boot-starter-cache 의존성 제거로 불필요한 Redis 연결 문제 해결 2025-09-11 11:31:23 +09:00
hiondal
0ec0d562a8 SecurityConfig 최종 수정: 중복된 actuator 설정 제거 및 ADMIN 권한 요구 완전 제거 2025-09-11 11:16:49 +09:00
hiondal
744f33875c user-service SecurityConfig 수정: Actuator endpoints ADMIN 권한 요구 설정 제거하여 Kubernetes probe 체크 정상화 2025-09-11 11:15:41 +09:00
hiondal
3e51992bc4 백엔드 컨테이너 실행 가이드 작성 완료
- VM 접속 방법 및 환경설정 안내
- ACR 로그인 및 이미지 푸시 방법
- 각 서비스별 컨테이너 실행 명령어 (환경변수 포함)
- 서비스 URL을 VM IP로 수정하여 서비스 간 통신 설정
- 재배포 및 모니터링 방법 포함
2025-09-11 10:35:21 +09:00
hiondal
a81e166dd5 백엔드 컨테이너 실행 가이드 작성 완료
- 모든 서비스(api-gateway, user-service, bill-service, product-service, kos-mock)의 환경변수 매핑
- VM 접속 및 ACR 로그인 방법 포함
- 컨테이너 실행, 상태 확인, 재배포 프로세스 완비
- CORS 설정에 프론트엔드 주소 자동 추가
- 실제 인프라 정보(ACR, VM, DB) 반영
2025-09-11 09:57:12 +09:00
hiondal
ba300f59a4 백엔드 배포 가이드 작업 중간 저장 2025-09-11 08:37:43 +09:00
hiondal
c8be06c98b 백엔드 서비스 Kubernetes 배포 매니페스트 작성 완료
- 공통 매니페스트: Image Pull Secret, Ingress, ConfigMap, Secret
- 서비스별 매니페스트: user-service, bill-service, product-service, api-gateway, kos-mock
- 환경변수 매핑 테이블 작성 및 검증 완료
- 배포 가이드 및 트러블슈팅 문서 포함

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-11 00:51:23 +09:00
hiondal
7b6f81c071 .gitignore 업데이트 및 kos-mock 데이터 디렉토리 추가 2025-09-11 00:28:25 +09:00
hiondal
88765ef6e6 Redis timeout 설정 타입 미스매치 오류 수정
- Redis timeout 값을 문자열('2000ms')에서 숫자(2000)로 변경
- lettuce pool max-wait 값도 동일하게 수정
- 영향 서비스: bill-service, product-service, user-service
- TypeMismatchException 해결로 런타임 오류 수정
2025-09-11 00:10:09 +09:00
hiondal
11dd091671 kos-mock JAR 생성 활성화로 모듈 간 의존성 문제 해결
- kos-mock/build.gradle: jar { enabled = false } → jar { enabled = true }
- bill-service에서 kos-mock DTO 클래스 참조 가능하도록 수정
- 전체 서비스 빌드 성공 확인
2025-09-11 00:00:16 +09:00
ondal
72aa1faa76 Redis 연결 문제 수정: Spring Boot 자동 설정 사용하도록 변경
- product-service: RedisConnectionFactory 빈 제거
- bill-service: spring.data.redis 프로퍼티 경로 수정
- 환경변수 REDIS_HOST를 올바르게 읽도록 개선
2025-09-10 14:56:16 +00:00
hiondal
f18d821d7d API Gateway 중복 CORS 헤더 제거 설정 추가 2025-09-10 23:33:40 +09:00
hiondal
99bef2c853 백엔드 컨테이너 실행 가이드 서비스 간 통신 설정 수정
- API Gateway의 마이크로서비스 URL을 VM IP로 변경
  - BILL_SERVICE_URL: localhost → 4.230.5.6:8082
  - KOS_MOCK_URL: localhost → 4.230.5.6:8084
  - PRODUCT_SERVICE_URL: localhost → 4.230.5.6:8083
  - USER_SERVICE_URL: localhost → 4.230.5.6:8081

- Bill Service의 KOS_BASE_URL을 VM IP로 변경
  - KOS_BASE_URL: localhost:8084 → 4.230.5.6:8084

- Product Service의 KOS_BASE_URL을 VM IP로 변경
  - KOS_BASE_URL: localhost:8084 → 4.230.5.6:8084

이 변경으로 VM 환경에서 마이크로서비스 간 통신이 정상적으로 작동합니다.
2025-09-10 23:01:28 +09:00
hiondal
91f4d4841c 백엔드 컨테이너 실행 가이드 작성 완료
- 5개 백엔드 서비스의 컨테이너 실행 가이드 작성
- 각 서비스의 환경변수를 .run.xml에서 추출하여 적용
- ACR(acrdigitalgarage01) 연동 및 이미지 푸시 가이드
- VM(4.230.5.6) 접속 및 컨테이너 실행 방법
- CORS 설정에 VM IP 주소 추가로 프론트엔드 호환성 확보
- 재배포, 헬스체크, 트러블슈팅 가이드 포함

대상 서비스:
- api-gateway:8080 (API Gateway)
- user-service:8081 (사용자 관리)
- bill-service:8082 (요금 조회)
- product-service:8083 (상품 변경)
- kos-mock:8084 (KOS 목업)
2025-09-10 22:51:16 +09:00
hiondal
377fea4de3 백엔드 컨테이너 이미지 작성 완료
- 5개 백엔드 서비스의 bootJar 설정 추가/수정
- 공통 Dockerfile-backend 생성 (멀티 스테이지 빌드)
- 각 서비스별 컨테이너 이미지 빌드 완료
- 보안 강화된 컨테이너 구성 (비루트 사용자)
- 상세한 빌드 결과 문서 작성

서비스 목록:
- api-gateway:latest (329MB)
- user-service:latest (376MB)
- bill-service:latest (385MB)
- product-service:latest (392MB)
- kos-mock:latest (372MB)
2025-09-10 22:40:03 +09:00
hiondal
2599d57a37 회선번호 처리 개선 및 다양한 API 기능 강화
- user-service: 회원등록 API를 upsert 방식으로 변경 (기존 사용자 업데이트 지원)
- user-service: userName 필드 응답 누락 문제 해결 (DB 데이터 업데이트)
- kos-mock: Mock 데이터 생성 기간을 3개월에서 6개월로 확장
- product-service: 회선번호 대시 처리 지원 (010-1234-5678, 01012345678 모두 허용)
- bill-service: 회선번호 대시 선택적 처리 지원 (유연한 입력 형식)
- api-gateway: CORS 중복 헤더 제거 필터 추가

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 19:25:13 +09:00
hiondal
9bfdeda316 API Gateway 라우팅 설정 개선
- 서비스 디스커버리 제거하고 직접 URL 라우팅으로 변경
- application.yml 환경변수 기반 동적 라우팅 적용
- 로그인/리프레시 API 경로 수정 (/api/v1/auth/login, /api/v1/auth/refresh)
- 사용자 관련 API 경로 추가 (/api/v1/users/**)
- JWT 인증 필터 적용 및 Circuit Breaker 설정 유지

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 12:27:34 +09:00
hiondal
08aec4251c API Gateway 라우팅 경로 수정
User Service AuthController의 실제 경로에 맞게 라우팅 수정:
- 기존: /api/auth/** -> /auth/** (잘못된 경로)
- 수정: /api/auth/** -> /api/v1/auth/** (올바른 경로)

AuthController는 @RequestMapping("/api/v1/auth")로 설정되어 있음
이제 Gateway를 통한 인증 API 호출이 정상 동작함

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 11:07:44 +09:00
hiondal
d5791aa159 API Gateway Swagger 관련 코드 완전 제거
변경사항:
- SwaggerConfig.java 클래스 완전 삭제
- application.yml에서 springdoc 설정 모두 제거
- build.gradle에서 springdoc-openapi-starter-webflux-ui 의존성 제거

API Gateway는 단순 라우팅 역할만 담당하므로 Swagger 불필요
각 마이크로서비스별로 개별 Swagger UI 사용하는 구조로 변경:
- User Service: http://localhost:8081/swagger-ui.html
- Bill Service: http://localhost:8082/swagger-ui.html
- Product Service: http://localhost:8083/swagger-ui.html
- KOS Mock: http://localhost:8084/swagger-ui.html

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 11:00:56 +09:00
hiondal
2df9b7d14f API Gateway Swagger 통합 기능 구현 완료
주요 변경사항:
- Gateway 라우팅 경로 통일화 (/api/{service}/**)
  * user-service: /api/auth/**
  * bill-service: /api/bills/** (내부적으로 /api/v1/bills/**로 변환)
  * product-service: /api/products/** (내부적으로 /products/**로 변환)
  * kos-mock: /api/kos/** 추가

- OpenAPI 서버 정보 동적 수정
  * 각 서비스의 OpenAPI JSON에 Gateway 경로 정보 주입
  * "Try it out" 기능이 Gateway를 통해 정상 동작하도록 개선

- Swagger UI 설정 개선
  * 서비스별 이모지와 한글 설명 추가
  * 표시 순서 최적화 (User → Bill → Product → KOS → Gateway)

- 서비스별 GroupedOpenApi 빈 추가
  * 각 서비스별 상세 정보와 기능 설명 포함
  * 일관된 API 문서 구조 제공

이제 API Gateway의 Swagger UI에서 모든 마이크로서비스 API가 통합되어 표시되며,
실제 테스트도 가능합니다.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 10:48:59 +09:00
hiondal
2a719048f8 API Gateway Swagger 통합 문제 분석 완료
주요 문제점 식별:
- Gateway 라우팅 경로 불일치 (product-service: /products/**, bill-service: /api/v1/bills/**)
- OpenAPI 서버 정보와 실제 Gateway 경로 매핑 누락
- Swagger UI에서 "Try it out" 기능 미작동

다음 단계: 라우팅 경로 통일화 및 OpenAPI 서버 정보 수정 예정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 10:45:59 +09:00
hiondal
02bcfa5434 kos-mock 상품변경 실제 DB 업데이트 기능 추가
- MockDataService에 updateCustomerProduct 메서드 추가
- KosMockService에 실제 고객 데이터 업데이트 로직 추가
- 상품변경 시 고객의 current_product_code를 실제로 업데이트하도록 수정
- 트랜잭션 처리로 데이터 일관성 보장
- product-service Hibernate dialect 설정 추가

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-10 02:06:24 +09:00