Skip to content

Commit 2259c1a

Browse files
committed
rename helm
1 parent 409f496 commit 2259c1a

17 files changed

+702
-0
lines changed

backend/bdmas.zip

15.8 KB
Binary file not shown.

k8s/.helmignore

Whitespace-only changes.

k8s/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: sdp
3+
description: A Helm chart for deploying the FastAPI fullstack application
4+
type: application
5+
version: 0.1.0
6+
appVersion: "1.0.0"
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Adminer Deployment
2+
{{- if .Values.adminer.enabled }}
3+
apiVersion: apps/v1
4+
kind: Deployment
5+
metadata:
6+
name: {{ .Release.Name }}-adminer
7+
labels:
8+
app: adminer
9+
spec:
10+
replicas: {{ .Values.adminer.replicaCount }}
11+
selector:
12+
matchLabels:
13+
app: adminer
14+
template:
15+
metadata:
16+
labels:
17+
app: adminer
18+
spec:
19+
containers:
20+
- name: adminer
21+
image: "{{ .Values.adminer.image.repository }}:{{ .Values.adminer.image.tag }}"
22+
imagePullPolicy: {{ .Values.adminer.image.pullPolicy }}
23+
ports:
24+
- containerPort: {{ .Values.adminer.service.port }}
25+
volumeMounts:
26+
{{- range .Values.adminer.volumeMounts }}
27+
- name: {{ .name }}
28+
mountPath: {{ .mountPath }}
29+
{{- end }}
30+
volumes:
31+
{{- range .Values.adminer.volumes }}
32+
- name: {{ .name }}
33+
emptyDir: {}
34+
{{- end }}
35+
{{- end }}

