Skip to content

Commit

Permalink
Merge pull request #33 from boostcampwm-2024/feature-be-#2
Browse files Browse the repository at this point in the history
[#2] 쿠버네티스 구조 세팅
  • Loading branch information
Hoons97 authored Jan 15, 2025
2 parents 7233bc3 + 24fe0ea commit fa1ea30
Show file tree
Hide file tree
Showing 19 changed files with 200 additions and 3 deletions.
1 change: 1 addition & 0 deletions BE/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
3 changes: 2 additions & 1 deletion BE/src/config/query-database/admin-db-manager.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ export class AdminDBManager implements OnModuleInit {
constructor(private readonly configService: ConfigService) {}

async onModuleInit() {
this.createAdminConnection();
// 서버 테스트를 위한 주석처리
//this.createAdminConnection();
}

private createAdminConnection() {
Expand Down
1 change: 1 addition & 0 deletions FE/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
18 changes: 18 additions & 0 deletions FE/conf/nginx.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
server {
listen 80;
server_name q-lab.site www.q-lab.site;

# 정적 파일 serve
location / {
try_files $uri /index.html;
}

# 네스트 서비스 서버로 라우팅
location /api/ {
proxy_pass http://apiserver-service.default:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
58 changes: 58 additions & 0 deletions kubernetes/apiServer-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: apiserver-deployment
spec:
replicas: 1
selector:
matchLabels:
app: apiserver
template:
metadata:
labels:
app: apiserver
spec:
containers:
- name: apiserver
image: local-qlab-apiserver:latest
imagePullPolicy: Never
ports:
- containerPort: 3000
env:
- name: DB_TYPE
value: 'mysql'
- name: DB_HOST
value: 'serverdb-service.default'
- name: DB_PORT
value: '3306'
- name: DB_USERNAME
value: 'root'
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: qlab-secret
key: db-password
- name: DB_DATABASE
value: 'qlabdb'

- name: QUERY_DB_TYPE
value: 'mysql'
- name: QUERY_DB_PORT
value: '3306'
- name: QUERY_DB_USER
value: 'root'
- name: QUERY_DB_PASSWORD
valueFrom:
secretKeyRef:
name: qlab-secret
key: querydb-password

- name: REDIS_HOST
value: 'redis-service.default'
- name: REDIS_PORT
value: '6379'
- name: SESSION_SECRET
valueFrom:
secretKeyRef:
name: qlab-secret
key: session-secret
13 changes: 13 additions & 0 deletions kubernetes/apiServer-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: apiserver-service
namespace: default
spec:
selector:
app: apiserver
ports:
- protocol: TCP
port: 3000
targetPort: 3000
type: LoadBalancer
30 changes: 30 additions & 0 deletions kubernetes/queryDB-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: querydb-deployment
spec:
replicas: 4
selector:
matchLabels:
app: querydb
template:
metadata:
labels:
app: querydb
spec:
containers:
- name: querydb
image: mysql:8.4
env:
- name: MYSQL_ROOT_PASSWORD
value: rootpassword
- name: MYSQL_DATABASE
value: qlabdb
ports:
- containerPort: 3306
volumeMounts:
- name: querydb-data
mountPath: /var/lib/mysql
volumes:
- name: querydb-data
emptyDir: {}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ spec:
mountPath: /data
command:
- "redis-server"
- "--apependonly"
- "--appendonly"
- "yes"
volumes:
- name: redis-data
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v1
kind: Service
metadata:
name: redis
name: redis-service
namespace: default
spec:
selector:
Expand Down
9 changes: 9 additions & 0 deletions kubernetes/secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: v1
kind: Secret
metadata:
name: qlab-secret
type: Opaque
data:
db-password: cm9vdHBhc3N3b3Jk #rootpassword
querydb-password: cm9vdHBhc3N3b3Jk #rootpassword
session-secret: c2Vzc2lvbi1zZWNyZXQ= #session-secret
File renamed without changes.
File renamed without changes.
File renamed without changes.
20 changes: 20 additions & 0 deletions kubernetes/webServer-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: webserver-deployment
spec:
replicas: 1
selector:
matchLabels:
app: webserver
template:
metadata:
labels:
app: webserver
spec:
containers:
- name: webserver
image: local-qlab-webserver:latest
imagePullPolicy: Never
ports:
- containerPort: 80
13 changes: 13 additions & 0 deletions kubernetes/webServer-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: webserver-service
namespace: default
spec:
selector:
app: webserver
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 80
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
"name": "web36-qlab",
"version": "1.0.0",
"scripts": {
"minikube:win": "powershell ./scripts/minikube.ps1",
"minikube:unix": "bash ./scripts/minikube.sh",
"start:minikube": "npm run minikube:win || npm run minikube:unix",
"start:container": "npm run start:backend && npm run setup:frontend && npm run start:frontend",
"start:backend": "docker-compose -f ./BE/docker-compose.backend.local.yml up --build -d",
"setup:frontend": "cd FE && npm install",
Expand Down
14 changes: 14 additions & 0 deletions scripts/minikube.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
$status = & minikube status --format="{{.Host}}"
if ($status -eq "Running") {
Write-Host "Minikube is already running."
} else {
& minikube start
}

& minikube docker-env | Invoke-Expression
docker build -t local-qlab-apiserver -f ./BE/Dockerfile .
docker build -t local-qlab-webserver -f ./FE/Dockerfile .

kubectl delete -f ./kubernetes/apiServer-deployment.yaml
kubectl delete -f ./kubernetes/webServer-deployment.yaml
kubectl apply -f ./kubernetes/
16 changes: 16 additions & 0 deletions scripts/minikube.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

status=$(minikube status --format='{{.Host}}')
if [ "$status" == "Running" ]; then
echo "Minikube is already running."
else
minikube start
fi

eval $(minikube docker-env)
docker build -t local-qlab-apiserver -f ./BE/Dockerfile .
docker build -t local-qlab-webserver -f ./FE/Dockerfile .

kubectl delete -f ./kubernetes/apiServer-deployment.yaml
kubectl delete -f ./kubernetes/webServer-deployment.yaml
kubectl apply -f ./kubernetes/

0 comments on commit fa1ea30

Please sign in to comment.