01. October 2023
Enoncé TP 7
TP7 : Multi env w/ Namespace
🇫🇷 Version Française
Namespace
Jusque là, les ressources ont été créé dans le namespace par défault car aucun n’a été spécifié.
Ajouter un namespace form-k8s-dev, avec une label représentant l’environnement (env: dev).
Recréér toutes les ressources applicatives exceptés le app-ingress sur le nouveau namespace sans supprimer les anciennes, le but et d’avoir deux instances de l’application qui tourne en parralléle sur le cluster.
Récapitulatif de ce qui doit etre recréé sur le bon namespace:
- mongo secret
- mongo statefulset
- mongo service
- back secret
- back configmap
- back deployment
- back service
- front deployment
- front service
Ingress
L’Ingress va devoir contenir deux routes:
VM_IP/env/VM_IP/env/api/
Un seul ingress est nécessaire car le front et backend vont répondre sur le même basepath (/env). Voir ennoncé du TP4 pour rappel.
Attention le frontend doit utiliser la version 1.1 de l’image. (la version 1.0 ne répondra pas derrière un subpath)
Pour différencier les environnements via le frontend vous pouvez ajouter une variable d’environnement au deployment frontend
Attention cette variable doit avoir comme clé “env” et comme valeur “dev” ça va venir remplacer la valeur par défaut que vous allez voir apparaitre dans votre navigateur avec la version 1.1 de l’image.
Cet ajout est uniquement cosmétique et n’a aucune influence sur le comportement de l’application
Vous devriez avoir un block de variable d’environnement comme celui ci :
1env:
2 - name: env
3 value: dev
Limite de l’application
L’application doit répondre sur l’url : VM_IP/env/ avec le dernier / car les compétences en react du formateur ne permettent pas de faire répondre l’application sur VM_IP/env.
🇬🇧 English version
Namespace
Until now, the resources have been created in the default namespace because none have been specified.
Add a namespace form-k8s-dev, with a label representing the environment (env:dev).
Recreate all application resources except the app-ingress on the new namespace without deleting the old ones, the goal is to have two complete instances of the application running in parallel on the cluster.
Summary of what must be recreated on the correct namespace:
- secret mongo
- mongo statefulset
- mongo service
- back secret
- back configmap
- back deployment
- back service
- front deployment
- front service
Ingress
The Ingress will have to contain two paths:
VM_IP/env/VM_IP/env/api/
Only one ingress is necessary because the front and backend will respond on the same basepath (/env). See TP4 statement as a reminder.
Warning the frontend must use version 1.1 of the image. (version 1.0 will not respond behind a subpath)
To differentiate the environments via the frontend you can add an environment variable to the frontend deployment of the form: “env: dev” by default in your browser your frontend (in version 1.1) will have a env: Default, put the env variable will override this value.
You should have an environment variable block like this one :
1env:
2 - name: env
3 value: dev
Application limit (sorry)
The application must respond on the url: VM_IP/env/ with the last / because the trainer’s react skills do not allow the application to respond on VM_IP/env… :)