Add full helm for my-recipes app

This commit is contained in:
dvirlabs 2025-11-30 04:45:32 +02:00
parent 14a099ac4a
commit b387b7ab6d
11 changed files with 89 additions and 33 deletions

View File

@ -15,7 +15,7 @@ spec:
destination:
server: https://kubernetes.default.svc
namespace: my-apps
syncPolicy:
automated:
prune: true
selfHeal: true
syncPolicy: []
# automated:
# prune: true
# selfHeal: true

View File

@ -0,0 +1,26 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-backend
labels:
app: {{ .Release.Name }}-backend
spec:
replicas: {{ .Values.backend.replicas }}
selector:
matchLabels:
app: {{ .Release.Name }}-backend
template:
metadata:
labels:
app: {{ .Release.Name }}-backend
spec:
containers:
- name: backend
image: "{{ .Values.backend.image.repository }}:{{ .Values.backend.image.tag }}"
imagePullPolicy: {{ .Values.backend.image.pullPolicy }}
ports:
- containerPort: 8000
name: http
envFrom:
- secretRef:
name: {{ .Release.Name }}-db-credentials

View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-db-credentials
type: Opaque
stringData:
DB_HOST: {{ printf "%s-db-headless.%s.svc.cluster.local" .Release.Name .Release.Namespace }}
DB_PORT: "{{ .Values.postgres.port }}"
DB_NAME: {{ .Values.postgres.database | quote }}
DB_USER: {{ .Values.postgres.user | quote }}
DB_PASSWORD: {{ .Values.postgres.password | quote }}

View File

@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-db-headless
labels:
app: {{ .Release.Name }}-db
spec:
clusterIP: None
selector:
app: {{ .Release.Name }}-db
ports:
- name: postgres
port: {{ .Values.postgres.port }}
targetPort: 5432

View File

@ -2,22 +2,25 @@ apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ .Release.Name }}-db
labels:
app: {{ .Release.Name }}-db
spec:
serviceName: {{ .Release.Name }}-headless
serviceName: {{ .Release.Name }}-db-headless
replicas: 1
selector:
matchLabels:
app: {{ .Release.Name }}
app: {{ .Release.Name }}-db
template:
metadata:
labels:
app: {{ .Release.Name }}
app: {{ .Release.Name }}-db
spec:
containers:
- name: postgres
image: {{ .Values.image }}
image: {{ .Values.postgres.image }}
ports:
- containerPort: 5432
name: postgres
env:
- name: POSTGRES_USER
value: {{ .Values.postgres.user | quote }}
@ -33,10 +36,10 @@ spec:
name: data
spec:
accessModes:
- {{ .Values.persistence.accessMode }}
- {{ .Values.postgres.persistence.accessMode }}
resources:
requests:
storage: {{ .Values.persistence.size }}
{{- if .Values.persistence.storageClass }}
storageClassName: {{ .Values.persistence.storageClass | quote }}
storage: {{ .Values.postgres.persistence.size }}
{{- if .Values.postgres.persistence.storageClass }}
storageClassName: {{ .Values.postgres.persistence.storageClass | quote }}
{{- end }}

View File

@ -1,11 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-headless
spec:
clusterIP: None
selector:
app: {{ .Release.Name }}
ports:
- port: {{ .Values.service.port }}
targetPort: 5432

View File

@ -1,15 +1,28 @@
image: postgres:16
# Backend image
backend:
image:
repository: registry.dvirlabs.com/my-recipes/backend
tag: v1.0.0
pullPolicy: IfNotPresent
replicas: 1
# Frontend image
frontend:
image:
repository: registry.dvirlabs.com/my-recipes/frontend
tag: v1.0.0
pullPolicy: IfNotPresent
replicas: 1
# Postgres DB
postgres:
image: postgres:16
user: recipes_user
password: recipes_password # simple for POC
password: recipes_password # POC only later use Secret/ExternalSecret
database: recipes_db
service:
port: 5432
persistence:
persistence:
enabled: true
accessMode: ReadWriteOnce
storageClass: "nfs-client" # or your default SC
storageClass: "nfs-client"
size: 8Gi