Skip to content

Commit ffc8410

Browse files
committed
create flask app manifest for k8s deployment
1 parent b8d47fb commit ffc8410

1 file changed

Lines changed: 131 additions & 0 deletions

File tree

k8s/application.yaml

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# ----------------------
2+
# Namespace for application
3+
# ----------------------
4+
apiVersion: v1
5+
kind: Namespace
6+
metadata:
7+
name: student-api
8+
---
9+
# ----------------------
10+
# ConfigMap for Flask API
11+
# ----------------------
12+
apiVersion: v1
13+
kind: ConfigMap
14+
metadata:
15+
name: flask-config
16+
namespace: student-api
17+
data:
18+
POSTGRES_HOST: "postgres"
19+
POSTGRES_PORT: "5432"
20+
POSTGRES_DB: "studentdb"
21+
---
22+
# ----------------------
23+
# Deployment for Flask REST API
24+
# ----------------------
25+
apiVersion: apps/v1
26+
kind: Deployment
27+
metadata:
28+
name: flask-api
29+
namespace: student-api
30+
spec:
31+
replicas: 2
32+
selector:
33+
matchLabels:
34+
app: flask-api
35+
template:
36+
metadata:
37+
labels:
38+
app: flask-api
39+
spec:
40+
nodeSelector:
41+
type: application
42+
initContainers:
43+
- name: db-migrations
44+
image: akhilthyadi/flask-app:7.0.0
45+
workingDir: /api/app
46+
env:
47+
- name: FLASK_APP
48+
value: "wsgi.py"
49+
- name: POSTGRES_USER
50+
valueFrom:
51+
secretKeyRef:
52+
name: postgres-secret
53+
key: POSTGRES_USER
54+
- name: POSTGRES_PASSWORD
55+
valueFrom:
56+
secretKeyRef:
57+
name: postgres-secret
58+
key: POSTGRES_PASSWORD
59+
- name: POSTGRES_HOST
60+
valueFrom:
61+
configMapKeyRef:
62+
name: flask-config
63+
key: POSTGRES_HOST
64+
- name: POSTGRES_PORT
65+
valueFrom:
66+
configMapKeyRef:
67+
name: flask-config
68+
key: POSTGRES_PORT
69+
- name: POSTGRES_DB
70+
valueFrom:
71+
configMapKeyRef:
72+
name: flask-config
73+
key: POSTGRES_DB
74+
command:
75+
- sh
76+
- -c
77+
- |
78+
echo "Waiting for Postgres at $POSTGRES_HOST:$POSTGRES_PORT..."
79+
until pg_isready -h $POSTGRES_HOST -p $POSTGRES_PORT -U $POSTGRES_USER; do
80+
sleep 2
81+
done
82+
echo "Postgres is ready, running migrations..."
83+
flask db upgrade
84+
containers:
85+
- name: flask-api
86+
image: akhilthyadi/flask-app:7.0.0
87+
ports:
88+
- containerPort: 5000
89+
env:
90+
- name: POSTGRES_USER
91+
valueFrom:
92+
secretKeyRef:
93+
name: postgres-secret
94+
key: POSTGRES_USER
95+
- name: POSTGRES_PASSWORD
96+
valueFrom:
97+
secretKeyRef:
98+
name: postgres-secret
99+
key: POSTGRES_PASSWORD
100+
- name: POSTGRES_HOST
101+
valueFrom:
102+
configMapKeyRef:
103+
name: flask-config
104+
key: POSTGRES_HOST
105+
- name: POSTGRES_PORT
106+
valueFrom:
107+
configMapKeyRef:
108+
name: flask-config
109+
key: POSTGRES_PORT
110+
- name: POSTGRES_DB
111+
valueFrom:
112+
configMapKeyRef:
113+
name: flask-config
114+
key: POSTGRES_DB
115+
---
116+
# ----------------------
117+
# Service to expose Flask API
118+
# ----------------------
119+
apiVersion: v1
120+
kind: Service
121+
metadata:
122+
name: flask-api-service
123+
namespace: student-api
124+
spec:
125+
selector:
126+
app: flask-api
127+
ports:
128+
- protocol: TCP
129+
port: 80
130+
targetPort: 5000
131+
type: NodePort

0 commit comments

Comments
 (0)