Skip to content

Commit c0f5d1d

Browse files
committed
Added application helm files
1 parent 963de21 commit c0f5d1d

5 files changed

Lines changed: 146 additions & 0 deletions

File tree

helm/application/Chart.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v2
2+
name: application
3+
description: Helm chart for Flask REST API (student-api)
4+
type: application
5+
version: 0.1.0
6+
appVersion: "7.0.0"
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: flask-config
5+
namespace: {{ .Values.namespace }}
6+
data:
7+
POSTGRES_HOST: {{ .Values.config.POSTGRES_HOST | quote }}
8+
POSTGRES_PORT: {{ .Values.config.POSTGRES_PORT | quote }}
9+
POSTGRES_DB: {{ .Values.config.POSTGRES_DB | quote }}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: flask-api
5+
namespace: {{ .Values.namespace }}
6+
spec:
7+
replicas: {{ .Values.replicaCount }}
8+
selector:
9+
matchLabels:
10+
app: flask-api
11+
template:
12+
metadata:
13+
labels:
14+
app: flask-api
15+
spec:
16+
nodeSelector:
17+
{{ toYaml .Values.nodeSelector | indent 8 }}
18+
initContainers:
19+
- name: db-migrations
20+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
21+
workingDir: /api/app
22+
env:
23+
- name: FLASK_APP
24+
value: "wsgi.py"
25+
- name: POSTGRES_USER
26+
valueFrom:
27+
secretKeyRef:
28+
name: {{ .Values.database.secretName }}
29+
key: {{ .Values.database.usernameKey }}
30+
- name: POSTGRES_PASSWORD
31+
valueFrom:
32+
secretKeyRef:
33+
name: {{ .Values.database.secretName }}
34+
key: {{ .Values.database.passwordKey }}
35+
- name: POSTGRES_HOST
36+
valueFrom:
37+
configMapKeyRef:
38+
name: flask-config
39+
key: POSTGRES_HOST
40+
- name: POSTGRES_PORT
41+
valueFrom:
42+
configMapKeyRef:
43+
name: flask-config
44+
key: POSTGRES_PORT
45+
- name: POSTGRES_DB
46+
valueFrom:
47+
configMapKeyRef:
48+
name: flask-config
49+
key: POSTGRES_DB
50+
command:
51+
- sh
52+
- -c
53+
- |
54+
echo "Waiting for Postgres at $POSTGRES_HOST:$POSTGRES_PORT..."
55+
until pg_isready -h $POSTGRES_HOST -p $POSTGRES_PORT -U $POSTGRES_USER; do
56+
sleep 2
57+
done
58+
echo "Postgres is ready, running migrations..."
59+
flask db upgrade
60+
containers:
61+
- name: flask-api
62+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
63+
imagePullPolicy: {{ .Values.image.pullPolicy }}
64+
ports:
65+
- containerPort: {{ .Values.service.targetPort }}
66+
env:
67+
- name: POSTGRES_USER
68+
valueFrom:
69+
secretKeyRef:
70+
name: {{ .Values.database.secretName }}
71+
key: {{ .Values.database.usernameKey }}
72+
- name: POSTGRES_PASSWORD
73+
valueFrom:
74+
secretKeyRef:
75+
name: {{ .Values.database.secretName }}
76+
key: {{ .Values.database.passwordKey }}
77+
- name: POSTGRES_HOST
78+
valueFrom:
79+
configMapKeyRef:
80+
name: flask-config
81+
key: POSTGRES_HOST
82+
- name: POSTGRES_PORT
83+
valueFrom:
84+
configMapKeyRef:
85+
name: flask-config
86+
key: POSTGRES_PORT
87+
- name: POSTGRES_DB
88+
valueFrom:
89+
configMapKeyRef:
90+
name: flask-config
91+
key: POSTGRES_DB
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: {{ .Values.service.name }}
5+
namespace: {{ .Values.namespace }}
6+
spec:
7+
selector:
8+
app: flask-api
9+
ports:
10+
- protocol: TCP
11+
port: {{ .Values.service.port }}
12+
targetPort: {{ .Values.service.targetPort }}
13+
type: {{ .Values.service.type }}

helm/application/values.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
namespace: student-api
2+
3+
replicaCount: 2
4+
5+
image:
6+
repository: akhilthyadi/flask-app
7+
tag: "7.0.0"
8+
pullPolicy: IfNotPresent
9+
10+
service:
11+
name: flask-api-service
12+
type: NodePort
13+
port: 80
14+
targetPort: 5000
15+
16+
config:
17+
POSTGRES_HOST: "postgres"
18+
POSTGRES_PORT: "5432"
19+
POSTGRES_DB: "studentdb"
20+
21+
database:
22+
secretName: postgres-secret
23+
usernameKey: POSTGRES_USER
24+
passwordKey: POSTGRES_PASSWORD
25+
26+
nodeSelector:
27+
type: application

0 commit comments

Comments
 (0)