k8s/templates/adminer-service.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Adminer Service
2+
{{- if .Values.adminer.enabled }}
3+
apiVersion: v1
4+
kind: Service
5+
metadata:
6+
name: {{ .Release.Name }}-adminer
7+
labels:
8+
app: adminer
9+
spec:
10+
type: {{ .Values.adminer.service.type }}
11+
ports:
12+
- port: {{ .Values.adminer.service.port }}
13+
targetPort: {{ .Values.adminer.service.port }}
14+
selector:
15+
app: adminer
16+
{{- end }}
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
{{- if .Values.backend.enabled }}
2+
apiVersion: apps/v1
3+
kind: Deployment
4+
metadata:
5+
name: {{ .Release.Name }}-backend
6+
labels:
7+
app.kubernetes.io/name: {{ .Release.Name }}
8+
app.kubernetes.io/instance: {{ .Release.Name }}
9+
app.kubernetes.io/component: backend
10+
spec:
11+
replicas: {{ .Values.backend.replicaCount }}
12+
selector:
13+
matchLabels:
14+
app.kubernetes.io/name: {{ .Release.Name }}
15+
app.kubernetes.io/instance: {{ .Release.Name }}
16+
app.kubernetes.io/component: backend
17+
template:
18+
metadata:
19+
labels:
20+
app.kubernetes.io/name: {{ .Release.Name }}
21+
app.kubernetes.io/instance: {{ .Release.Name }}
22+
app.kubernetes.io/component: backend
23+
spec:
24+
initContainers:
25+
- name: init-db
26+
image: "{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag }}"
27+
command: ["sh", "-c", "mkdir -p /app/data && chmod 777 /app/data"]
28+
securityContext:
29+
runAsUser: 0
30+
volumeMounts:
31+
- name: app-db-data
32+
mountPath: /app/data
33+
- name: wait-for-prestart
34+
image: postgres:12
35+
command: ['sh', '-c', 'until pg_isready -h {{ .Release.Name }}-db -p 5432 -U postgres -d app; do echo "waiting for database..."; sleep 2; done']
36+
env:
37+
- name: PGPASSWORD
38+
value: {{ .Values.db.env.POSTGRES_PASSWORD | quote }}
39+
containers:
40+
- name: backend
41+
image: "{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag }}"
42+
imagePullPolicy: {{ .Values.backend.image.pullPolicy }}
43+
ports:
44+
- name: http
45+
containerPort: 8000
46+
protocol: TCP
47+
resources:
48+
{{- toYaml .Values.backend.resources | nindent 12 }}
49+
envFrom:
50+
- configMapRef:
51+
name: {{ .Release.Name }}-config
52+
- secretRef:
53+
name: {{ .Release.Name }}-secrets
54+
env:
55+
- name: PYTHONPATH
56+
value: "/app"
57+
- name: PROJECT_NAME
58+
value: {{ .Values.backend.env.PROJECT_NAME | quote }}
59+
- name: ENVIRONMENT
60+
value: {{ .Values.backend.env.ENVIRONMENT | quote }}
61+
- name: FIRST_SUPERUSER
62+
value: {{ .Values.backend.env.FIRST_SUPERUSER | quote }}
63+
- name: FIRST_SUPERUSER_PASSWORD
64+
value: {{ .Values.backend.env.FIRST_SUPERUSER_PASSWORD | quote }}
65+
- name: FRONTEND_HOST
66+
value: {{ .Values.backend.env.FRONTEND_HOST | quote }}
67+
- name: SECRET_KEY
68+
value: {{ .Values.backend.env.SECRET_KEY | quote }}
69+
- name: BACKEND_CORS_ORIGINS
70+
value: {{ .Values.backend.env.BACKEND_CORS_ORIGINS | quote }}
71+
- name: SMTP_HOST
72+
value: {{ .Values.backend.env.SMTP_HOST | quote }}
73+
- name: SMTP_USER
74+
value: {{ .Values.backend.env.SMTP_USER | quote }}
75+
- name: SMTP_PASSWORD
76+
value: {{ .Values.backend.env.SMTP_PASSWORD | quote }}
77+
- name: EMAILS_FROM_EMAIL
78+
value: {{ .Values.backend.env.EMAILS_FROM_EMAIL | quote }}
79+
- name: SENTRY_DSN
80+
value: {{ .Values.backend.env.SENTRY_DSN | quote }}
81+
- name: POSTGRES_SERVER
82+
value: {{ .Values.backend.env.POSTGRES_SERVER | quote }}
83+
- name: POSTGRES_PORT
84+
value: {{ .Values.backend.env.POSTGRES_PORT | quote }}
85+
- name: POSTGRES_DB
86+
value: {{ .Values.backend.env.POSTGRES_DB | quote }}
87+
- name: POSTGRES_USER
88+
value: {{ .Values.backend.env.POSTGRES_USER | quote }}
89+
- name: POSTGRES_PASSWORD
90+
value: {{ .Values.backend.env.POSTGRES_PASSWORD | quote }}
91+
volumeMounts:
92+
- name: app-db-data
93+
mountPath: /app/data
94+
command: ["sh", "-c"]
95+
args:
96+
- |
97+
echo "Current directory: $(pwd)" &&
98+
echo "Python path: $PYTHONPATH" &&
99+
echo "Contents of /app: $(ls -la /app)" &&
100+
echo "Python version: $(python3.11 --version)" &&
101+
python3.11 -m app.backend_pre_start &&
102+
python3.11 -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --log-level debug
103+
startupProbe:
104+
httpGet:
105+
path: /api/v1/utils/health-check/
106+
port: http
107+
failureThreshold: 30
108+
periodSeconds: 10
109+
livenessProbe:
110+
httpGet:
111+
path: /api/v1/utils/health-check/
112+
port: http
113+
initialDelaySeconds: 30
114+
periodSeconds: 10
115+
failureThreshold: 3
116+
readinessProbe:
117+
httpGet:
118+
path: /api/v1/utils/health-check/
119+
port: http
120+
initialDelaySeconds: 5
121+
periodSeconds: 10
122+
failureThreshold: 3
123+
volumes:
124+
- name: app-db-data
125+
emptyDir: {}
126+
{{- end }}

k8s/templates/backend-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: {{ .Release.Name }}-backend
5+
labels:
6+
app.kubernetes.io/name: {{ .Release.Name }}-backend
7+
app.kubernetes.io/instance: {{ .Release.Name }}
8+
spec:
9+
type: {{ .Values.backend.service.type }}
10+
ports:
11+
- port: {{ .Values.backend.service.port }}
12+
targetPort: http
13+
protocol: TCP
14+
name: http
15+
selector:
16+
app.kubernetes.io/name: {{ .Release.Name }}-backend
17+
app.kubernetes.io/instance: {{ .Release.Name }}

