From 5ad43ba5697f81e101d3365457962d8a41f2ffd9 Mon Sep 17 00:00:00 2001
From: Etienne <elanglois@takima.fr>
Date: Wed, 14 Aug 2024 16:17:03 +0200
Subject: [PATCH] feat: front, back, db operationels

---
 .../day-3/step-1/templates/api-config.yaml    |  8 +++
 .../step-1/templates/api-deployment.yaml      | 65 +++++++++++++++++++
 .../day-3/step-1/templates/api-ingress.yaml   | 26 ++++++++
 .../day-3/step-1/templates/api-service.yaml   | 13 ++++
 .../day-3/step-1/templates/pg-config.yaml     |  9 +++
 .../step-1/templates/pg-credentials.yaml      | 10 +++
 .../day-3/step-1/templates/pg-deployment.yaml | 58 +++++++++++++++++
 .../day-3/step-1/templates/pg-service.yaml    | 13 ++++
 .../boilerplate/day-3/step-1/values.yaml      | 20 ++++--
 9 files changed, 218 insertions(+), 4 deletions(-)
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-config.yaml
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-deployment.yaml
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-ingress.yaml
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-service.yaml
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-config.yaml
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-credentials.yaml
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-deployment.yaml
 create mode 100644 k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-service.yaml

diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-config.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-config.yaml
new file mode 100644
index 0000000..57073b5
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-config.yaml
@@ -0,0 +1,8 @@
+{{- if .Values.api.enabled }}  
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ .Values.name}}-api
+data:
+  dbEndpoint: {{ .Values.name}}-db:5432
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-deployment.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-deployment.yaml
new file mode 100644
index 0000000..806dd20
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-deployment.yaml
@@ -0,0 +1,65 @@
+{{- if .Values.api.enabled }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ .Values.name }}-api
+  labels:
+    app: api
+spec:
+  replicas: {{ .Values.api.replicaCount }}
+  selector:
+    matchLabels:
+      app: api
+  template:
+    metadata:
+      labels:
+        app: api
+    spec:
+      containers:
+      - name: api
+        image: {{ .Values.api.image.repository }}:{{ .Values.api.image.tag }}
+        resources:
+          limits:
+            memory: "256Mi"
+            cpu: "2"
+          requests:
+            memory: "192Mi"
+            cpu: "100m"
+        ports:
+        - containerPort: 8080
+        livenessProbe:
+          httpGet:
+            path: /actuator/health/liveness
+            port: 8080
+          initialDelaySeconds: 10
+          periodSeconds: 15
+        readinessProbe:
+          httpGet:
+            path: /actuator/health/readiness
+            port: 8080
+          initialDelaySeconds: 10
+          periodSeconds: 15
+        env: 
+          - name: DB_ENDPOINT
+            valueFrom:
+              configMapKeyRef:
+                key: dbEndpoint
+                name: {{ .Values.name }}-api
+          - name: POSTGRES_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                key: password
+                name: pg-credentials
+          - name: POSTGRES_USER
+            valueFrom:
+              secretKeyRef:
+                key: username
+                name: pg-credentials
+          - name: POSTGRES_DB
+            valueFrom:
+              configMapKeyRef:
+                key: dataBaseName
+                name: {{ .Values.name }}-db
+      imagePullSecrets:
+        - name: takima-school-registry
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-ingress.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-ingress.yaml
new file mode 100644
index 0000000..9399d06
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-ingress.yaml
@@ -0,0 +1,26 @@
+{{- if .Values.api.enabled }}
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  name: {{ .Values.name }}-api
+  labels:
+    name: api
+spec:
+  rules:
+  - host: {{ .Values.api.ingress.host }}
+    http:
+      paths:
+      - pathType: Prefix
+        path: "/"
+        backend:
+          service:
+            name: {{ .Values.name }}-api
+            port: 
+              number: 80
+  {{- if .Values.api.ingress.tlsEnabled }}
+  tls:
+  - hosts:
+      - {{ .Values.api.ingress.host }}
+    secretName: app-wildcard
+  {{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-service.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-service.yaml
new file mode 100644
index 0000000..ca86170
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/api-service.yaml
@@ -0,0 +1,13 @@
+{{- if .Values.api.enabled }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ .Values.name }}-api
+spec:
+  selector:
+    app: api
+  ports:
+  - protocol: TCP
+    port: 80
+    targetPort: 8080
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-config.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-config.yaml
new file mode 100644
index 0000000..d5f0f59
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-config.yaml
@@ -0,0 +1,9 @@
+{{- if .Values.db.enabled }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ .Values.name }}-db
+data:
+  dataBaseName: "cdb-db"
+  db_path: "/var/lib/postgresql/data/pgdata"
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-credentials.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-credentials.yaml
new file mode 100644
index 0000000..6a4e540
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-credentials.yaml
@@ -0,0 +1,10 @@
+{{- if .Values.db.enabled }}
+apiVersion: v1
+kind: Secret
+metadata:
+  name: {{ .Values.name }}-db
+type: Opaque
+data:
+  username: 'dXNlcg=='
+  password: 'cGFzc3dvcmQ='
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-deployment.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-deployment.yaml
new file mode 100644
index 0000000..b43bc77
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-deployment.yaml
@@ -0,0 +1,58 @@
+{{- if .Values.db.enabled }}
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: {{ .Values.name }}-db
+  labels:
+    app: db
+spec:
+  replicas: {{ .Values.api.replicaCount}}
+  selector:
+    matchLabels:
+      app: db
+  template:
+    metadata:
+      labels:
+        app: db
+    spec:
+      volumes:
+      - name: pg-data
+        persistentVolumeClaim:
+          claimName: pg-db
+      containers:
+      - name: cdb-db
+        image: {{ .Values.db.image.repository }}:{{ .Values.db.image.tag }}
+        volumeMounts:
+        - mountPath: /var/lib/postgresql/data
+          name: pg-data
+        resources:
+          limits:
+            memory: "256Mi"
+            cpu: "1"
+          requests:
+            memory: "192Mi"
+            cpu: "100m"
+        ports:
+        - containerPort: 5432
+        env:
+          - name: POSTGRES_PASSWORD
+            valueFrom:
+              secretKeyRef:
+                key: password
+                name: {{ .Values.name}}-db
+          - name: POSTGRES_USER
+            valueFrom:
+              secretKeyRef:
+                key: username
+                name: {{ .Values.name}}-db
+          - name: POSTGRES_DB
+            valueFrom:
+              configMapKeyRef:
+                key: dataBaseName
+                name: {{ .Values.name}}-db
+          - name: PGDATA
+            valueFrom:
+              configMapKeyRef:
+                name: {{ .Values.name}}-db  # Nom du configmap
+                key: db_path     # nom de la clef dans le configMap contenant path ou installer la db dans le volume persistant
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-service.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-service.yaml
new file mode 100644
index 0000000..330780b
--- /dev/null
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/templates/pg-service.yaml
@@ -0,0 +1,13 @@
+{{- if .Values.db.enabled }}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ .Values.name}}-db
+spec:
+  selector:
+    app: db
+  ports:
+  - protocol: TCP
+    port: 5432
+    targetPort: 5432
+{{- end }}
\ No newline at end of file
diff --git a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/values.yaml b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/values.yaml
index 9ab42ef..a0de553 100644
--- a/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/values.yaml
+++ b/k8s-trainees-main-boilerplate-day-3-step-1/boilerplate/day-3/step-1/values.yaml
@@ -5,9 +5,14 @@
 name: cdb
 
 api:
+  enabled: true
   ingress:
-    tlsEnabled: false
-    host: api.to-replace.takima.school
+    tlsEnabled: true
+    host: api.elanglois.takima.school
+  replicaCount: 1
+  image:
+    repository: registry.gitlab.com/takima-school/images/cdb/api
+    tag: latest
 
 front:
   enabled: true
@@ -16,5 +21,12 @@ front:
     tag: latest
   replicaCount: 1
   ingress:
-    tlsEnabled: false
-    host: www.to-replace.takima.school
\ No newline at end of file
+    tlsEnabled: true
+    host: www.elanglois.takima.school
+
+db:
+  enabled: true
+  replicaCount: 1
+  image:
+    tag: latest
+    repository: registry.takima.io/school/proxy/postgres
-- 
GitLab