2 ans de migrations en environnement "Cloud Native" quand on n'est ni une Startup, ni dans le CAC40

Rémi Verchère @ Accenture

Qui suis-je ?

👋 Rémi Verchère

💻 Cloud Native Infrastructure Consultant

  • Ops qui aide les Devs à mettre en prod

  • 🫶 Open Source & CNCF landscape

  • Papa x 👦👦👧👧

  • 🌐 @rverchere

  • 🎵

Une ETI, mais laquelle ?

L'IRSN

Institut de Radioprotection & Sûreté Nucléaire

  • Expert public en matière de recherche et d’expertise sur les risques nucléaires et radiologiques

  • Etablissement public à caractère industriel et commercial (EPIC), placé sous la tutelle conjointe du ministre de la Transition écologique, du ministre des Armées, et des ministres chargés de la Transition énergétique, de la Recherche et de la Santé

  • 1744 collaborateurs à fin 2022 (ingénieurs, médecins, agronomes, vétérinaires, techniciens, experts et chercheurs)

L'IRSN

Missions

Missions d'expertise et de recherche

  • Surveillance radiologique de l’environnement et intervention en situation d’urgence radiologique.
  • Radioprotection de l’homme.
  • Prévention des accidents majeurs dans les installations nucléaires.
  • Sûreté des réacteurs.
  • Sûreté des usines, des laboratoires, des transports et des déchets.
  • Expertise nucléaire de défense.

L'IRSN

Système d'Information

  • DSI: 35 personnes

  • Applications diverses & variées

    • Exercices de crise
    • Suivi des travailleurs exposés aux rayonnements ionisants
    • Données relatives au nucléaire & informations géographiques spatiales
    • Calculs scientifiques
    • Etc.

ETI & Migration "Cloud Native"

Cloud Native

Infrastructure & Application

  • Agilité
  • Mise à l'échelle
  • Elasticité
  • Résilience
  • DevOps & Automatisation
  • Architecture Microservices
  • Services Clouds
  • Conteneurs

Migration "Cloud Native"

Génèse à l'IRSN

  • Fin de contrat d'infogérance "classique", coûteux
  • Rappatriement On Prem ou direction le Cloud (FR) ?
  • Applications déjà conteneurisées
    Choix Orchestration (Docker Swarm ou Kubernetes) ?

center

fill

Migration "Cloud Native"

Promesses attendues

  • Maitrise des sources, Process de déploiement,
    Reproductibilité, Capacité de restauration
  • Facilité & Gain de temps mises à jour,
    Autonomie des développeurs,
    Travail en mode agile
  • Homogénéisation des pratiques,
    Sécurité & Qualité
  • Facturation à l’usage, Gain de coût

Migration "Cloud Native"

Stratégie

  • Eligibilité : toute nouvelle version majeure ou application
  • Conteneurs + "Macro" services + "12 factor"
  • TOUT (ou presque) dans k8s (applis, BDD & plus si affinité)
  • D'abord applis non critiques, jusqu'aux applis HDS

center

Migration "Cloud Native"

Organisation

center

Migration "Cloud Native"

Organisation

 

center

fill

Migration "Cloud Native"

Domaines d'intervention

  • Infrastructure : Plateformes Applis

    • Clusters Kubernetes
    • Forge Logicielle
  • Applications

    • Accompagnement des devs
    • Support Infra & co
  • 1,75 Ops pour gérer un peu tout ça 😅

Migration "Cloud Native"

center

Infrastructure

Plateformes Applis, Forge Logicielle

Plateformes Applis

Quelques chiffres

  • 11 Projets Public Cloud @OVHcloud
  • 21 clusters Managed Kubernetes Service (non prod & prod)
  • Entre 3 et 15 nodes par cluster
  • Entre 100 et 500 pods par cluster
  • Autres composants Cloud :
    Buckets S3, Network, VMs

Plateformes Applis

Infrastructure (très) simplifée

center

Plateformes Applis

  • Ops s'occupent des applis "infra"
  • Devs déploient "juste" l'appli
    Charts Helm via CI/CD

Composants "Infra"

  • Agent Rancher
  • Ingress Controller
  • Cert Manager
  • Backup
  • Monitoring & Logs 🎵
  • Policy Engine

Plateformes Applis

Déploiement "Infra"

  • Phase de découverte :
    Repasser sur les clusters
  • Uniformité des versions
  • Rythme de déploiement
  • Pet vs Cattle
  • ➡️ Automatisation & Variabilisation

Plateformes Applis

Comment on déploie ?

  1. Depuis le manager OVHcloud, puis Helm pour les applis
  2. Terraform pour TOUT ➡️ Fausse bonne idée 🎵
  3. Terraform pour bootstrap, puis Helm pour les upgrades applis ⬅️
  4. Terraform pour bootstrap, GitOps Pull Mode 🎵
    En étude, maturité des équipes & réel gain VS plaisir techno

center

Plateformes Applis

"Day2" - Comment on met à jour ?

  • Upgrade de version k8s & custom ressources 🎵
  • Rythme d'upgrade des applications 'infra' ?
    • ➡️ A chaque upgrade k8s, sauf si faille sécurité
  • Version supportée si besoin PRA ?

Et les déploiements applicatifs ?

  • Adaptation charts Helm applicatifs, qui gère ?
  • ⚠️ Mise à jour des pipelines ! 🎵

Plateformes Applis

Comment on l'opère ?

  • Accès au pods / nodes pour debug ?
  • Accès aux BDD ? Et les dumps ?
  • Copie de fichiers / données statiques ?
  • Gestion des backups / restore ?
  • Accès aux logs ?
  • kubectl exec ?

Plateformes Applis

Comment on sait que ça tourne ?

  • Observabilité ! Métriques & Logs 🎵

center

Plateformes Applis

On y voit plus clair !

  • Erreurs classiques d'infra
  • Suivi de la performance
  • Suivi des sauvegardes 💡
  • Suivi des déploiements 💡
  • Suivi MKS & FinOps 💡💡🎵

Forge Logicielle

  • Un plateforme appli particulière, applications "tierces"

[...] permettre à plusieurs développeurs de participer ensemble au développement d'un ou plusieurs logiciels [...]

center

Forge Logicielle

Utilisation & Challenges

  • ~500 utilisateurs, ~800 projets, ~200K pipelines
  • Adoption de la plateforme : Disponibilité & Applications ➡️ SPOF
  • Administration de la plateforme post-mission ?

Migration V1 ➡️ V2

  • Composants obsolètes & stabilité
  • Serveurs & Instances dédiés (RKE, Docker) ➡️ MKS (iso plateformes applis)
  • Tout au même endroit ➡️ Split 3 clusters
  • Utilisation de Velero pour la migration 🎵

Applications &

Accompagnement équipes dev

Applications

Organisation

  • Développement d'applications via appel d'offre
    • Equipes différentes (build & run applicatif)
    • Technologies différentes (Java, PHP, JS)
    • Complexité & Temps de développement différents

center

Accompagnement

Mise à dispositon des environnements

  • Accès à la forge logicielle
  • Boostrap structure projet GitLab
  • CI/CD: exemple de construction conteneur & déploiement
  • CI/CD: Templates de jobs
fill

Accompagnement

Maturité des équipes dev

  • Conteneurs & Kubernetes
  • Intégration & Déploiement continu
  • Développement != YAML 🎵
  • Débutants : formation, plusieurs fois
  • Diffusion de "bonnes pratiques"
fill

Accompagnement

Communication

  • Multicanal: tickets, MR, Chat, Mail
  • Discussions: directe, décision Resp. de Projet
  • Préconisation, pas d'obligation

Mise en production

  • Aide au déploiement -> autonomie
  • Si on doit faire : on fait avec les équipes
  • Analyse & Conseils, Support en production

Sécurité !

Comment on sécurise les accès & déploiements ?

  • Restriction des droits, mais habitude des devs ? ➡️ Communication
  • Règles sur la CI/CD, contournables ? ➡️ Communication
  • Règles d'admission, mais applis déjà en prod ? 🎵 ➡️ Audit
  • Gestion des Secrets ? ➡️ Sécurité vs Utilisabilité
  • 💡 Bug Bounty : bon moyen pour mettre au propre

center

Bilan & La suite

