Skip to content

Commit e188b94

Browse files
committed
PEER-244,245: Add Frontend service and deployment
Signed-off-by: SeeuSim <[email protected]>
1 parent c2d8dbc commit e188b94

File tree

5 files changed

+131
-2
lines changed

5 files changed

+131
-2
lines changed

frontend/entrypoint.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/bin/sh
22

3-
envsubst '${FRONTEND_PORT} ${VITE_USER_SERVICE} ${VITE_QUESTION_SERVICE} ${VITE_COLLAB_SERVICE} ${VITE_COLLAB_WS} ${VITE_MATCHING_SERVICE}' < /etc/nginx/nginx.conf.template > /etc/nginx/conf.d/default.conf
3+
envsubst '${FRONTEND_PORT} ${VITE_USER_SERVICE} ${VITE_QUESTION_SERVICE} ${VITE_COLLAB_SERVICE} ${VITE_MATCHING_SERVICE}' < /etc/nginx/nginx.conf.template > /etc/nginx/conf.d/default.conf
44

55
nginx -g 'daemon off;'

frontend/nginx.conf.template

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ server {
1414
location /user-service/ {
1515
rewrite ^/user-service(/.*)$ $1 break;
1616
proxy_pass ${VITE_USER_SERVICE};
17-
1817
proxy_set_header Host $host;
1918
proxy_set_header X-Real-IP $remote_addr;
2019
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

k8s/05-frontend-deployment.yaml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: frontend
5+
namespace: peerprep
6+
labels:
7+
project: peerprep
8+
peerprep.service: frontend
9+
spec:
10+
replicas: 1
11+
selector:
12+
matchLabels:
13+
project: peerprep
14+
peerprep.service: frontend
15+
strategy:
16+
type: Recreate
17+
template:
18+
metadata:
19+
labels:
20+
project: peerprep
21+
peerprep.service: frontend
22+
peerprep.network.match-api: "true"
23+
peerprep.network.user-api: "true"
24+
peerprep.network.question-api: "true"
25+
peerprep.network.collab-api: "true"
26+
spec:
27+
initContainers:
28+
- name: wait-for-services
29+
image: node:lts-alpine
30+
env:
31+
- name: VITE_USER_SERVICE
32+
value: http://user-service:9001
33+
- name: VITE_QUESTION_SERVICE
34+
value: http://question-service:9002
35+
- name: VITE_COLLAB_SERVICE
36+
value: http://collab-service:9003
37+
- name: VITE_MATCHING_SERVICE
38+
value: http://matching-service:9004
39+
command:
40+
- /bin/sh
41+
- -c
42+
- |
43+
until wget --no-verbose --tries=1 --spider "$VITE_USER_SERVICE/health"; do
44+
echo "Waiting for User Service"
45+
sleep 2
46+
done &
47+
48+
until wget --no-verbose --tries=1 --spider "$VITE_QUESTION_SERVICE/health"; do
49+
echo "Waiting for Question Service"
50+
sleep 2
51+
done &
52+
53+
until wget --no-verbose --tries=1 --spider "$VITE_COLLAB_SERVICE/health"; do
54+
echo "Waiting for Collaboration Service"
55+
sleep 2
56+
done &
57+
58+
until wget --no-verbose --tries=1 --spider "$VITE_MATCHING_SERVICE/health"; do
59+
echo "Waiting for Matching Service"
60+
sleep 2
61+
done &
62+
63+
wait
64+
echo "All services healthy"
65+
66+
containers:
67+
- name: frontend
68+
image: ay2425s1cs3219g16/frontend:main
69+
imagePullPolicy: IfNotPresent
70+
envFrom:
71+
- secretRef:
72+
name: frontend-secret
73+
env:
74+
- name: FRONTEND_PORT
75+
value: "3000"
76+
- name: VITE_USER_SERVICE
77+
value: http://user-service:9001
78+
- name: VITE_QUESTION_SERVICE
79+
value: http://question-service:9002
80+
- name: VITE_COLLAB_SERVICE
81+
value: http://collab-service:9003
82+
- name: VITE_MATCHING_SERVICE
83+
value: http://matching-service:9004
84+
ports:
85+
- name: frontend-ctr
86+
containerPort: 3000
87+
resources:
88+
requests:
89+
cpu: 250m
90+
memory: 256Mi
91+
limits:
92+
cpu: 500m
93+
memory: 512Mi
94+

k8s/05-frontend-hpa.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: autoscaling/v2
2+
kind: HorizontalPodAutoscaler
3+
metadata:
4+
name: frontend-hpa
5+
namespace: peerprep
6+
spec:
7+
scaleTargetRef:
8+
apiVersion: apps/v1
9+
kind: Deployment
10+
name: frontend
11+
minReplicas: 1
12+
maxReplicas: 5
13+
metrics:
14+
- type: Resource
15+
resource:
16+
name: cpu
17+
target:
18+
type: Utilization
19+
averageUtilization: 30

k8s/05-frontend-service.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: frontend
5+
namespace: peerprep
6+
labels:
7+
project: peerprep
8+
peerprep.service: frontend
9+
spec:
10+
type: ClusterIP
11+
selector:
12+
project: peerprep
13+
peerprep.service: frontend
14+
ports:
15+
- name: frontend-prt
16+
port: 3000
17+
targetPort: frontend-ctr

0 commit comments

Comments
 (0)