Skip to content
Snippets Groups Projects
Commit 296d95db authored by Eunhak Lee's avatar Eunhak Lee
Browse files

feat: introduce kubernetes

parent c2023235
No related branches found
No related tags found
No related merge requests found
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:
limits:
memory: "128Mi"
cpu: "500m"
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
apiVersion: v1
kind: Pod
metadata:
name: entry
labels:
name: entry
spec:
containers:
- name: entry
image: ubuntu:latest
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 30; done;"]
resources:
limits:
memory: "128Mi"
cpu: "500m"
apiVersion: v1
kind: Pod
metadata:
name: frontend-dropper
labels:
name: frontend-dropper
spec:
restartPolicy: Never
containers:
- name: frontend-dropper
image: git.ajou.ac.kr:5050/meanspec/meanspec-frontend:latest
command: ["sh", "-c"]
args: ["/bin/echo \"cp -r /app/* /workdir\" > /entrypoint.sh ; chmod +x /entrypoint.sh ; /entrypoint.sh"]
resources:
limits:
memory: "128Mi"
cpu: "500m"
volumeMounts:
- name: frontend
mountPath: /workdir
volumes:
- name: frontend
hostPath:
path: /home/enak/meanspec/frontend
type: DirectoryOrCreate
apiVersion: apps/v1
kind: Deployment
metadata:
name: hwinfo
spec:
replicas: 8
selector:
matchLabels:
app: hwinfo
template:
metadata:
labels:
app: hwinfo
spec:
containers:
- name: hwinfo
image: git.ajou.ac.kr:5050/meanspec/meanspec-hwinfo-daemon:latest
env:
- name: REDIS_URL
value: redis://redis
- name: DB_HOST
value: postgres
- name: PARSE_DAEMON_REFRESH_INTERVAL
value: "1"
resources:
limits:
memory: "64Mi"
cpu: "100m"
apiVersion: apps/v1
kind: Deployment
metadata:
name: mailing
spec:
replicas: 8
selector:
matchLabels:
app: mailing
template:
metadata:
labels:
app: mailing
spec:
containers:
- name: mailing
image: git.ajou.ac.kr:5050/meanspec/meanspec-mailing-daemon:latest
env:
- name: REDIS_URL
value: redis://redis
- name: SMTP_USER
value: bc1916@ajou.ac.kr
- name: SMTP_PASS
value: <erased>
- name: SENDER_MAIL
value: bc1916@ajou.ac.kr
- name: CODE_TTL_SECONDS
value: "60"
resources:
limits:
memory: "64Mi"
cpu: "100m"
apiVersion: v1
kind: PersistentVolume
metadata:
name: nginx-config-pv
spec:
capacity:
storage: 1G
accessModes:
- ReadOnlyMany
storageClassName: manual
hostPath:
path: /home/enak/meanspec/nginx
type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-config-pvc
spec:
resources:
requests:
storage: 100Mi
volumeMode: Filesystem
accessModes:
- ReadOnlyMany
volumeName: nginx-config-pv
storageClassName: manual
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
name: nginx
spec:
containers:
- name: nginx
image: return0927/nginx:1.19.3-hakase
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 80
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx
- name: frontend
mountPath: /var/www/html
volumes:
- name: frontend
hostPath:
path: /home/enak/meanspec/frontend
type: DirectoryOrCreate
- name: nginx-config
persistentVolumeClaim:
claimName: nginx-config-pvc
---
apiVersion: v1
kind: Service
metadata:
name: meanspec
spec:
selector:
name: nginx
ports:
- port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: meanspec
port:
name: http
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-db-pvc
spec:
resources:
requests:
storage: 16G
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
volumeName: postgres-db-pv
storageClassName: manual
---
apiVersion: v1
kind: Pod
metadata:
name: postgres
labels:
name: postgres
spec:
containers:
- name: postgres
image: docker.io/library/postgres:17-alpine
resources:
limits:
memory: "4G"
cpu: "2"
ports:
- containerPort: 5432
protocol: TCP
env:
- name: POSTGRES_DB
value: meanspec
- name: POSTGRES_USER
value: meanspec
- name: POSTGRES_PASSWORD
value: foopassword123
volumeMounts:
- name: postgres-init-scripts
mountPath: /docker-entrypoint-initdb.d
- name: postgres-data
mountPath: /var/lib/postgres/data
volumes:
- name: postgres-init-scripts
hostPath:
path: /home/enak/meanspec/init/sql
type: Directory
- name: postgres-data
persistentVolumeClaim:
claimName: postgres-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: postgres
spec:
selector:
name: postgres
ports:
- port: 5432
targetPort: 5432
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-cluster
spec:
selector:
matchLabels:
app: redis-cluster
template:
metadata:
labels:
app: redis-cluster
spec:
containers:
- name: redis-cluster
image: redis:7.4.1-alpine
resources:
limits:
memory: "128Mi"
cpu: "500m"
---
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
selector:
app: redis-cluster
ports:
- port: 6379
targetPort: 6379
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-db-pv
spec:
capacity:
storage: 16G
accessModes:
- ReadWriteOnce
storageClassName: manual
volumeMode: Filesystem
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /home/enak/meanspec/database
type: DirectoryOrCreate
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment