2,5 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

  • 📖 https://vrchr.fr/

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

  • Application 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

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, 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
  • 100 balles & un Mars©

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 applis ⬅️ (90%)
  4. Terraform pour bootstrap, GitOps - POC sur les applis "infras" ⬅️ (10%)

                         

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

"Day2" - 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 ?
    • ➡️ Gestion de la partie "Stateful"
  • Accès aux logs ?
  • FROM scratch & 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

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

Une V1, puis une 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 (backup/restore) 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

Et l'IA dans tout ça ?

L'IA ?

Données dosimétriques 'sensibles'

  • Impossible d'utiliser OpenAI 🤷‍♀️

  • Equipes Data : Utilisation instances avec GPUs sur clusters applicatifs

  • Problèmes de dispo & partages de ressources...

Manque de temps pour aujourd'hui, une autre fois ?

➡️ Talk de Stéphane Phillipart après la pause !

Bilan & La suite

Promesses tenues ?

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

Bilan

Obstacles rencontrés

  • Montée en compétences des équipes
  • Compétences des devs sur l'environnement cible
  • Hype technologique vs besoin client
  • Intervention parfois tard dans le process de déploiement
  • Limite de responsabilité : métier vs infra

Bilan

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
  • Sécurité & bonnes pratiques au plus tôt des projets

Merci !

On s'éclate bien sur des migrations "Cloud Native"

même si on n'est ni une Startup, ni dans le CAC40 !

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 ;)

Voir talk de Katia

On en parle après

Gestion des modules, trop peu utilisé vs maintenance code, templating helm over tf

ArgoCD, Flux , maturité des équipes & réel gain VS plaisir techno

`pluto`, ` kubent`

kubectl, helm

💡 Mise en place de runbooks pour la MCO

(*les traces on verra plus tard*)

- Prometheus, Loki, Grafana, Thanos !

Exporter OVH

Cf talk Velero

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 !)

Développeur != Expert CI/CD

- Images Docker custom + 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é - HPA sur BDD - Requests & Limits - Variables en dur dans images Docker

- 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 - GPU & AI : challenge

kyverno, sympa l'upgrade