Repository: KEA-ChunSam/PlayUs-k8s
Pull request #7: CS-187 Chore/쿠버네티스 deployment 파일 작성
Author: login: Kim-Yukyung
Labels: name: ⚙️ chore
description: 모듈, 빌드, CI/CD  등
name: 유경
Created: 2025-04-29T13:47:36Z | Merged: 2025-04-30T01:48:00Z

## ✅ PR 유형
어떤 변경 사항이 있었나요?

- [x] 새로운 기능 추가
- [ ] 버그 수정
- [ ] 리팩토링
- [ ] 코드에 영향을 주지 않는 변경사항(주석, 개행 등등..)
- [ ] 문서 수정
- [ ] 빌드 부분 혹은 패키지 매니저 수정
- [ ] 테스트 코드 추가

---

## ✏️ 작업 내용
`community-service`의 Kubernetes 배포 리소스를 `prod`와 `develop` 환경으로 분리했습니다 :)

- 공통 설정은 `base/community-service/`에 정의
- dev 환경 전용 오버레이는 `overlays/develop/community-service/`에 정의
- 이미지 태그는 `:dev`로 별도 관리
- `namePrefix: dev-`로 리소스 이름을 구분하여 dev 환경과 prod 환경 충돌 방지

### 주요 변경 사항
- `base/community-service/deployment.yaml`: 공통 배포 설정
- `overlays/develop/community-service/kustomization.yaml`: dev 전용 kustomization 구성
- `patch-image.yaml`: 개발용 이미지(`:dev`)로 패치
- `namePrefix`를 통해 리소스 이름에 `dev-` prefix 자동 적용