k8s/templates/configmap.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: {{ .Release.Name }}-config
5+
data:
6+
DOMAIN: {{ .Values.global.domain | quote }}
7+
ENVIRONMENT: {{ .Values.global.environment | quote }}
8+
FRONTEND_HOST: {{ .Values.backend.env.FRONTEND_HOST | quote }}
9+
BACKEND_CORS_ORIGINS: {{ .Values.backend.env.BACKEND_CORS_ORIGINS | default "*" | quote }}
10+
SMTP_HOST: {{ .Values.backend.env.SMTP_HOST | default "" | quote }}
11+
EMAILS_FROM_EMAIL: {{ .Values.backend.env.EMAILS_FROM_EMAIL | default "" | quote }}
12+
POSTGRES_SERVER: {{ .Release.Name }}-db
13+
POSTGRES_PORT: "5432"
14+
SENTRY_DSN: {{ .Values.backend.env.SENTRY_DSN | default "" | quote }}
15+
DATABASE_URL: postgresql://{{ .Values.db.env.POSTGRES_USER }}:{{ .Values.db.env.POSTGRES_PASSWORD }}@{{ .Release.Name }}-db:5432/{{ .Values.db.env.POSTGRES_DB }}

k8s/templates/db-deployment.yaml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
{{- if .Values.db.enabled }}
2+
apiVersion: apps/v1
3+
kind: Deployment
4+
metadata:
5+
name: {{ .Release.Name }}-db
6+
labels:
7+
app.kubernetes.io/name: {{ .Release.Name }}-db
8+
app.kubernetes.io/instance: {{ .Release.Name }}
9+
spec:
10+
replicas: 1
11+
selector:
12+
matchLabels:
13+
app.kubernetes.io/name: {{ .Release.Name }}-db
14+
app.kubernetes.io/instance: {{ .Release.Name }}
15+
template:
16+
metadata:
17+
labels:
18+
app.kubernetes.io/name: {{ .Release.Name }}-db
19+
app.kubernetes.io/instance: {{ .Release.Name }}
20+
spec:
21+
containers:
22+
- name: postgres
23+
image: "{{ .Values.db.image.repository }}:{{ .Values.db.image.tag }}"
24+
imagePullPolicy: {{ .Values.db.image.pullPolicy }}
25+
ports:
26+
- name: postgres
27+
containerPort: 5432
28+
protocol: TCP
29+
envFrom:
30+
- secretRef:
31+
name: {{ .Release.Name }}-secrets
32+
- configMapRef:
33+
name: {{ .Release.Name }}-config
34+
env:
35+
- name: PGDATA
36+
value: /var/lib/postgresql/data/pgdata
37+
volumeMounts:
38+
- name: postgres-data
39+
mountPath: /var/lib/postgresql/data
40+
resources:
41+
{{- toYaml .Values.db.resources | nindent 12 }}
42+
livenessProbe:
43+
exec:
44+
command:
45+
- pg_isready
46+
- -U
47+
- "{{ .Values.db.env.POSTGRES_USER }}"
48+
- -d
49+
- "{{ .Values.db.env.POSTGRES_DB }}"
50+
initialDelaySeconds: 30
51+
periodSeconds: 10
52+
timeoutSeconds: 5
53+
successThreshold: 1
54+
failureThreshold: 3
55+
readinessProbe:
56+
exec:
57+
command:
58+
- pg_isready
59+
- -U
60+
- "{{ .Values.db.env.POSTGRES_USER }}"
61+
- -d
62+
- "{{ .Values.db.env.POSTGRES_DB }}"
63+
initialDelaySeconds: 5
64+
periodSeconds: 10
65+
timeoutSeconds: 5
66+
successThreshold: 1
67+
failureThreshold: 3
68+
volumes:
69+
- name: postgres-data
70+
persistentVolumeClaim:
71+
claimName: {{ .Release.Name }}-db-pvc
72+
{{- end }}

k8s/templates/db-pvc.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: {{ .Release.Name }}-db-pvc
5+
spec:
6+
accessModes:
7+
- ReadWriteOnce
8+
resources:
9+
requests:
10+
storage: {{ .Values.db.persistence.size | default "10Gi" }}

0 commit comments

Comments
 (0)