From 5862ad22c1419be4bb5520e6d012fad0bec34473 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20S=C3=A9journ=C3=A9?= <asejourne@takima.fr>
Date: Wed, 2 Aug 2023 15:43:21 +0200
Subject: [PATCH] templating du nom avec la version

---
 templates/api-config.yml       |  6 ++++
 templates/api-deployment.yml   | 50 ++++++++++++++++++++++++++++
 templates/api-ingress.yml      | 18 ++++++++++
 templates/api-service.yml      | 11 +++++++
 templates/front-config.yml     | 18 +++++-----
 templates/front-deployment.yml |  8 ++---
 templates/front-ingress.yml    | 12 +++----
 templates/front-service.yml    |  6 ++--
 templates/helper.tpl           |  4 +++
 templates/pg-config.yml        |  7 ++++
 templates/pg-credentials.yml   |  8 +++++
 templates/pg-service.yml       | 11 +++++++
 templates/pg-statefulSet.yml   | 60 ++++++++++++++++++++++++++++++++++
 13 files changed, 197 insertions(+), 22 deletions(-)
 create mode 100644 templates/api-config.yml
 create mode 100644 templates/api-deployment.yml
 create mode 100644 templates/api-ingress.yml
 create mode 100644 templates/api-service.yml
 create mode 100644 templates/helper.tpl
 create mode 100644 templates/pg-config.yml
 create mode 100644 templates/pg-credentials.yml
 create mode 100644 templates/pg-service.yml
 create mode 100644 templates/pg-statefulSet.yml

diff --git a/templates/api-config.yml b/templates/api-config.yml
new file mode 100644
index 0000000..73808c7
--- /dev/null
+++ b/templates/api-config.yml
@@ -0,0 +1,6 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{include "name" .}}-api-config
+data:
+  endpoint: {{include "name" .}}-pg-service:5432
diff --git a/templates/api-deployment.yml b/templates/api-deployment.yml
new file mode 100644
index 0000000..b93bded
--- /dev/null
+++ b/templates/api-deployment.yml
@@ -0,0 +1,50 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  labels:
+    app: {{include "name" .}}-api-deployment
+  name: {{include "name" .}}-api-deployment
+spec:
+  replicas: 3
+  selector:
+    matchLabels:
+      app: {{include "name" .}}-api-deployment
+  strategy: {}
+  template:
+    metadata:
+      labels:
+        app: {{include "name" .}}-api-deployment
+    spec:
+      containers:
+        - image: registry.gitlab.com/takima-school/images/cdb/api:latest
+          name: simple-app
+          resources: 
+            limits:
+              memory: "720Mi"
+              cpu: "390m"
+          ports:
+            - containerPort: 8080
+          env:
+            - name: POSTGRES_DB
+              valueFrom:
+                configMapKeyRef:
+                  name: pg-config
+                  key: name
+            - name: POSTGRES_USER
+              valueFrom:
+                secretKeyRef:
+                  name: db-secret
+                  key: user
+            - name: POSTGRES_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: db-secret
+                  key: password
+            - name: DB_ENDPOINT
+              valueFrom:
+                configMapKeyRef:
+                  name: api-config
+                  key: endpoint
+      imagePullSecrets:
+        - name: takima-school-registry
+status: {}
diff --git a/templates/api-ingress.yml b/templates/api-ingress.yml
new file mode 100644
index 0000000..bee2217
--- /dev/null
+++ b/templates/api-ingress.yml
@@ -0,0 +1,18 @@
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+  annotations:
+    kubernetes.io/ingress.class: nginx
+  name: {{include "name" .}}-api-ingress
+spec:
+  rules:
+    - host: api.asejourne.takima.school
+      http:
+        paths:
+          - backend:
+              service:
+                name: {{include "name" .}}-api-service
+                port:
+                  number: 80
+            path: /
+            pathType: Prefix
diff --git a/templates/api-service.yml b/templates/api-service.yml
new file mode 100644
index 0000000..c1bb768
--- /dev/null
+++ b/templates/api-service.yml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{include "name" .}}-api-service
+spec:
+  selector:
+    app: {{include "name" .}}-api-deployment
+  ports:
+    - protocol: TCP
+      port: 80
+      targetPort: 8080
diff --git a/templates/front-config.yml b/templates/front-config.yml
index da89df7..a4f9906 100644
--- a/templates/front-config.yml
+++ b/templates/front-config.yml
@@ -1,14 +1,14 @@
-{{- if .Values.front.enabled }}  
-  {{- $apiUrl := "" }}  
-  {{- if .Values.api.ingress.tlsEnabled }}  
-    {{- $apiUrl = printf "https://%s" .Values.api.ingress.host | quote }}  
-  {{- else }}  
-    {{- $apiUrl = printf "http://%s" .Values.api.ingress.host | quote }}  
-  {{- end }}  
+{{- if .Values.front.enabled -}}  
+  {{- $apiUrl := "" -}}  
+  {{- if .Values.api.ingress.tlsEnabled -}}  
+    {{- $apiUrl = printf "https://%s" .Values.api.ingress.host | quote -}}  
+  {{- else -}}  
+    {{- $apiUrl = printf "http://%s" .Values.api.ingress.host | quote -}}  
+  {{- end -}}  
 apiVersion: v1  
 kind: ConfigMap  
 metadata:  
-  name: {{ .Values.name }}-front  
+  name: {{ include "name" . }}-front  
 data:  
   API_URL: {{ $apiUrl }}  
-{{- end }}
\ No newline at end of file
+{{- end -}}
\ No newline at end of file
diff --git a/templates/front-deployment.yml b/templates/front-deployment.yml
index fa7c697..6774818 100644
--- a/templates/front-deployment.yml
+++ b/templates/front-deployment.yml
@@ -1,8 +1,8 @@
-{{- if .Values.front.enabled }}
+{{- if .Values.front.enabled -}}
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  name: {{ .Values.name }}-front
+  name: {{ include "name" . }}-front
   labels:
     app: front
 spec:
