01. October 2023
Solution TP 4
TP4 : Backend
🇫🇷 Version Française
Deployment
Manifest du deployment :
1kind: Deployment
2apiVersion: apps/v1
3metadata:
4 name: back-training-app
5spec:
6 replicas: 2
7 selector:
8 matchLabels:
9 app: back-training-app
10 template:
11 metadata:
12 labels:
13 app: back-training-app
14 spec:
15 containers:
16 - name: back-training-app
17 image: axelpereira/k8s-training-test-app-back:1.0
18 imagePullPolicy: IfNotPresent
19 env:
20 - name: MONGO_HOSTNAME
21 value: mongo.form-k8s.svc.cluster.local
22 - name: MONGO_PORT
23 value: '27017'
24 - name: MONGO_DB
25 value: training
Service
Manifest du service :
1kind: Service
2apiVersion: v1
3metadata:
4 name: back-training-app
5spec:
6 ports:
7 - port: 80
8 targetPort: 5000
9 selector:
10 app: back-training-app
Ingress applciatif
Deux façons de faire :
Première façon : Deux routes dans le même ingress, possible mais pas facile à faire évoluer.
1apiVersion: networking.k8s.io/v1
2kind: Ingress
3metadata:
4 name: app-ingress
5 annotations:
6 nginx.ingress.kubernetes.io/rewrite-target: /$1
7spec:
8 rules:
9 - http:
10 paths:
11 - path: /(.*)
12 pathType: ImplementationSpecific
13 backend:
14 service:
15 name: front-training-app
16 port:
17 number: 80
18 - path: /api/(.*)
19 pathType: ImplementationSpecific
20 backend:
21 service:
22 name: back-training-app
23 port:
24 number: 80
Deuxième façon : deux ingress, permet de découper et de customizé plus facilement les régles à définir (utile pour la suite), la bonne pratique est de respecter cette solution car le front n’a pour l’instant pas besoin d’un “rewrite-target”.
1apiVersion: networking.k8s.io/v1
2kind: Ingress
3metadata:
4 name: app-ingress-front
5spec:
6 rules:
7 - http:
8 paths:
9 - path: /
10 pathType: Prefix
11 backend:
12 service:
13 name: front-training-app
14 port:
15 number: 80
16
17---
18apiVersion: networking.k8s.io/v1
19kind: Ingress
20metadata:
21 name: app-ingress-back
22 annotations:
23 nginx.ingress.kubernetes.io/rewrite-target: /$1
24spec:
25 rules:
26 - http:
27 paths:
28 - path: /api/(.*)
29 pathType: ImplementationSpecific
30 backend:
31 service:
32 name: back-training-app
33 port:
34 number: 80
🇬🇧 English version
Deployment
Deployment manifest :
1kind: Deployment
2apiVersion: apps/v1
3metadata:
4 name: back-training-app
5spec:
6 replicas: 2
7 selector:
8 matchLabels:
9 app: back-training-app
10 template:
11 metadata:
12 labels:
13 app: back-training-app
14 spec:
15 containers:
16 - name: back-training-app
17 image: axelpereira/k8s-training-test-app-back:1.0
18 imagePullPolicy: IfNotPresent
19 env:
20 - name: MONGO_HOSTNAME
21 value: mongo.form-k8s.svc.cluster.local
22 - name: MONGO_PORT
23 value: '27017'
24 - name: MONGO_DB
25 value: training
Service
Service manifest :
1kind: Service
2apiVersion: v1
3metadata:
4 name: back-training-app
5spec:
6 ports:
7 - port: 80
8 targetPort: 5000
9 selector:
10 app: back-training-app
Ingress applciatif
Two ways to do :
First way : Two paths in the same ingress, possible but difficult to maintain.
1apiVersion: networking.k8s.io/v1
2kind: Ingress
3metadata:
4 name: app-ingress
5 annotations:
6 nginx.ingress.kubernetes.io/rewrite-target: /$1
7spec:
8 rules:
9 - http:
10 paths:
11 - path: /(.*)
12 pathType: ImplementationSpecific
13 backend:
14 service:
15 name: front-training-app
16 port:
17 number: 80
18 - path: /api/(.*)
19 pathType: ImplementationSpecific
20 backend:
21 service:
22 name: back-training-app
23 port:
24 number: 80
Second way: two ingress, makes it easier to cut and customize the rules to be defined (useful for the future), the good practice is to respect this solution because the front does not currently need a “rewrite -target”.
1apiVersion: networking.k8s.io/v1
2kind: Ingress
3metadata:
4 name: app-ingress-front
5spec:
6 rules:
7 - http:
8 paths:
9 - path: /
10 pathType: Prefix
11 backend:
12 service:
13 name: front-training-app
14 port:
15 number: 80
16
17---
18apiVersion: networking.k8s.io/v1
19kind: Ingress
20metadata:
21 name: app-ingress-back
22 annotations:
23 nginx.ingress.kubernetes.io/rewrite-target: /$1
24spec:
25 rules:
26 - http:
27 paths:
28 - path: /api/(.*)
29 pathType: ImplementationSpecific
30 backend:
31 service:
32 name: back-training-app
33 port:
34 number: 80