From bc57b27852eeb8a8e7f95bd416d6ced2ed922e0c Mon Sep 17 00:00:00 2001 From: cherry2250 Date: Tue, 28 Oct 2025 20:15:35 +0900 Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9A=B0=ED=8C=85=20=EC=B6=A9?= =?UTF-8?q?=EB=8F=8C=20=ED=95=B4=EA=B2=B0:=20imageId=20=EA=B2=BD=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=EC=88=98=EC=97=90=20=EC=88=AB=EC=9E=90=20=EC=A0=95?= =?UTF-8?q?=EA=B7=9C=EC=8B=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /images/{imageId}를 /images/{imageId:[0-9]+}로 변경 - /images/generate와의 라우팅 충돈 해결 - NumberFormatException 오류 수정 - content-service Kubernetes Deployment 파일 추가 --- content-service-deployment.yaml | 64 +++++++++++++++++++ .../web/controller/ContentController.java | 6 +- 2 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 content-service-deployment.yaml diff --git a/content-service-deployment.yaml b/content-service-deployment.yaml new file mode 100644 index 0000000..5223cbf --- /dev/null +++ b/content-service-deployment.yaml @@ -0,0 +1,64 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: content-service + namespace: kt-event-marketing + labels: + app: content-service +spec: + replicas: 1 + selector: + matchLabels: + app: content-service + template: + metadata: + labels: + app: content-service + spec: + containers: + - name: content-service + image: acrdigitalgarage01.azurecr.io/kt-event-marketing/content-service:latest + imagePullPolicy: Always + ports: + - containerPort: 8084 + name: http + protocol: TCP + envFrom: + - configMapRef: + name: cm-common + - configMapRef: + name: cm-content-service + - secretRef: + name: secret-common + - secretRef: + name: secret-content-service + resources: + requests: + cpu: 256m + memory: 512Mi + limits: + cpu: 1024m + memory: 1024Mi + startupProbe: + httpGet: + path: /actuator/health + port: 8084 + initialDelaySeconds: 30 + periodSeconds: 10 + failureThreshold: 30 + livenessProbe: + httpGet: + path: /actuator/health/liveness + port: 8084 + initialDelaySeconds: 30 + periodSeconds: 10 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health/readiness + port: 8084 + initialDelaySeconds: 10 + periodSeconds: 5 + failureThreshold: 3 + imagePullSecrets: + - name: kt-event-marketing diff --git a/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java b/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java index 7fd2997..cca9f30 100644 --- a/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java +++ b/content-service/src/main/java/com/kt/event/content/infra/web/controller/ContentController.java @@ -124,7 +124,7 @@ public class ContentController { * @param imageId 이미지 ID * @return 200 OK - 이미지 상세 정보 */ - @GetMapping("/images/{imageId}") + @GetMapping("/images/{imageId:[0-9]+}") public ResponseEntity getImageById(@PathVariable Long imageId) { log.info("이미지 상세 조회: imageId={}", imageId); @@ -140,7 +140,7 @@ public class ContentController { * @param imageId 이미지 ID * @return 204 NO CONTENT */ - @DeleteMapping("/images/{imageId}") + @DeleteMapping("/images/{imageId:[0-9]+}") public ResponseEntity deleteImage(@PathVariable Long imageId) { log.info("이미지 삭제 요청: imageId={}", imageId); @@ -157,7 +157,7 @@ public class ContentController { * @param requestBody 재생성 요청 정보 (선택) * @return 202 ACCEPTED - Job ID 반환 */ - @PostMapping("/images/{imageId}/regenerate") + @PostMapping("/images/{imageId:[0-9]+}/regenerate") public ResponseEntity regenerateImage( @PathVariable Long imageId, @RequestBody(required = false) ContentCommand.RegenerateImage requestBody) {