Ce REX présente comment nous utilisons Gitlab, Gitlab-CI et Terraform pour construire une infrastructure GCP en self-service pour nos utilisateurs (squads/projets).
Chez Kiabi, dans le cadre de la migration sur le cloud GCP (depuis l'été 2021), nous mettons à disposition de nos développeurs une project-factory, en self-service, pour de l'infrastructure cloud (VM/Databases/Buckets etc...). Le but est d'accélérer les phases de démarrage des projets, en rendant autonomes au maximum les développeurs sur le provisionning de l'infrastructure essentielle à leurs développements.
Nous allons voir dans ce REX comment nous avons assemblé le module Terraform google-project-factory avec Gitlab et Gitlab-CI pour:
* créer des projets sur GCP pour plusieurs environnements en quelques minutes
* fournir des templates de code Terraform prêts à l'emploi sur Gitlab à nos développeurs
* utiliser des pipelines Gitlab-CI pour exécuter le code Terraform et provisionner l'infrastructure de nos projets
Ce REX est destiné aux développeurs curieux de l'infrastructure as code, quelques notions de Terraform, Gitlab et GCP sont les bienvenues pour bien le comprendre.
4. Move to cloud - top départ en juin 2021
0 70 100
c’est de là où on part applications spécifiques à migrer développeurs à accompagner
5. Des objectifs #DevOps
R2 - Développeur
“Je veux être autonome sur la
création des mes
environnements”
“ça doit aller plus vite que le
processus de tickets existant”
C3 - Opérateur
“Je veux m’assurer du
respect des bonnes
pratiques, nommage,
sécurité, backup”
6. Une application / environnement
un projet GCP
un namespace
kubernetes
une BDD
des buckets
d’autres services
7. En Infrastructure As Code
un repo gitlab +
pipeline du code
Terraform
des ressources provisionnées
dans mon projet
8. En Infrastructure As Code
un repo gitlab +
pipeline du code
Terraform
des ressources provisionnées
dans mon projet
Je suis autonome 😎
13. Le service-account “root” de la project-factory
(pas Terraformé, une sombre histoire d’🥚 et de 🐔)
Un service account
Project Creator
Project IAM Admin
Folder Admin
14. Le bucket pour le state Terraform de la project-factory
(pas Terraformé, une sombre histoire d’🥚 et de 🐔)
15. Le code de la project factory
https://gitlab.com/codekaio/devfest-2022/gcp-project-factory
26. Pour aller encore plus vite et propre : un catalogue de
modules fournis par
Namespace
PostgreSQL Bucket Dataset
DNS Record MongoDb
VM
Pub/Sub
Respect des
bonnes pratiques
😎
29. Ce qui fonctionne bien
~115
projets GCP + Gitlab
créés
R2 - Développeur
“C’est rapide,
Mon projet en ~ 15 minutes
Mes premières ressources
en ~ 30 minutes”
“Le premier projet est difficile, les
autres c’est facile”
C3 - Opérateur
“Les projets sont créés en
suivant les bonnes
pratiques, sécurité,
backups”
~350
instances de modules
30. Ce qui reste à améliorer
🆘 le state terraform grossit
🆘 les pipelines de la project
factory de plus en plus longs
🔜 bascule sur des workspaces
plus fins, au projet
🆘 des clés de service-account
en variables de CI
🔜 utilisation de workload
identity dans nos pipelines pour
supprimer les clés
🔜 policies sur les plan
terraform pour éviter
les destroys accidentels
🔜 mise à jour des
modules à systématiser
(dependabot)