RBC a adopté une approche globale dans son parcours infonuagique, mettant en œuvre des technologies dans l’ensemble de l’entreprise. RBC Marchés des Capitaux améliore constamment sa plateforme technologique pour répondre aux besoins de ses clients. Kubernetes qui favorise le déploiement d’applications a été l’un des principaux catalyseurs de cette évolution.

Utilisation de Kubernetes dans les marchés financiers

Les opérations sur les marchés financiers se font dans un environnement très dynamique où chaque milliseconde compte. Nos applications doivent donc être très accessibles, évolutives et d’une grande résistance. Grâce à ses capacités, Kubernetes, constitue une norme dans l’industrie qui est utilisée à grande échelle pour gérer des applications conteneurisées. Cette plateforme nous permet de faire ce qui suit :

  • Mettre à l’échelle les applications de manière dynamique en fonction de la demande du marché
  • Assurer l’accès grâce à des fonctionnalités autoregénératrices
  • Déployer harmonieusement des mises à jour sans interruption
  • Optimiser l’utilisation des ressources dans l’ensemble de nos infrastructures

Cela dit, la gestion de Kubernetes, en particulier dans un réseau comme le nôtre, présente de nombreux défis. C’est là que FluxCD entre en jeu.

Présentation de FluxCD : GitOps pour Kubernetes

FluxCD est un outil de GitOps qui nous aide à automatiser le déploiement et la gestion des applications mises sur Kubernetes. Il fonctionne selon un principe d’infrastructure déclarative en tant que code, où l’état souhaité de nos applications et de notre infrastructure est défini en fonction des référentiels de l’Open Container Initiative (OCI). FluxCD surveille en permanence ces référentiels et veille à ce que l’état réel des grappes soit conforme à celui souhaité. Grâce à FluxCD, nous pouvons :

  • Automatiser les déploiements dans plusieurs environnements
  • Renforcer la cohérence en utilisant l’OCI comme source de vérité unique
  • Simplifier les annulations en revenant à la version précédente de l’OCI
  • offrir des options de libre-service aux locataires tout en assurant une gouvernance stricte

Notre architecture de déploiement

RBC Marchés des Capitaux mène ses activités par l’entremise de diverses équipes (pupitres de négociation, équipes de gestion des risques, équipe d’application des actions), chacune d’elles déployant et gérant ses propres applications sur notre plateforme Kubernetes. Voici comment nous avons structuré notre pipeline de déploiement à l’aide de FluxCD :

1. Déploiement de la plateforme

La couche de plateforme comprend tous les services partagés et les composants d’infrastructure qui sont utiles pour le fonctionnement de nos applications. Elle comporte notamment :

  • Les contrôleurs d’entrée pour diriger le trafic
  • Outils de surveillance et de consignation comme Prometheus, Loki et Grafana
  • Gestion des certificats et configurations du réseau
  • Définitions de ressources personnalisées pour les configurations propres aux locataires

Nous utilisons un référentiel OCI spécialisé pour définir l’état souhaité de notre plateforme. FluxCD surveille ce référentiel et applique automatiquement toute modification aux grappes Kubernetes. Cela garantit la mise à jour constante et la cohérence de notre plateforme dans tous les environnements.

2. Déploiement de l’application locataire

Chaque locataire a son propre référentiel OCI dans lequel il définit l’état souhaité de ses applications. On note parmi ces référentiels :

  • Les manifestes Kubernetes (déploiements, services, ConfigMaps (plans de configuration), etc.)
  • Les graphiques Helm pour les produits d’emballage
  • Les configurations propres à l’environnement (par exemple, dev, qa, production)

FluxCD est configuré de manière à surveiller ces référentiels de locataires et à déployer des applications dans leurs espaces de nommage respectifs dans les grappes Kubernetes. Cela permet aux locataires de gérer leurs applications de manière indépendante tout en adhérant aux politiques de gouvernance de la plateforme.

3. Isolation multi-locataires

