Intégration continue de l'application conteneurisée
De quoi s'agit-il ?
Ce projet fait suite au projet de développement d'applications conteneurisées.
Notre MVP étant développée et fonctionnelle, il nous fallait inclure la philosophie DevOps.
Pour ce faire, nous avions plusieurs objectifs :
- Installer un nouveau cluster single-node k3s avec :
- Une forge GitLab
- Un runner GitLab (runner k8s)
- Une instance de ArgoCD
- Une instance de Harbor
- Développer une pipeline permettant de :
- Tester le fonctionnement du code
- Tester la qualité du code
- Compiler automatiquement et pousser les images docker sur l'instance Harbor
- Scanner les vulnérabilités du code et des images via sbom/trivy
- Déployer l'application via un chart Helm et l'instance ArgoCD sur un cluster de prod
- Générer de la documentation via sphinx
- Déployer la documentation via pages
Le tout avec de l'IaC (Terraform/Ansible).
Ce que j'ai appris
J'ai appris beaucoup de choses dédiées à la mise en production propre durant ce projet. J'ai pu beaucoup expérimenter via du homelabbing avec kubernetes, sans avoir eu l'occasion de mettre en place toute la pipeline de devops.
J'ai énormément progressé en IaC par le biais de Terraform, passé beaucoup de temps à faire du debug et découvert que le provider kubernetes n'était pas vraiment utilisable en présence de CRDs custom.