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: destination:
server: https://kubernetes.default.svc server: https://kubernetes.default.svc
namespace: my-apps namespace: my-apps
syncPolicy: syncPolicy: []
automated: # automated:
prune: true # prune: true
selfHeal: 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 kind: StatefulSet
metadata: metadata:
name: {{ .Release.Name }}-db name: {{ .Release.Name }}-db
labels:
app: {{ .Release.Name }}-db
spec: spec:
serviceName: {{ .Release.Name }}-headless serviceName: {{ .Release.Name }}-db-headless
replicas: 1 replicas: 1
selector: selector:
matchLabels: matchLabels:
app: {{ .Release.Name }} app: {{ .Release.Name }}-db
template: template:
metadata: metadata:
labels: labels:
app: {{ .Release.Name }} app: {{ .Release.Name }}-db
spec: spec:
containers: containers:
- name: postgres - name: postgres
image: {{ .Values.image }} image: {{ .Values.postgres.image }}
ports: ports:
- containerPort: 5432 - containerPort: 5432
name: postgres
env: env:
- name: POSTGRES_USER - name: POSTGRES_USER
value: {{ .Values.postgres.user | quote }} value: {{ .Values.postgres.user | quote }}
@ -33,10 +36,10 @@ spec:
name: data name: data
spec: spec:
accessModes: accessModes:
- {{ .Values.persistence.accessMode }} - {{ .Values.postgres.persistence.accessMode }}
resources: resources:
requests: requests:
storage: {{ .Values.persistence.size }} storage: {{ .Values.postgres.persistence.size }}
{{- if .Values.persistence.storageClass }} {{- if .Values.postgres.persistence.storageClass }}
storageClassName: {{ .Values.persistence.storageClass | quote }} storageClassName: {{ .Values.postgres.persistence.storageClass | quote }}
{{- end }} {{- 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: postgres:
image: postgres:16
user: recipes_user user: recipes_user
password: recipes_password # simple for POC password: recipes_password # POC only later use Secret/ExternalSecret
database: recipes_db database: recipes_db
service:
port: 5432 port: 5432
persistence: persistence:
enabled: true enabled: true
accessMode: ReadWriteOnce accessMode: ReadWriteOnce
storageClass: "nfs-client" # or your default SC storageClass: "nfs-client"
size: 8Gi size: 8Gi