Pour assurer l’isolation entre les locataires, nous utilisons les espaces de nommage Kubernetes et le contrôle d’accès fondé sur les rôles. Chaque locataire se voit attribuer un espace de nommage où il peut déployer et gérer ses applications. FluxCD applique des politiques de contrôle d’accès fondé sur les rôles pour que les locataires ne puissent modifier que les ressources de leurs propres espaces de nommage.

4. Pipeline de prestation continue

FluxCD s’intègre parfaitement à notre pipeline d’intégration continue (IC) et de déploiement continu (CD). Lorsqu’un locataire modifie son référentiel Git, FluxCD récupère automatiquement les modifications et les déploie dans l’environnement approprié. Cela nous permet d’assurer une prestation continue des services avec une intervention manuelle minimale.

Avantages de FluxCD à RBC Marchés des Capitaux

Voici les améliorations que nous avons constatées dans notre processus de déploiement :

  • Meilleurs délais de mise en marché : Les déploiements automatisés réduisent le temps nécessaire à la mise en place de nouvelles fonctionnalités et de mises à jour.
  • Fiabilité accrue : GitOps garantit que nos déploiements sont cohérents et reproductibles, ce qui réduit le risque d’erreurs.
  • Amélioration de la collaboration : Les locataires peuvent gérer leurs applications de manière indépendante, tandis que les équipes chargées de la plateforme se concentrent sur la maintenance de l’infrastructure sous-jacente.
  • Meilleure gouvernance : Git et OCI servent de piste d’audit, ce qui nous permet de suivre les changements et de faire respecter la conformité.

Défis et enseignements tirés

FluxCD s’est avéré parfaitement adapté à notre cas d’utilisation, mais nous avons également rencontré quelques difficultés lors de notre parcours :

  • Gestion de grands référentiels : La gestion de grands référentiels Git peut devenir fastidieuse avec l’augmentation du nombre de locataires et des applications. Nous avons résolu ce problème en répartissant les référentiels en éléments plus petits et plus faciles à gérer.
  • Informations sensibles : La gestion de l’information nécessite une attention particulière. Nous avons intégré à la plateforme FluxCD et d’autres outils de gestion externes comme HasiCorp Vault pour améliorer le traitement de l’information.
  • Intégration des locataires : La formation des locataires concernant les pratiques GitOps et les concepts Kubernetes est un processus. Nous avons investi dans la formation et la documentation pour aider les locataires à se familiariser avec les outils.

Perspectives

Nous continuons à faire évoluer notre plateforme Kubernetes et explorons de nouvelles façons d’améliorer notre processus de déploiement. Voici certains des domaines qui retiennent notre attention :

  • Modèles GitOps avancés : Mise en œuvre de déploiements canary, de déploiements bleu/vert et d’autres stratégies de déploiement avancées.
  • L’application des politiques : Utilisation d’outils tels que Open Policy Agent (OPA) pour appliquer des politiques à l’ensemble des locataires.
  • Capacité d’observation : Améliorer nos capacités de surveillance et d’alerte afin d’assurer une meilleure visibilité de l’état de nos applications.

Dans un environnement hautement concurrentiel, nous continuerons à innover et nous sommes impatients de voir comment ces technologies évolueront.

Cet article a été publié à l’origine sur le site de la Cloud Native Computing Foundation.

Le présent article vise à offrir des renseignements généraux seulement et n'a pas pour objet de fournir des conseils juridiques ou financiers, ni d'autres conseils professionnels. Veuillez consulter un conseiller professionnel en ce qui concerne votre situation particulière. Les renseignements présentés sont réputés être factuels et à jour, mais nous ne garantissons pas leur exactitude et ils ne doivent pas être considérés comme une analyse exhaustive des sujets abordés. Les opinions exprimées reflètent le jugement des auteurs à la date de publication et peuvent changer. La Banque Royale du Canada et ses entités ne font pas la promotion, ni explicitement ni implicitement, des conseils, des avis, des renseignements, des produits ou des services de tiers.