Depuis peu, afin d’aider les entreprises à maîtriser les dépenses liées au service EKS (Enterprise Kubernetes Service), AWS a commencé à proposer Kubecost, un outil tiers de suivi et de gestion des coûts pour Kubernetes. Cette démarche, pour le moins inhabituelle de la part du fournisseur, montre à quel point cette problématique représente aujourd'hui une tâche complexe pour les équipes devops. Kubecost suit les coûts des ressources Kubernetes par namespaces, déploiement, service, cluster, pod ou concepts organisationnels comme l'équipe, le département ou l'application. Mais si la visibilité des coûts est une première étape nécessaire, elle n’est pas suffisante pour arriver à une pleine maîtrise budgétaire de l’outil d’orchestration de clusters de conteneurs.

Les principes de la gouvernance des coûts sur Kubernetes

Voici quelques lignes directrices pour commencer à instituer des bonnes pratiques de contrôle des coûts des environnements K8’s. Ces principes ne résument pas à des chiffres, mais aussi à des éléments organisationnels

Créer une culture de gestion des coûts

Au même titre que la maîtrise des coûts du cloud, celle de Kubernetes est une tâche complexe. Pour s’y attaquer, il faudra cultiver une expertise dédiée dans l’entreprise, en commençant par donner à ses développeurs et à son équipes financières les compétences et les outils nécessaires pour cette tâche. À bien des égards, Kubernetes s'intègre parfaitement dans une initiative de gestion des coûts du cloud en cours de mise en oeuvre.

La collaboration en support

Une gestion réussie d’une telle démarche ne se fait pas en vase clos. Elle nécessite plutôt une collaboration entre les membres des équipes, en particulier entre l'ingénierie et les finances. L'optimisation des coûts ne fait généralement pas partie des compétences du développeur, tout comme Kubernetes ne fait pas davantage partie des expertises du comptable. Cependant, ce dernier s'interrogera sans doute sur le coût élevé des services cloud, notamment sur les prix faramineux des conteneurs en production. Grâce à un outil FinOps, l’équipe de développement peut effectuer des ajustements mineurs à la configuration de Kubernetes ou des conteneurs afin de réduire ces coûts ou effectuer une analyse de rentabilité pour obtenir un budget supplémentaire. L’outil de gestion des coûts peut également servir de plateforme de collaboration entre les développeurs et les comptables.

Documenter et former

Dès que les équipes ont acquis une expertise transverse suffisante sur Kubernetes et l’optimisation des coûts, on peut commencer à documenter les procédures concernant l’outillage.

Cette documentation peut prendre plusieurs formes :

- Une formation interne sur les pratiques de gestion des coûts de l’entreprise;

- Des « aides mémoire » qui documentent l'utilisation de l'outil choisi pour calculer les coûts;

- Des aides au travail et une formation de base pour préparer les parties prenantes ne connaissant pas Kubernetes à interagir avec ces rapports.

Les étapes d’une stratégie de gestion des coûts de Kubernetes

Le développement d'une stratégie de gestion des coûts de Kubernetes peut s'avérer décourageant si l’entreprise manque d'expertise technologie. Mais une fois que celle-ci a compris comment calculer les coûts et qu’elle a trouvé un moyen de les suivre, elle est prête pour l'étape suivante.

Voici une stratégie de base pour la gestion des coûts de Kubernetes :

Dimensionner son environnement Kubernetes pour FinOps

Le dimensionnement correct de l’environnement Kubernetes est une stratégie de gestion des coûts cruciale, où le nombre et les types de ressources disponibles sont adaptés à la feuille de route de l’IT en matière de cloud, de Kubernetes ou de conteneurs. Cette configuration exige une gestion minutieuse des ressources afin de contrôler à la fois celles qui sont utilisées et celles qui sont disponibles en réserve à des fins de mise à l'échelle et de basculement. La Cloud Native Computing Foundation (CNCF) recommande de cibler le niveau pod pour l’approche FinOps. La définition des demandes et des limites des pods dépendra de l'expertise Kubernetes de l’entreprise. Un pod peut contenir plusieurs conteneurs. Ces paramètres serviront de référence pour contrôler l’usage des ressources sur l'ensemble des conteneurs afin de limiter les ressources dont le pod a besoin