@@ -63,6 +63,6 @@ spec:
           - name: API_URL
             valueFrom:
               configMapKeyRef:
-                name: {{ .Values.name }}-front
+                name: {{ include "name" . }}-front
                 key: API_URL
-{{- end }}
\ No newline at end of file
+{{- end -}}
\ No newline at end of file
diff --git a/templates/front-ingress.yml b/templates/front-ingress.yml
index 8513bb5..c081063 100644
--- a/templates/front-ingress.yml
+++ b/templates/front-ingress.yml
@@ -1,10 +1,10 @@
-{{- if .Values.front.enabled }}
+{{- if .Values.front.enabled -}}
 apiVersion: networking.k8s.io/v1
 kind: Ingress
 metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
- name: {{ .Values.name }}-front
+ name: {{ include "name" . }}-front
 spec:
   rules:
   - host: {{ .Values.front.ingress.host }}
@@ -12,15 +12,15 @@ spec:
       paths:
       - backend:
           service:
-            name: {{ .Values.name }}-front
+            name: {{ include "name" . }}-front
             port:
               number: 80
         path: /
         pathType: Prefix
-  {{- if .Values.front.ingress.tlsEnabled }}
+  {{- if .Values.front.ingress.tlsEnabled -}}
   tls:
   - hosts:
       - {{ .Values.front.ingress.host }}
     secretName: app-wildcard
-  {{- end }}
-{{- end }}
\ No newline at end of file
+  {{- end -}}
+{{- end -}}
\ No newline at end of file
diff --git a/templates/front-service.yml b/templates/front-service.yml
index 8031d1a..50a46db 100644
--- a/templates/front-service.yml
+++ b/templates/front-service.yml
@@ -1,8 +1,8 @@
-{{- if .Values.front.enabled }}
+{{- if .Values.front.enabled -}}
 apiVersion: v1
 kind: Service
 metadata:
-  name: {{ .Values.name }}-front
+  name: {{ include "name" . }}-front
 spec:
   selector:
     app: front
@@ -10,4 +10,4 @@ spec:
     - protocol: TCP
       port: 80
       targetPort: 8080
-{{- end }}
\ No newline at end of file
+{{- end -}}
\ No newline at end of file
diff --git a/templates/helper.tpl b/templates/helper.tpl
new file mode 100644
index 0000000..3665e79
--- /dev/null
+++ b/templates/helper.tpl
@@ -0,0 +1,4 @@
+{{- define "name" -}}
+{{- $name := default .Chart.Name .Values.name -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
\ No newline at end of file
diff --git a/templates/pg-config.yml b/templates/pg-config.yml
new file mode 100644
index 0000000..d759247
--- /dev/null
+++ b/templates/pg-config.yml
@@ -0,0 +1,7 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: pg-config
+data:
+  name: "db"
+  db_path: "/var/lib/postgresql/data/pgdata"
diff --git a/templates/pg-credentials.yml b/templates/pg-credentials.yml
new file mode 100644
index 0000000..642c1b0
--- /dev/null
+++ b/templates/pg-credentials.yml
@@ -0,0 +1,8 @@
+apiVersion: v1
+kind: Secret
+metadata:
+  name: db-secret
+type: Opaque
+data:
+  user: ZGItdXNlcg==
+  password: ZGItcGFzc3dvcmQ=
\ No newline at end of file
diff --git a/templates/pg-service.yml b/templates/pg-service.yml
new file mode 100644
index 0000000..ec145da
--- /dev/null
+++ b/templates/pg-service.yml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{include "name" .}}-pg-service
+spec:
+  selector:
+    app: {{include "name" .}}-pg-deployment
+  ports:
+    - protocol: TCP
+      port: 5432
+      targetPort: 5432
diff --git a/templates/pg-statefulSet.yml b/templates/pg-statefulSet.yml
new file mode 100644
index 0000000..e332e7b
--- /dev/null
+++ b/templates/pg-statefulSet.yml
@@ -0,0 +1,60 @@
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  labels:
+    app: {{include "name" .}}-pg-deployment
+  name: {{include "name" .}}-pg-deployment
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: {{include "name" .}}-pg-deployment
+  serviceName: {{include "name" .}}-pg-service
+  template:
+    metadata:
+      labels:
+        app: {{include "name" .}}-pg-deployment
+    spec:
+      containers:
+        - image: registry.takima.io/school/proxy/postgres:latest
+          volumeMounts:
+          - mountPath: /var/lib/postgresql/data
+            name: {{include "name" .}}-pg-data
+          name: {{include "name" .}}-pg
+          resources: 
+            limits:
+              memory: "512Mi"
+              cpu: "390m"
+          ports:
+            - containerPort: 5432
+          env:
+            - name: POSTGRES_DB
+              valueFrom:
+                configMapKeyRef:
+                  name: pg-config
+                  key: name
+            - name: POSTGRES_USER
+              valueFrom:
+                secretKeyRef:
+                  name: db-secret
+                  key: user
+            - name: POSTGRES_PASSWORD
+              valueFrom:
+                secretKeyRef:
+                  name: db-secret
+                  key: password
+            - name: PGDATA
+              valueFrom:
+                configMapKeyRef:
+                  name: pg-config
+                  key: db_path
+      imagePullSecrets:
+        - name: takima-school-registry
+  volumeClaimTemplates:
+  - metadata:
+      name: {{include "name" .}}-pg-data
+    spec:
+      accessModes: [ "ReadWriteOnce" ]
+      resources:
+        requests:
+          storage: 1Gi
-- 
GitLab