Promesses tenues ?

  • Maitrise des sources 🟢
    Process de déploiement 🟢
    Reproductibilité 🟢
    Capacité de restauration 🟢
  • Facilité & Gain de temps mises à jour 🟢
    Autonomie des développeurs 🟢
    Travail en mode agile 🟢
  • Homogénéisation des pratiques 🟡
    Sécurité & Qualité 🟡
  • Facturation à l’usage 🟠
    Gain de coût 🟠

Bilan Client

Obstacles rencontrés

  • Montée en compétences des équipes
  • Compétences des devs sur l'environnement cible

Si c'était à refaire

  • OUI, avec plus de compagnonnage/tutos
    pour les équipes métiers.
  • Mieux travailler sur le partage des responsabilité entre Dev et Ops

Bilan Client

center

Bilan Consultant

Obstacles rencontrés

  • Hype technologique vs besoin client
  • Intervention parfois tard dans le process de déploiement
  • Limite de responsabilité : métier vs infra

Si c'était à refaire

  • OUI, avec de la sécurité plus en amont, et plus de bonnes pratiques au plus tôt des projets

Les mots de la fin

Communication

Confiance & Automonie

Empathie & Transparence

Remise en Question

Motivation ;)

Succès !

Merci !

Rémi Verchère @ Accenture

--- ## Au sommaire - **REX** de ~ 2 ans de mission pour une ETI : *mon job ces derniers 24 mois* - 3 domaines d'intervention pour aider les devs - 1 - Gestion de la **forge logicielle** - 2 - Déploiement des plateformes **kubernetes** - 3 - Mise à disposition d'**environnement de dev** & **CI/CD** - **Accompagnement** & **support** sur ces 3 domaines ## Disclaimer - **Mon** expérience, **mon** avis (subjectif, mais forcément le bon) - Quelques traits **forcés** - Les devs on vous aime bien quand même ;)

- 📖 https://presentations.verchere.fr/

--- # Migration "Cloud Native" ## Let's Go! ![bg fit](assets/rocket.gif)

--- # Plateformes Applis ## Exemple ![center](assets/irsn-wikijs.png)

On en parle après

Gestion des modules, trop peu utilisé vs maintenance code

ArgoCD, Flux

`pluto`, ` kubent`

kubectl, helm

💡 Mise en place de runbooks pour la MCO

(*les traces on verra plus tard*)

- Prometheus, Loki, Grafana, Thanos !

Traces : voir atelier OpenTelemetry juste après

Exporter OVH

Cf talk

![bg right:30% fit](assets/migration.png)

Déploiement: - Maturité Providers Terraform - Enroll Rancher pas idempotent MaJ des clusters: - MaJ clusters **AVANT** maj CRDs (ingress, ) - Support des versions Rancher vs cycle release MKS - Majorité de charts Helm : cycle de release différent En prod: - Gestion des volumes & backups - Scaling à 0 des nodes avec Kyverno Forge Logicielle: - Séparation des rôles applicatifs - Puissance Worker Nodes vs Control Plane - Driver CSI : restart des nodes, recréation des PVs - **Harbor**, **Keycloak** & applis clientes sur le même cluster ***Bonus***: Kyverno - Upgrade charts **Helm** qui se passent mal

- Homogénisation des composants, nomenclature - Autonomie des devs sur les déploiements - Ressources consommables facilement (CPU, RAM, Disque) - Réplication Prod / Hors Prod à iso-périmètre Forge Logicielle: - Adoption de la plateforme, même pour les projets hors Kubernetes - SSO: Gestion centralisée des comptes (délégation AD en cours)

Développeur != Expert CI/CD

- Images Docker custrom + obsoletes - Logs sur volumes - Oublie de données persistantes - Perfs BDD à 2 semaines de la MEP, disque local - Gestion BDD (flyway, etc) - FTP qui n'a jamais marché

- Equipes super autonomes, qui aident - MR sur les templates de CI/CD - Communication fluide / pas de pb d'ego, transparence - Découverte d'un nouveau monde SIG: devs pas forcéments experts, mais excellent en ingénierie

kyverno, sympa l'upgrade

--- # La suite... ## Technique - Amélioration mise à dispo plateforme: Mode GitOps - Amélioration & sécurication des déploiements (CI/CD) - Mutualisation de clusters (FinOps, Niveau de criticité pour l'astreinte) ## Humain - Amélioration de la transmission d'info - Runbooks pour les nouveaux arrivants - On intervient jamais assez tôt dans le développement applicatif