Utiliser les étiquettes Kubernetes pour le suivi des coûts

Il est préférable que les équipes soient déjà familiarisées avec l’usage d'étiquettes sur leurs projets cloud pour le suivi des coûts. Elles devraient utiliser celles pour identifier les objets Kubernetes et les segmenter en groupes. La bonne attribution des étiquettes permet à l’équipe financière d'identifier l'utilisation des ressources au niveau des pods à travers différentes applications et environnements Kubernetes. 

Intégrer la surveillance des coûts et les alertes dans les opérations quotidiennes

La gestion des coûts de Kubernetes doit faire partie des tâches quotidiennes. Il faudra fournir aux développeurs les outils et les stratégies pour détecter automatiquement et les alerter sur les demandes de CPU et de mémoire qui dépassent leur usage actuel, afin d’éviter le gaspillage et donc des dépenses excessives. Cette surveillance et ces alertes doivent être une extension du contrôle de la qualité de service déjà effectué par les équipes. Il faut prendre le temps d'itérer sur la lisibilité et la conception des rapports des dépenses qui décomposent les coûts de Kubernetes par déploiement, service et étiquette d'espace de nom, car ces rapports serviront de langage commun entre les équipes devops et financières. Ce travail contribuera à simplifier grandement la gestion des coûts de Kubernetes et de la transformer en simple tâche de rapport automatisée. Un effort pour gagner en sérénité.

Les outils de gestion des coûts de Kubernetes

Même si ces outils promettent beaucoup en matière de réduction des coûts, il ne faut pas s’attendre à réaliser de grandes économies dès le départ. La gestion des coûts s'accompagne d'une courbe d'apprentissage. Mais, parce qu’ils contribuent à identifier les inefficacités et les gaspillages, ces solutions peuvent permettre de réaliser des économies importantes au fil du temps.

Voici trois outils de gestion des coûts de Kubernetes à considérer :

Kubecost

Cet outil de gestion des coûts de Kubernetes a des racines open source. Il faudra passer de la version gratuite à celle payante pour bénéficier d’une surveillance illimitée des clusters, des rapports enregistrés, des notifications et d'autres fonctionnalités avancées. Mais toutes les éditions incluent l'allocation des coûts, qui ventile ces derniers par espace de noms, déploiement, services et autres variables à travers les fournisseurs on-prem et cloud. Kubecost permet de visualiser les dépenses Kubernetes et hors cluster au même endroit.

Kubecost comprend plusieurs fonctionnalités et en propose d'autres en version beta. (Crédit Photo: Kubecost)

CloudZero

Cet outil intègre toutes les dépenses liées au cloud ou aux logiciels, y compris Kubernetes. CloudZero promet des données de coûts dynamiques et explorables, et non des rapports statiques. L’outil ne dépend pas des balises pour suivre les dépenses. Il utilise un langage propriétaire spécifique au domaine pour organiser les dépenses dans un fichier YAML. La possibilité d'allouer des ressources non étiquetées et non étiquetables rend CloudZero très attractif pour répondre aux défis de la gestion des coûts de Kubernetes.

CloudZero est outil complet de FinOps qui comprend aussi des éléments pour Kubernetes. (Crédit Photo: Cloudzero)

Loft

Loft fonctionne avec les clusters Kubernetes standard du secteur, notamment Amazon EKS, Google Kubernetes Engine et Rancher. L’outil configure et automatise la détection des namespaces et des clusters virtuels inactifs après une période choisie par l’utilisateur. Il est possible de définir des quotas de compte pour limiter le CPU, la mémoire et d'autres facteurs qui peuvent s'agréger sur tous les namespaces et les clusters virtuels appartenant à une équipe ou à un utilisateur individuel. Loft comprend une intégration Prometheus et des tableaux de bord Grafana pour le suivi.

Loft apporte plusieurs capacités pour optimiser les dépenses sur Kubernetes. (Crédit Photo: Loft)

La capacité des équipes à apprendre en permanence, à itérer et à automatiser -caractéristiques de la culture devops - fera partie intégrante de la croissance et de la maturité de ses pratiques de gestion des coûts de Kubernetes. La création de rapports détaillés sur les coûts contribuera également à ce que les développeurs puissent collaborer avec les services financiers et les autres parties prenantes de l'entreprise dans un langage compréhensible par tous.