아래는 dev 환경용 kustomize 오버레이를 적용한 결과입니다
```bash
kubectl apply -k ./overlays/develop/community-service/
```
![image](https://github.com/user-attachments/assets/86062886-864b-4a79-8f65-0da0965ee34d)

최종적인 쿠버네티스 리소스 YAML을 출력해주는 명령어는 다음과 같습니다 (kustomize 결과만 미리 출력)
```bash
kubectl kustomize ./overlays/develop/community-service/
```
![image](https://github.com/user-attachments/assets/feae9599-b53f-445d-9bc9-f09a21f81140)

### 참고
- 현재는 `community-service`만 작성되었으며, **구조가 확정되면 `user-service`, `match-service` 등 다른 서비스도 동일한 방식으로 작성할 예정입니다**
- 데이터베이스 연결 및 기타 환경 변수 설정은 추후에 추가할 예정입니다

---

## 🔗 관련 이슈
- closes #6 

---

## 💡 추가 사항


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **새로운 기능**
    - 커뮤니티, 매치, 검색, TWP, 사용자 서비스용 Kubernetes 배포 및 Kustomize 구성 파일이 추가되었습니다.
    - 개발 환경용 오버레이 및 이미지 패치가 각 서비스별로 도입되었습니다.
    - 여러 서비스 및 인프라용 네임스페이스가 새롭게 생성되었습니다.
- **기타**
    - 네트워크 정책과 리소스 쿼터를 위한 템플릿 파일이 추가되었습니다.
    - 기존 nginx 배포 리소스가 제거되었습니다.
    - IntelliJ 프로젝트 설정 및 Git 버전 관리 구성이 추가되었습니다.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Linked issue #6: CS-187 Chore/쿠버네티스 deployment 파일 작성
### 상위 작업 (Epic, 보라색 번개) Ticket Number

CS-22

### 이슈 내용 (Description)

쿠버네티스 deployment 파일 기본 설정입니다.

### 담당자 이름

김유경

### 상세 내용 (Details)

- About Details


### 체크리스트 (Tasks)

- [ ] MSA마다 deployment 파일 작성


### 참조 (References)

- Reference1


Diff:
diff --git a/.idea/PlayUs-k8s.iml b/.idea/PlayUs-k8s.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/PlayUs-k8s.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..de09f4d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/PlayUs-k8s.iml" filepath="$PROJECT_DIR$/.idea/PlayUs-k8s.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/base/community-service/configmap.yaml b/base/community-service/configmap.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/base/community-service/deployment.yaml b/base/community-service/deployment.yaml
new file mode 100644
index 0000000..7efc96f
--- /dev/null
+++ b/base/community-service/deployment.yaml
@@ -0,0 +1,20 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: community-service
+  namespace: community-service
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: community-service
+  template:
+    metadata:
+      labels:
+        app: community-service
+    spec:
+      containers:
+        - name: community-service
+          image: yukyung0/playus-community-service:latest
+          ports:
+            - containerPort: 8080
diff --git a/base/community-service/kustomization.yaml b/base/community-service/kustomization.yaml
new file mode 100644
index 0000000..88a04b5
--- /dev/null
+++ b/base/community-service/kustomization.yaml
@@ -0,0 +1,5 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - deployment.yaml
diff --git a/base/match-service/deployment.yaml b/base/match-service/deployment.yaml
new file mode 100644
index 0000000..8d06370
--- /dev/null
+++ b/base/match-service/deployment.yaml
@@ -0,0 +1,20 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: match-service
+  namespace: match-service
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: match-service
+  template:
+    metadata:
+      labels:
+        app: match-service
+    spec:
+      containers:
+        - name: match-service
+          image: yukyung0/playus-match-service:latest
+          ports:
+            - containerPort: 8080
diff --git a/base/match-service/kustomization.yaml b/base/match-service/kustomization.yaml
new file mode 100644
index 0000000..88a04b5
--- /dev/null
+++ b/base/match-service/kustomization.yaml
@@ -0,0 +1,5 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - deployment.yaml
diff --git a/base/namespaces.yaml b/base/namespaces.yaml
new file mode 100644
index 0000000..e1f8352
--- /dev/null
+++ b/base/namespaces.yaml
@@ -0,0 +1,41 @@
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: community-service
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: match-service
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: search-service
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: twp-service
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: user-service
+---
+
+# 인프라 시스템
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: monitoring
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: logging
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: infra
diff --git a/base/network-policies.yaml b/base/network-policies.yaml
new file mode 100644
index 0000000..e253fe4
--- /dev/null
+++ b/base/network-policies.yaml
@@ -0,0 +1,2 @@
+# 네트워크 정책
+# 추후 추가할 예정입니다
diff --git a/base/resource-quotas.yaml b/base/resource-quotas.yaml
new file mode 100644
index 0000000..0e4d493
--- /dev/null
+++ b/base/resource-quotas.yaml
@@ -0,0 +1,2 @@
+# 네임스페이스 리소스 제한
+# 추후 추가할 예정입니다
diff --git a/base/search-service/deployment.yaml b/base/search-service/deployment.yaml
new file mode 100644
index 0000000..bb54828
--- /dev/null
+++ b/base/search-service/deployment.yaml
@@ -0,0 +1,20 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: search-service
+  namespace: search-service
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: search-service
+  template:
+    metadata:
+      labels:
+        app: search-service
+    spec:
+      containers:
+        - name: search-service
+          image: yukyung0/playus-search-service:latest
+          ports:
+            - containerPort: 8080
diff --git a/base/search-service/kustomization.yaml b/base/search-service/kustomization.yaml
new file mode 100644
index 0000000..88a04b5
--- /dev/null
+++ b/base/search-service/kustomization.yaml
@@ -0,0 +1,5 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - deployment.yaml
diff --git a/base/twp-service/deployment.yaml b/base/twp-service/deployment.yaml
new file mode 100644
index 0000000..82efb3b
--- /dev/null
+++ b/base/twp-service/deployment.yaml
@@ -0,0 +1,20 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: twp-service
+  namespace: twp-service
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: twp-service
+  template:
+    metadata:
+      labels:
+        app: twp-service
+    spec:
+      containers:
+        - name: twp-service
+          image: yukyung0/playus-twp-service:latest
+          ports:
+            - containerPort: 8080
diff --git a/base/twp-service/kustomization.yaml b/base/twp-service/kustomization.yaml
new file mode 100644
index 0000000..88a04b5
--- /dev/null
+++ b/base/twp-service/kustomization.yaml
@@ -0,0 +1,5 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - deployment.yaml
diff --git a/base/user-service/deployment.yaml b/base/user-service/deployment.yaml
new file mode 100644
index 0000000..e3aa554
--- /dev/null
+++ b/base/user-service/deployment.yaml
@@ -0,0 +1,20 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: user-service
+  namespace: user-service
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: user-service
+  template:
+    metadata:
+      labels:
+        app: user-service
+    spec:
+      containers:
+        - name: user-service
+          image: yukyung0/playus-user-service:latest
+          ports:
+            - containerPort: 8080
diff --git a/base/user-service/kustomization.yaml b/base/user-service/kustomization.yaml
new file mode 100644
index 0000000..88a04b5
--- /dev/null
+++ b/base/user-service/kustomization.yaml
@@ -0,0 +1,5 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - deployment.yaml
diff --git a/deployment.yaml b/deployment.yaml
deleted file mode 100644
index df52135..0000000
--- a/deployment.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: title
-  labels:
-    app: title
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: title
-  template:
-    metadata:
-      name: title
-      labels:
-        app: title
-    spec:
-      containers:
-        - name: title
-          image: nginx
-          imagePullPolicy: IfNotPresent
-          ports:
-            - containerPort: 80
-              protocol: TCP
-      restartPolicy: Always
-      
diff --git a/gateway/api-gateway-config.yaml b/gateway/api-gateway-config.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/gateway/ingress.yaml b/gateway/ingress.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/overlays/develop/community-service/kustomization.yaml b/overlays/develop/community-service/kustomization.yaml
new file mode 100644
index 0000000..19d9f68
--- /dev/null
+++ b/overlays/develop/community-service/kustomization.yaml
@@ -0,0 +1,10 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - ../../../base/community-service
+
+patches:
+  - path: patch-image.yaml
+
+namePrefix: dev-
diff --git a/overlays/develop/community-service/patch-image.yaml b/overlays/develop/community-service/patch-image.yaml
new file mode 100644
index 0000000..9f78ab3
--- /dev/null
+++ b/overlays/develop/community-service/patch-image.yaml
@@ -0,0 +1,11 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: community-service
+  namespace: community-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: community-service
+          image: yukyung0/playus-community-service:dev
diff --git a/overlays/develop/match-service/kustomization.yaml b/overlays/develop/match-service/kustomization.yaml
new file mode 100644
index 0000000..c6c24a4
--- /dev/null
+++ b/overlays/develop/match-service/kustomization.yaml
@@ -0,0 +1,10 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - ../../../base/match-service
+
+patches:
+  - path: patch-image.yaml
+
+namePrefix: dev-
diff --git a/overlays/develop/match-service/patch-image.yaml b/overlays/develop/match-service/patch-image.yaml
new file mode 100644
index 0000000..342bb71
--- /dev/null
+++ b/overlays/develop/match-service/patch-image.yaml
@@ -0,0 +1,11 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: match-service
+  namespace: match-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: match-service
+          image: yukyung0/playus-match-service:dev
diff --git a/overlays/develop/search-service/kustomization.yaml b/overlays/develop/search-service/kustomization.yaml
new file mode 100644
index 0000000..18caaff
--- /dev/null
+++ b/overlays/develop/search-service/kustomization.yaml
@@ -0,0 +1,10 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - ../../../base/search-service
+
+patches:
+  - path: patch-image.yaml
+
+namePrefix: dev-
diff --git a/overlays/develop/search-service/patch-image.yaml b/overlays/develop/search-service/patch-image.yaml
new file mode 100644
index 0000000..bdf0189
--- /dev/null
+++ b/overlays/develop/search-service/patch-image.yaml
@@ -0,0 +1,11 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: search-service
+  namespace: search-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: search-service
+          image: yukyung0/playus-search-service:dev
diff --git a/overlays/develop/twp-service/kustomization.yaml b/overlays/develop/twp-service/kustomization.yaml
new file mode 100644
index 0000000..936a552
--- /dev/null
+++ b/overlays/develop/twp-service/kustomization.yaml
@@ -0,0 +1,10 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - ../../../base/twp-service
+
+patches:
+  - path: patch-image.yaml
+
+namePrefix: dev-
diff --git a/overlays/develop/twp-service/patch-image.yaml b/overlays/develop/twp-service/patch-image.yaml
new file mode 100644
index 0000000..22f9be7
--- /dev/null
+++ b/overlays/develop/twp-service/patch-image.yaml
@@ -0,0 +1,11 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: twp-service
+  namespace: twp-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: twp-service
+          image: yukyung0/playus-twp-service:dev
diff --git a/overlays/develop/user-service/kustomization.yaml b/overlays/develop/user-service/kustomization.yaml
new file mode 100644
index 0000000..ce56e02
--- /dev/null
+++ b/overlays/develop/user-service/kustomization.yaml
@@ -0,0 +1,10 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+
+resources:
+  - ../../../base/user-service
+
+patches:
+  - path: patch-image.yaml
+
+namePrefix: dev-
diff --git a/overlays/develop/user-service/patch-image.yaml b/overlays/develop/user-service/patch-image.yaml
new file mode 100644
index 0000000..a2935a4
--- /dev/null
+++ b/overlays/develop/user-service/patch-image.yaml
@@ -0,0 +1,11 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: user-service
+  namespace: user-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: user-service
+          image: yukyung0/playus-user-service:dev


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 0**

<details>
<summary>🔭 Outside diff range comments (2)</summary><blockquote>

<details>
<summary>base/community-service/kustomization.yaml (1)</summary><blockquote>

`1-6`: _🛠️ Refactor suggestion_

**`namespace` 설정 추가 권장**  
현재 이 `kustomization.yaml`에는 네임스페이스가 명시되어 있지 않아 기본 네임스페이스로 배포됩니다. 의도한 네임스페이스(`community-service`)를 지정하거나, 오버레이에서 namespace를 설정하도록 구성하세요. 예를 들어:

```diff
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
+namespace: community-service
 resources:
   - deployment.yaml
```

</blockquote></details>
<details>
<summary>base/namespaces.yaml (1)</summary><blockquote>

`1-42`: _💡 Verification agent_

<details>
<summary>❓ Verification inconclusive</summary>

**네임스페이스 매니페스트 참조 검증 필요**  
현재 `base/namespaces.yaml`이 어떤 `kustomization.yaml`에서도 참조되지 않아 실제 배포 시 생성되지 않을 수 있습니다. 루트 또는 각 오버레이의 `resources`에 해당 파일을 추가하거나, 네임스페이스 전용 `kustomization.yaml`를 만들어 포함하도록 구성하세요.

---

다음 스크립트를 실행해 `base/namespaces.yaml`가 어떤 `kustomization.yaml`에서 참조되고 있는지 확인해주세요:

---

🏁 Script executed:

```shell
#!/bin/bash
# base/namespaces.yaml 참조 여부 확인
rg -H "namespaces.yaml" -n -C3 --glob "**/kustomization.yaml"
```

Length of output: 61

---



</details>

**`base/namespaces.yaml`가 어떤 `kustomization.yaml`에도 포함되지 않음 확인**  
`rg -H namespaces.yaml --glob "**/kustomization.yaml"` 실행 결과 참조가 전혀 없으므로, 실제로 네임스페이스 리소스가 배포되지 않습니다.  

아래 중 하나를 적용해 수정하세요:  
- 루트 또는 각 오버레이(`overlays/**/kustomization.yaml`)의 `resources` 항목에 `base/namespaces.yaml` 추가  
- 네임스페이스 전용 디렉토리(e.g. `namespaces/`)를 만들고, 그 안에 `kustomization.yaml`을 생성한 후 상위 `resources`로 포함

</blockquote></details>

</blockquote></details>

<details>
<summary>♻️ Duplicate comments (2)</summary><blockquote>

<details>
<summary>.idea/PlayUs-k8s.iml (1)</summary><blockquote>

`1-9`: ** .idea 디렉토리 관리 검토**  
위 `vcs.xml`와 동일한 이유로, IDEA 모듈 설정 파일 역시 버전 관리 제외 여부를 검토해주시기 바랍니다.  
[ duplicate_comment ]

</blockquote></details>
<details>
<summary>.idea/modules.xml (1)</summary><blockquote>

`1-8`: ** .idea 디렉토리 관리 검토**  
`PlayUs-k8s.iml` 모듈 등록 정보도 개인 환경 의존성이 높으므로, 버전 관리 제외를 고려해주세요.  
[ duplicate_comment ]

</blockquote></details>

</blockquote></details>

<details>
<summary>🧹 Nitpick comments (3)</summary><blockquote>

<details>
<summary>overlays/develop/community-service/kustomization.yaml (2)</summary><blockquote>

`7-9`: **전략적 병합 패치 형식 명시 권장**  
`patches` 대신 `patchesStrategicMerge`를 사용하여 명시적으로 전략적 병합 패치를 적용하는 것이 가독성과 호환성 측면에서 좋습니다. 예:

```diff
-patches:
-  - path: patch-image.yaml
+patchesStrategicMerge:
+  - patch-image.yaml
```

---

`4-6`: **오버레이에 `namespace` 및 공통 라벨(`commonLabels`) 추가 제안**  
개발 환경을 구분하기 위해 `namespace`와 `commonLabels`를 지정하는 것을 권장합니다. 예:

```diff
 apiVersion: kustomize.config.k8s.io/v1beta1
 kind: Kustomization
+namespace: community-service
+commonLabels:
+  environment: develop
 resources:
   - ../../../base/community-service
 ...
 namePrefix: dev-
```



Also applies to: 10-11

</blockquote></details>
<details>
<summary>base/community-service/deployment.yaml (1)</summary><blockquote>

`15-20`: **헬스체크 및 리소스 요청/제한 추가 권장**  
프로덕션 안정성을 위해 `imagePullPolicy`를 명시하고, `readinessProbe`·`livenessProbe`, CPU/메모리의 `resources.requests`·`resources.limits`를 추가하는 것을 권장합니다.  
```yaml
-        - name: community-service
-          image: yukyung0/playus-community-service:latest
+        - name: community-service
+          image: yukyung0/playus-community-service:latest
+          imagePullPolicy: IfNotPresent
+          resources:
+            requests:
+              cpu: "100m"
+              memory: "128Mi"
+            limits:
+              cpu: "250m"
+              memory: "256Mi"
+          readinessProbe:
+            httpGet:
+              path: /health
+              port: 8080
+            initialDelaySeconds: 5
+            periodSeconds: 10
+          livenessProbe:
+            httpGet:
+              path: /health
+              port: 8080
+            initialDelaySeconds: 15
+            periodSeconds: 20
```

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 6381358f0eec4cdfa6735061707943d31dbce1bb and bdb6d7169cdd277c2bf650b585d4b762b7dbae26.

</details>

<details>
<summary>📒 Files selected for processing (11)</summary>

* `.idea/PlayUs-k8s.iml` (1 hunks)
* `.idea/modules.xml` (1 hunks)
* `.idea/vcs.xml` (1 hunks)
* `base/community-service/deployment.yaml` (1 hunks)
* `base/community-service/kustomization.yaml` (1 hunks)
* `base/namespaces.yaml` (1 hunks)
* `base/network-policies.yaml` (1 hunks)
* `base/resource-quotas.yaml` (1 hunks)
* `deployment.yaml` (0 hunks)
* `overlays/develop/community-service/kustomization.yaml` (1 hunks)
* `overlays/develop/community-service/patch-image.yaml` (1 hunks)

</details>

<details>
<summary>💤 Files with no reviewable changes (1)</summary>

* deployment.yaml

</details>

<details>
<summary>🔇 Additional comments (4)</summary><blockquote>

<details>
<summary>base/network-policies.yaml (1)</summary>

`1-2`: **Placeholder 네트워크 정책 파일 관리 제안**  
현재 실제 네트워크 정책 리소스 정의가 없고 주석만 존재합니다.  
추후 작업 추적을 위해 TODO 주석에 관련 이슈 번호를 추가하거나, 최소한의 예제 네트워크 정책 스켈레톤을 포함하는 것을 고려해주세요.  
[ suggest_optional_refactor ] [ offer_assistance ]  
추가로 기본 네트워크 정책 템플릿 생성이 필요하면 알려주세요.

</details>
<details>
<summary>.idea/vcs.xml (1)</summary>

`1-6`: **.idea 디렉토리 버전 관리 검토**  
IntelliJ IDEA 설정 파일(`.idea`)은 일반적으로 개인 개발 환경에 종속적이므로, 버전 관리 대상에서 제외하고 `.gitignore`에 등록하는 것을 권장합니다.  
[ suggest_optional_refactor ]

</details>
<details>
<summary>base/resource-quotas.yaml (1)</summary>

`1-2`: **Placeholder 리소스 쿼터 파일 관리 제안**  
현재 namespace별 리소스 쿼터 정의가 없고 주석만 존재합니다.  
추후 적용 계획을 명확히 하기 위해 TODO 주석에 이슈 번호 추가나 기본 리소스 쿼터 예시를 작성하는 것을 추천드립니다.  
[ suggest_optional_refactor ] [ offer_assistance ]  
필요 시 기본 리소스 쿼터 스켈레톤을 제공해드릴 수 있습니다.

</details>
<details>
<summary>overlays/develop/community-service/patch-image.yaml (1)</summary>

`1-11`: **패치 메타데이터 일치 확인**  
베이스 리소스(`community-service`)에 정확히 매칭되는 `metadata.name`을 사용하고 있어 올바르게 패치됩니다. 추가 변경 사항이 없다면 이 구조는 유지하셔도 좋습니다.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-29T13:52:36Z
user: login: coderabbitai[bot]
state: APPROVED
author_association: NONE
submitted_at: 2025-04-29T13:52:39Z
user: login: yechan-kim
body: 유경님 고생 많으셨습니다!
코멘트 확인 부탁드려요~
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-29T14:07:37Z
user: login: Kim-Yukyung
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-29T14:29:38Z
user: login: yechan-kim
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-30T01:09:04Z
user: login: yechan-kim
body: 👍
state: APPROVED
author_association: NONE
submitted_at: 2025-04-30T01:09:29Z

Review comments:
diff_hunk: @@ -0,0 +1,19 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: community-service
+spec:
+  replicas: 2
+  selector:
+    matchLabels:
+      app: community-service
+  template:
+    metadata:
+      labels:
+        app: community-service
+    spec:
+      containers:
+        - name: community-service
+          image: yukyung0/playus-community-service:latest
path: base/community-service/deployment.yaml
user: login: yechan-kim
body: 보안을 위해서 `DOCKER_USERNAME`은 환경 변수로 처리하는건 어떤가요?
created_at: 2025-04-29T14:04:18Z
author_association: NONE
diff_hunk: @@ -0,0 +1,10 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: community-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: community-service
+          image: yukyung0/playus-community-service:dev
path: overlays/develop/community-service/patch-image.yaml
user: login: yechan-kim
body: 이 부분도 마찬가지 입니다!
created_at: 2025-04-29T14:04:48Z
author_association: NONE
diff_hunk: @@ -0,0 +1,10 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: community-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: community-service
+          image: yukyung0/playus-community-service:dev
path: overlays/develop/community-service/patch-image.yaml
user: login: Kim-Yukyung
body: 노력해보겠습니다...!
created_at: 2025-04-29T14:29:38Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,10 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: community-service
+spec:
+  template:
+    spec:
+      containers:
+        - name: community-service
+          image: yukyung0/playus-community-service:dev
path: overlays/develop/community-service/patch-image.yaml
user: login: yechan-kim
body: 해당 부분은 환경 변수로 처리하는 것보다 dockerHub에서 인가된 사용자가 pull 할 수 있도록 처리하는 것이 더 좋은 방법인 것 같네요!
해당 부분은 따로 설정을 해줘야 하는 것이니 추후에 작업하면 될 것 같습니다!
created_at: 2025-04-30T01:09:03Z
author_association: NONE

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-04-29T13:47:43Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

<details>
<summary>📝 Walkthrough</summary>

```markdown
## Walkthrough

이번 변경 사항에서는 쿠버네티스 기반의 배포를 위한 여러 구성 파일과 디렉토리 구조가 새롭게 추가되었습니다. IntelliJ IDEA 프로젝트 설정 파일들이 포함되어 있으며, `community-service`를 위한 배포 및 Kustomize 관련 파일, 네임스페이스 정의, 네트워크 정책 및 리소스 쿼터의 초기 템플릿 파일들이 생성되었습니다. 기존의 `deployment.yaml` 파일은 삭제되었습니다. 개발 환경 오버레이도 추가되어 환경별 이미지 패치와 네임 프리픽스가 적용됩니다.

## Changes

| 파일/경로 그룹                                                                 | 변경 요약                                                                                      |
|-------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|
| .idea/PlayUs-k8s.iml, .idea/modules.xml, .idea/vcs.xml                        | IntelliJ IDEA 모듈 및 프로젝트, VCS(Git) 설정 파일 신규 추가                                  |
| base/community-service/deployment.yaml                                        | community-service용 쿠버네티스 Deployment 리소스(2 replicas, 이미지, 포트 등) 신규 생성        |
| base/community-service/kustomization.yaml                                     | community-service용 Kustomize 관리용 kustomization.yaml 신규 추가                             |
| base/namespaces.yaml                                                          | 여러 서비스 및 인프라 네임스페이스(8개) 신규 정의                                             |
| base/network-policies.yaml, base/resource-quotas.yaml                         | 네트워크 정책/리소스 쿼터 템플릿 파일(주석만 존재, 실제 정책 미포함) 신규 추가                |
| deployment.yaml                                                               | 기존 nginx 기반 Deployment 리소스 전체 삭제                                                   |
| overlays/develop/community-service/kustomization.yaml                         | 개발 오버레이용 community-service Kustomize 파일(네임 프리픽스, 이미지 패치 적용) 신규 추가   |
| overlays/develop/community-service/patch-image.yaml                           | 개발 오버레이용 community-service Deployment 이미지(dev 태그) 패치 파일 신규 추가             |
| base/match-service/deployment.yaml, base/match-service/kustomization.yaml    | match-service용 Deployment 및 Kustomization 신규 추가                                        |
| base/search-service/deployment.yaml, base/search-service/kustomization.yaml  | search-service용 Deployment 및 Kustomization 신규 추가                                       |
| base/twp-service/deployment.yaml, base/twp-service/kustomization.yaml        | twp-service용 Deployment 및 Kustomization 신규 추가                                          |
| base/user-service/deployment.yaml, base/user-service/kustomization.yaml      | user-service용 Deployment 및 Kustomization 신규 추가                                         |
| overlays/develop/match-service/kustomization.yaml, overlays/develop/match-service/patch-image.yaml | 개발 오버레이용 match-service Kustomize 및 이미지 패치 신규 추가                             |
| overlays/develop/search-service/kustomization.yaml, overlays/develop/search-service/patch-image.yaml | 개발 오버레이용 search-service Kustomize 및 이미지 패치 신규 추가                            |
| overlays/develop/twp-service/kustomization.yaml, overlays/develop/twp-service/patch-image.yaml     | 개발 오버레이용 twp-service Kustomize 및 이미지 패치 신규 추가                              |
| overlays/develop/user-service/kustomization.yaml, overlays/develop/user-service/patch-image.yaml | 개발 오버레이용 user-service Kustomize 및 이미지 패치 신규 추가                             |

## Sequence Diagram(s)

```mermaid
sequenceDiagram
    participant Developer
    participant Kustomize
    participant Kubernetes API Server

    Developer->>Kustomize: Apply overlay (develop/community-service)
    Kustomize->>Kubernetes API Server: Deploy dev-community-service (image: dev)
    Kubernetes API Server-->>Developer: Deployment created in community-service namespace
```

## Assessment against linked issues

| Objective                                                | Addressed | Explanation                                   |
|----------------------------------------------------------|-----------|-----------------------------------------------|
| MSA마다 deployment 파일 작성 (#6)                         | ❌        | community-service만 배포 파일이 작성됨. 다른 MSA 서비스에 대한 deployment 파일은 없음. |

## Poem

> 🐇  
> 쿠버네티스 구름 위에  
> 새 서비스가 춤을 추네  
> 네임스페이스 줄지어  
> 배포 파일 번쩍이며  
> 개발 토끼는 깡총깡총  
> 오늘도 YAML을 심는다  
> dev 프리픽스, 꿈을 싣고!  
>
```

</details>

<!-- walkthrough_end -->


---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Lite**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between bdb6d7169cdd277c2bf650b585d4b762b7dbae26 and 5aac7fb86cc8f3e5d979acc1b2061c65f3423637.

</details>

<details>
<summary>📒 Files selected for processing (18)</summary>

* `base/community-service/deployment.yaml` (1 hunks)
* `base/match-service/deployment.yaml` (1 hunks)
* `base/match-service/kustomization.yaml` (1 hunks)
* `base/search-service/deployment.yaml` (1 hunks)
* `base/search-service/kustomization.yaml` (1 hunks)
* `base/twp-service/deployment.yaml` (1 hunks)
* `base/twp-service/kustomization.yaml` (1 hunks)
* `base/user-service/deployment.yaml` (1 hunks)
* `base/user-service/kustomization.yaml` (1 hunks)
* `overlays/develop/community-service/patch-image.yaml` (1 hunks)
* `overlays/develop/match-service/kustomization.yaml` (1 hunks)
* `overlays/develop/match-service/patch-image.yaml` (1 hunks)
* `overlays/develop/search-service/kustomization.yaml` (1 hunks)
* `overlays/develop/search-service/patch-image.yaml` (1 hunks)
* `overlays/develop/twp-service/kustomization.yaml` (1 hunks)
* `overlays/develop/twp-service/patch-image.yaml` (1 hunks)
* `overlays/develop/user-service/kustomization.yaml` (1 hunks)
* `overlays/develop/user-service/patch-image.yaml` (1 hunks)

</details>

<details>
<summary>✅ Files skipped from review due to trivial changes (16)</summary>

* base/twp-service/kustomization.yaml
* base/user-service/deployment.yaml
* overlays/develop/match-service/kustomization.yaml
* base/match-service/kustomization.yaml
* overlays/develop/twp-service/kustomization.yaml
* base/search-service/deployment.yaml
* overlays/develop/search-service/patch-image.yaml
* base/twp-service/deployment.yaml
* overlays/develop/user-service/patch-image.yaml
* base/match-service/deployment.yaml
* base/search-service/kustomization.yaml
* overlays/develop/user-service/kustomization.yaml
* base/user-service/kustomization.yaml
* overlays/develop/match-service/patch-image.yaml
* overlays/develop/twp-service/patch-image.yaml
* overlays/develop/search-service/kustomization.yaml

</details>

<details>
<summary>🚧 Files skipped from review as they are similar to previous changes (2)</summary>

* base/community-service/deployment.yaml
* overlays/develop/community-service/patch-image.yaml

</details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=KEA-ChunSam/PlayUs-k8s&utm_content=7):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate sequence diagram` to generate a sequence diagram of the changes in this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: NONE
user: login: Kim-Yukyung
created_at: 2025-04-29T13:59:02Z
body: `deployment` 파일에 `namespace` 정의 추가하겠습니다 :)
author_association: MEMBER