From e2ed0a6c999a78232d94902f5af11ac0084a860c Mon Sep 17 00:00:00 2001
From: Eunhak Lee <lee@enak.kr>
Date: Sun, 8 Dec 2024 05:48:55 +0900
Subject: [PATCH] feat: deploy infra

---
 pods/backend.yml          |  9 ++++++--
 pods/echo-server.yml      | 48 +++++++++++++++++++++++++++++++++++++++
 pods/entrypoint.yml       | 10 ++++----
 pods/frontend-dropper.yml |  1 +
 pods/hwinfo.yml           | 11 +++++++++
 pods/mailing.yml          |  4 ++--
 pods/nginx.yml            |  7 ++++--
 pods/postgres.yml         |  4 +++-
 pods/redis.yml            |  6 +++--
 9 files changed, 86 insertions(+), 14 deletions(-)
 create mode 100644 pods/echo-server.yml

diff --git a/pods/backend.yml b/pods/backend.yml
index d043c6d..560f089 100644
--- a/pods/backend.yml
+++ b/pods/backend.yml
@@ -14,10 +14,14 @@ spec:
       containers:
       - name: backend
         image: git.ajou.ac.kr:5050/meanspec/meanspec-backend:latest
+        imagePullPolicy: Always
         resources:
+          requests:
+            memory: "64Mi"
+            cpu: "100m"
           limits:
-            memory: "128Mi"
-            cpu: "500m"
+            memory: "2Gi"
+            cpu: "1"
         ports:
         - containerPort: 8000
         env:
@@ -42,3 +46,4 @@ spec:
   ports:
   - port: 8000
     targetPort: 8000
+  type: NodePort
diff --git a/pods/echo-server.yml b/pods/echo-server.yml
new file mode 100644
index 0000000..7691509
--- /dev/null
+++ b/pods/echo-server.yml
@@ -0,0 +1,48 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: backend
+spec:
+  selector:
+    matchLabels:
+      app: backend
+  template:
+    metadata:
+      labels:
+        app: backend
+    spec:
+      containers:
+      - name: backend
+        image: git.ajou.ac.kr:5050/meanspec/meanspec-backend:latest
+        resources:
+          requests:
+            memory: "64Mi"
+            cpu: "100m"
+          limits:
+            memory: "2Gi"
+            cpu: "1"
+        ports:
+        - containerPort: 8000
+        env:
+        - name: JWT_SECRET
+          value: jwtsecret
+        - name: DB_HOST
+          value: postgres
+        - name: DB_USER
+          value: meanspec
+        - name: DB_PASSWORD
+          value: foopassword123
+        - name: REDIS_URL
+          value: redis://redis
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: backend
+spec:
+  selector:
+    app: backend
+  ports:
+  - port: 8000
+    targetPort: 8000
+  type: NodePort
diff --git a/pods/entrypoint.yml b/pods/entrypoint.yml
index b5ff67d..9180fb2 100644
--- a/pods/entrypoint.yml
+++ b/pods/entrypoint.yml
@@ -7,10 +7,10 @@ metadata:
 spec:
   containers:
   - name: entry
-    image: ubuntu:latest
+    image: node:20
     command: ["/bin/bash", "-c", "--"]
     args: ["while true; do sleep 30; done;"]
-    resources:
-      limits:
-        memory: "128Mi"
-        cpu: "500m"
+    # resources:
+    #   limits:
+    #     memory: "128Mi"
+    #     cpu: "500m"
diff --git a/pods/frontend-dropper.yml b/pods/frontend-dropper.yml
index 3395194..968dfd6 100644
--- a/pods/frontend-dropper.yml
+++ b/pods/frontend-dropper.yml
@@ -9,6 +9,7 @@ spec:
   containers:
   - name: frontend-dropper
     image: git.ajou.ac.kr:5050/meanspec/meanspec-frontend:latest
+    imagePullPolicy: Always
     command: ["sh", "-c"]
     args: ["/bin/echo \"cp -r /app/* /workdir\" > /entrypoint.sh ; chmod +x /entrypoint.sh ; /entrypoint.sh"]
     resources:
diff --git a/pods/hwinfo.yml b/pods/hwinfo.yml
index f0e9504..1ce326e 100644
--- a/pods/hwinfo.yml
+++ b/pods/hwinfo.yml
@@ -15,6 +15,7 @@ spec:
       containers:
       - name: hwinfo
         image: git.ajou.ac.kr:5050/meanspec/meanspec-hwinfo-daemon:latest
+        imagePullPolicy: Always
         env:
         - name: REDIS_URL
           value: redis://redis
@@ -22,7 +23,17 @@ spec:
           value: postgres
         - name: PARSE_DAEMON_REFRESH_INTERVAL
           value: "1"
+        - name: HWINFO_HACKNOTE_FILE
+          value: "/data/hacknote.json"
         resources:
           limits:
             memory: "64Mi"
             cpu: "100m"
+        volumeMounts:
+        - name: hacknote
+          mountPath: /data
+      volumes:
+      - name: hacknote
+        hostPath:
+          path: /home/enak/meanspec/hwinfo
+          type: DirectoryOrCreate
diff --git a/pods/mailing.yml b/pods/mailing.yml
index 5046fba..c94bb3f 100644
--- a/pods/mailing.yml
+++ b/pods/mailing.yml
@@ -28,5 +28,5 @@ spec:
           value: "60"
         resources:
           limits:
-            memory: "64Mi"
-            cpu: "100m"
+            memory: "32Mi"
+            cpu: "10m"
diff --git a/pods/nginx.yml b/pods/nginx.yml
index 816fb41..d28ca3f 100644
--- a/pods/nginx.yml
+++ b/pods/nginx.yml
@@ -37,9 +37,12 @@ spec:
   - name: nginx
     image: return0927/nginx:1.19.3-hakase
     resources:
+      requests:
+        memory: "1Gi"
+        cpu: "1"
       limits:
-        memory: "128Mi"
-        cpu: "500m"
+        memory: "4Gi"
+        cpu: "6"
     ports:
       - containerPort: 80
     volumeMounts:
diff --git a/pods/postgres.yml b/pods/postgres.yml
index 49bc85d..7d88e0e 100644
--- a/pods/postgres.yml
+++ b/pods/postgres.yml
@@ -40,7 +40,7 @@ spec:
     - name: postgres-init-scripts
       mountPath: /docker-entrypoint-initdb.d
     - name: postgres-data
-      mountPath: /var/lib/postgres/data
+      mountPath: /var/lib/postgresql/data
   volumes:
   - name: postgres-init-scripts
     hostPath:
@@ -57,6 +57,8 @@ metadata:
 spec:
   selector:
     name: postgres
+  type: NodePort
   ports:
   - port: 5432
+    nodePort: 30432
     targetPort: 5432
diff --git a/pods/redis.yml b/pods/redis.yml
index ba66e39..f31a3ba 100644
--- a/pods/redis.yml
+++ b/pods/redis.yml
@@ -16,8 +16,8 @@ spec:
         image: redis:7.4.1-alpine
         resources:
           limits:
-            memory: "128Mi"
-            cpu: "500m"
+            memory: "1Gi"
+            cpu: "1"
 ---
 apiVersion: v1
 kind: Service
@@ -26,6 +26,8 @@ metadata:
 spec:
   selector:
     app: redis-cluster
+  type: NodePort
   ports:
   - port: 6379
+    nodePort: 30379
     targetPort: 6379
-- 
GitLab