Slide 1

Slide 1 text

On-Demand CI/CD avec + Julien Vey -

Slide 2

Slide 2 text

Julien Vey Responsable Cloud & DevOps

Slide 3

Slide 3 text

7 radios nationales 44 radio locales 4 formations musicales ~ 4200 salariés ~ 100 métiers différents ...

Slide 4

Slide 4 text

6 sites web 5 applications mobiles 49 millions de visites/mois 53 millions de podcasts téléchargés/mois ...

Slide 5

Slide 5 text

Frontend Assets Content Data Message Bus API Streaming API API API API

Slide 6

Slide 6 text

API API API API API Message Bus

Slide 7

Slide 7 text

Une stack technique variée

Slide 8

Slide 8 text

+ CI/CD

Slide 9

Slide 9 text

D’où nous venons Hooks Résultats des jobs Gitlab pour la gestion des repos git Jenkins pour les tests et les déploiements

Slide 10

Slide 10 text

Pourquoi ça ne marchait pas Context Switching entre Gitlab et Jenkins Config Jenkins statique, pas de customisation L’équipe “CI/CD” en charge de tous les jobs Temps d’attente en “Queue” importants

Slide 11

Slide 11 text

Là où on voulait aller Centraliser le code, la CI, les déploiements Laisser la main aux équipes sur leur workflow de mise en production Fournir les outils et non les process

Slide 12

Slide 12 text

Le passage sur Kubernetes Gitlab Kubernetes Executor Runner A Runner B Runner ... Master Job Job Job Job Job Job Job Job Job Job Job Job Job

Slide 13

Slide 13 text

Le passage sur Kubernetes Nodepool de Spot Instances Job Job Job Job Job Job Job Job Job Job Job Job Job Spot Spot Classic Classic

Slide 14

Slide 14 text

Le passage sur Kubernetes Intégration native avec Prometheus, Grafana, AlertManager

Slide 15

Slide 15 text

Le passage sur Kubernetes En résumé Optimisation des coûts Réduction des délais d’attente (CI “illimitée”) Monitoring & Supervision Maintenabilité

Slide 16

Slide 16 text

Problème suivant… build ?

Slide 17

Slide 17 text

Sur Kubernetes, tout est conteneur docker build n’est pas adapté à ce modèle Build des images Docker La problématique du build

Slide 18

Slide 18 text

Docker-in-Docker ? Gitlab Shell runner ? Kaniko ? Build des images Docker Comment fait-on ?

Slide 19

Slide 19 text

Kaniko github.com/GoogleContainerTools/kaniko Construction d’images docker “Rootless” Pas besoin de daemon docker Pas besoin d’être root Peut tourner dans un pod kubernetes

Slide 20

Slide 20 text

Kaniko avec Gitlab Custom Executor docker build: stage: build tags: - executor:kaniko variables: DOCKERFILE: path/to/Dockerfile IMAGE_NAME: my-app script: - kaniko build

Slide 21

Slide 21 text

Où en est-on aujourd’hui ?

Slide 22

Slide 22 text

Code + CI/CD à un seul endroit

Slide 23

Slide 23 text

Consommation “ À la demande ”

Slide 24

Slide 24 text

Consommation “ À la demande ” Très peu de “Pending Jobs” gitlab

Slide 25

Slide 25 text

Process vs Tools L’équipe CI/CD est responsable de l’outillage Les équipes de dev sont responsables de leur workflow de déploiement

Slide 26

Slide 26 text

Métriques Fréquence de déploiement en production 10/jour avant, 50/jour aujourd’hui Temps de déploiement sur Kubernetes de 6 minutes à 20s Coût d’hébergement de la CI/CD 70% de gain annuels

Slide 27

Slide 27 text

Merci Questions ? Julien Vey -