First learning config files

This commit is contained in:
2026-02-26 15:37:51 +01:00
parent 36901a8be6
commit 0a6fc9ffe8
8 changed files with 305 additions and 0 deletions

19
01-premier-pas.yaml Normal file
View File

@@ -0,0 +1,19 @@
apiVersion: apps/v1
kind: Deployment # kind => Le genre
metadata:
name: mon-application # Le nom du groupe
spec:
replicas: 3 # On veut 3 copies
selector:
matchLabels:
app: apprentissage # C'est le "tag" qui lie le goupe aux pods
template:
metadata:
labels:
app: apprentissage # Le tag collé sur chaque pod
spec:
containers:
- name: web-conainter
image: nginxdemos/hello # Image fun qui affiche l'@IP du pod
ports:
- containerPort: 80

12
02-service.yaml Normal file
View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: mon-service-apprentissage # Le nom du "Standardiste"
spec:
selector:
app: apprentissage # IMPORTANT: Doit correspondre exactement au label du Deployment
ports:
- protocol: TCP
port: 80 # Port sur lequel Service écoute
targetPort: 80 # Port sur lequel Pod écoute
type: ClusterIP

25
03-ingress.yaml Normal file
View File

@@ -0,0 +1,25 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-apprentissage
annotations:
# On dit à cert-manager d'utiliser ton émetteur Step-CA
cert-manager.io/cluster-issuer: "step-ca-issuer"
# On force la redirection vers le HTTPS
traefik.ingress.kubernetes.io/routeur.entrypoints: websecure
spec:
tls:
- hosts:
- apprentissage.teyssier.lan
secretName: apprentissage-tls # Nom secret stockant le certificat
rules:
- host: apprentissage.teyssier.lan
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mon-service-apprentissage # On pointe vers le service du Module 02
port:
number: 80

36
04-stockage.yaml Normal file
View File

@@ -0,0 +1,36 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-apprentissage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
storageClassName: local-path
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-memoire
spec:
replicas: 1
selector:
matchLabels:
app: memoire
template:
metadata:
labels:
app: memoire
spec:
containers:
- name: nginx
image: nginx:latest
volumeMounts:
- name: stockage-web
mountPath: /usr/share/nginx/html # Plug disk here
volumes:
- name: stockage-web
persistentVolumeClaim:
claimName: pvc-apprentissage

70
05-final copy.yaml Normal file
View File

@@ -0,0 +1,70 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-apprentissage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
storageClassName: local-path
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-final
spec:
replicas: 2 #Pour la HA, Toujours 2 de UP
selector:
matchLabels:
app: prod
template:
metadata:
labels:
app: prod
spec:
containers:
- name: nginx
image: nginx:latest
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumes:
- name: data
persistentVolumeClaim:
claimName: pvc-apprentissage
---
apiVersion: v1
kind: Service
metadata:
name: svc-finale
spec:
ports:
- port: 80
targetPort: 80
selector:
app: prod
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-finale
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
tls:
- hosts:
- apprentissage.teyssier.lan
secretName: apprentissage-tls
rules:
- host: apprentissage.teyssier.lan
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: svc-finale
port:
number: 80

72
06-web-memo.yaml Normal file
View File

@@ -0,0 +1,72 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-apprentissage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi # Memos a besoin d'un peu plus de place pour la DB
storageClassName: local-path
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-memos
spec:
replicas: 1 # Pour les bases de données type SQLite, on reste sur 1 pod pour éviter la corruption
selector:
matchLabels:
app: notes
template:
metadata:
labels:
app: notes
spec:
containers:
- name: memos
image: neosmemo/memos:stable
ports:
- containerPort: 5230
volumeMounts:
- name: data
mountPath: /var/opt/memos # Chemin où Memos stocke sa base de données
volumes:
- name: data
persistentVolumeClaim:
claimName: pvc-apprentissage
---
apiVersion: v1
kind: Service
metadata:
name: svc-notes
spec:
ports:
- port: 80
targetPort: 5230 # Memos écoute sur le 5230 par défaut
selector:
app: notes
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-notes
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
tls:
- hosts:
- apprentissage.teyssier.lan
secretName: apprentissage-tls
rules:
- host: apprentissage.teyssier.lan
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: svc-notes
port:
number: 80

60
project/memo.yaml Normal file
View File

@@ -0,0 +1,60 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-memos
spec:
replicas: 1 # Pour les bases de données type SQLite, on reste sur 1 pod pour éviter la corruption
selector:
matchLabels:
app: notes
template:
metadata:
labels:
app: notes
spec:
containers:
- name: memos
image: neosmemo/memos:stable
ports:
- containerPort: 5230
volumeMounts:
- name: data
mountPath: /var/opt/memos # Chemin où Memos stocke sa base de données
volumes:
- name: data
persistentVolumeClaim:
claimName: pvc-apprentissage
---
apiVersion: v1
kind: Service
metadata:
name: svc-notes
spec:
ports:
- port: 80
targetPort: 5230 # Memos écoute sur le 5230 par défaut
selector:
app: notes
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-notes
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
spec:
tls:
- hosts:
- apprentissage.teyssier.lan
secretName: apprentissage-tls
rules:
- host: apprentissage.teyssier.lan
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: svc-notes
port:
number: 80

11
project/stockage.yaml Normal file
View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-apprentissage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi # Memos a besoin d'un peu plus de place pour la DB
storageClassName: local-path