Ce blog spécifique décrit comment Volterra aide les utilisateurs à exploiter leurs applications et leur infrastructure comme une flotte. Nous expliquerons comment notre approche basée sur le plan de contrôle facilite les opérations d'une grande flotte de clusters d'applications et la comparerons à d'autres approches de plan de gestion multi-clusters comme Google Anthos, Azure Arc, Rancher, etc.
À présent, vous vous demandez peut-être si nous ne faisons pas simplement un marketing et si nous appelons notre gestion multi-cluster des opérations de flotte ! Les approches de gestion multi-cluster et d’exploitation de flotte répondent à différents cas d’utilisation et sont fondamentalement différentes dans leurs architectures. Une approche multi-cluster est conçue pour répondre aux scénarios dans lesquels il existe relativement peu de clusters et où l'utilisateur souhaite gérer ces clusters d'infrastructure à l'aide d'un modèle opérationnel cohérent. Alors que l'approche de flotte est conçue pour répondre aux scénarios dans lesquels il existe une grande échelle de clusters (par exemple, les clusters K8s dans les robots, l'automobile, les passerelles industrielles, des dizaines de régions de cloud public, etc.) et que l'utilisateur souhaite déployer la même application et le même réseau/la même sécurité sur ces clusters à grande échelle. Les deux sections suivantes décrivent et comparent plus en détail l’approche des opérations multi-clusters et de flotte.
Une approche de gestion multi-cluster est conçue pour répondre aux cas d’utilisation où il y a relativement peu de clusters sous les opérations d’une seule équipe. Des exemples de tels scénarios incluent des dizaines de clusters répartis sur quelques zones de disponibilité pour réduire le rayon d'explosion. De même, les utilisateurs peuvent choisir d’avoir plusieurs clusters répartis sur quelques régions pour répondre aux besoins réglementaires.
Les deux exemples suivants illustrent le fonctionnement des solutions multi-clusters (à un niveau élevé) :
Prenons un exemple de déploiement application utilisant une approche multi-cluster de Rancher comme illustré dans la Figure 1. Dans une approche multi-cluster, le client sélectionne les sites cibles pour le déploiement de application un par un. Cette approche de sélection des sites cibles un par un fonctionne lorsque vous avez quelques clusters. Cependant, cette approche n’est pas conçue pour, disons, un millier de clusters.
La figure 2 illustre comment fonctionne l'observabilité dans une approche multi-cluster, en prenant Rancher comme exemple. Avec cette approche, vous devez double-cliquer sur chaque cluster un par un pour voir l'état des pods déployés ainsi que l'utilisation des ressources CPU et mémoire. Observer les sites cibles un par un fonctionne pour un petit nombre de clusters, mais ne convient pas à la gestion d’un grand nombre de clusters.
Groupe 1 :
Groupe 2 :
Une approche évidente pour résoudre le problème décrit dans le premier exemple serait d’écrire une forme d’automatisation qui répéterait les tâches pour chacun des clusters. Par exemple, chaque fois qu'un nouveau cluster est ajouté, le script peut effectuer l'opération suivante pour déployer une nouvelle application (checkoutservice par exemple)
exporter KUBECONFIG=~/Documents/kubeconfig/ce01-ashburn-aws-staging
kubectl apply -f checkoutservice.yaml
Cependant, nous devons construire l'automatisation pour chaque opération — déploiement, mise à jour, politique, réservation de ressources, etc. Nous devons faire en sorte que cette automatisation exécute chaque opération sur de nombreux clusters tout en gérant les conditions d’échec. Lorsque vous gérez des scénarios complexes — comme des tests bêta sur un sous-ensemble de clusters ou des mises à jour progressives sur tous les clusters — l’automatisation devient naturellement plus complexe. Nous l'avons compris dès le début et avons développé un plan de contrôle distribué qui intègre toutes ces fonctions — en nous appuyant sur une approche d’exploitation de flotte décrite ci-après.
Les opérations de flotte signifient que vous définissez votre intention une fois pour l'ensemble, puis le système veille à ce que les sites concernés respectent cette directive. Parmi les intentions figurent la version du logiciel d’application, la version du logiciel d'infrastructure (par exemple, celle du système d’exploitation), la politique réseau, la politique de sécurité et la réservation des ressources.
Une fois l’intention prise, le système permet aux utilisateurs de visualiser l’état et la santé de la flotte. Cela signifie que les utilisateurs obtiennent une vue agrégée de l'état de l'infrastructure et des applications sur tous les sites de la flotte dans une seule fenêtre, réduisant ainsi la complexité opérationnelle pour l'équipe d'exploitation du client. Les utilisateurs n’ont pas besoin de cliquer sur chaque site ou cluster un par un pour déterminer l’état et d’écrire des outils d’automatisation pour regrouper les informations.
L’approche des opérations de flotte de Volterra se compose de trois composants principaux : la segmentation, la configuration et l’observabilité, que nous aborderons dans les sections suivantes.
Les utilisateurs disposent souvent d'un mélange de sites dans la flotte, tels que des sites de développement, de test et de calcul de production. Différentes charges de travail doivent être déployées sur un segment spécifique de sites en raison des politiques de l'organisation, telles que les charges de travail de développement ne sont affectées qu'aux sites de développement. Nous permettons aux utilisateurs d'étiqueter de manière flexible les sites avec une étiquette composée de deux parties, clé et valeur. Voici quelques exemples :
Une fois les sites étiquetés, les utilisateurs peuvent définir un « site virtuel » à l’aide de conditions clé-valeur d’étiquette. Dans un scénario multi-cloud, les utilisateurs peuvent baliser leurs sites comme dev, pre-prod, prod par exemple. La figure 3 suivante montre un exemple de cas d’utilisation de la robotique utilisant les valeurs de clé d’étiquette décrites précédemment.
Voici un extrait de configuration sur Volterra où l'utilisateur peut utiliser la syntaxe blend/go-sdk pour créer un site virtuel. Dans cet exemple particulier, les sites individuels ont été étiquetés avec la clé d'étiquette = ves.io/country et la valeur d'étiquette ves-io-jpn
Les utilisateurs sont habitués à un modèle opérationnel consistant à définir des segments de leur flotte a priori, puis à étiqueter leurs sites au moment de la mise en service pour les inclure dans la flotte ; les sites virtuels s’intègrent parfaitement au modèle opérationnel existant des utilisateurs. Lorsqu'un nouveau site est provisionné avec la balise appropriée, il est automatiquement inclus dans le site virtuel défini précédemment sans nécessiter d'étapes manuelles supplémentaires. De plus, Volterra découvre des informations pré-approvisionnées telles que le fabricant du matériel ou le type de cloud public pour pré-remplir les balises système. Les utilisateurs peuvent éventuellement choisir d’utiliser ces balises découvertes automatiquement pour définir leurs sites virtuels.
Les capacités de configuration de la flotte peuvent être mieux décrites à travers les trois exemples suivants :
Si un nouveau site est ajouté à la flotte avec l'étiquette appropriée, le nouveau site est automatiquement ajouté au site virtuel (jpn-all-sites dans cet exemple) et la configuration de la flotte (c'est-à-dire le déploiement Kuard dans cet exemple) est automatiquement appliquée au site nouvellement ajouté, réduisant ainsi la charge des équipes d'exploitation et éliminant les erreurs humaines.
Les sites virtuels et Virtual Kubernetes (vK8) ne sont pas seulement utilisés pour la configuration, mais également pour regrouper l'état de santé des sites distribués de la flotte. Il s’agit d’un outil vraiment puissant par rapport à d’autres solutions où les utilisateurs devraient écrire des outils pour obtenir le statut de chaque site un par un et agréger les informations. Le système regroupe automatiquement l’état de santé de tous les sites, dans une seule fenêtre, réduisant ainsi la complexité opérationnelle pour l’équipe d’exploitation du client. L'état de santé collecté comprend de nombreux aspects, tels que l'état de déploiement de application , l'état de santé du site et l'état de santé de application , etc.
Vous pouvez rapidement visualiser l'état de santé de tous vos sites sur une carte comme montré dans la capture d'écran suivante. Les couleurs indiquent si le score de santé dépasse 75 (vert), est compris entre 40 et 75 (orange), ou est inférieur à 40 (rouge). Le score de santé combine des critères de connectivité, fiabilité, sécurité et performances (c’est-à-dire la consommation des ressources).
Les utilisateurs peuvent également voir une vue agrégée de la connectivité sur tous leurs sites ainsi que de l’état du site. L'état de connectivité de chaque lien reliant les sites au réseau principal de Volterra est également illustré comme illustré dans la Figure 10. L'utilisateur peut cliquer sur des liens peu performants en fonction de l'état de santé pour révéler des statistiques détaillées sur les demandes et les erreurs et résoudre les problèmes de connectivité, comme indiqué dans la figure 11.
Vous pouvez ensuite consulter des informations agrégées sur tous les sites, comme la répartition de la charge CPU et mémoire. Ces données aident les équipes informatiques ou les administrateurs de site à identifier les sites très sollicités et ceux risquant une pénurie de ressources. Les administrateurs peuvent paramétrer des alertes pour être prévenus quand la consommation de ressources dépasse les seuils définis. Sur cette capture d'écran, vous voyez que la moitié des sites utilise plus de 75 % de la mémoire disponible. Vous n'avez ni à cliquer sur chaque site ni à développer des outils supplémentaires pour obtenir ces informations.
Les capacités de vérification continue sur l'objet de flotte fournissent l'état des déploiements de POD : combien de POD ont été déployés, sont en cours ou ont échoué. Une fois déployés, les utilisateurs peuvent également visualiser l'état de santé des Pods : s'ils sont en cours d'exécution, en attente d'une image, à court de mémoire, etc.
De plus, les utilisateurs peuvent voir une vue agrégée de l’efficacité de la politique de sécurité et obtenir des hits sur tous leurs sites, comme le montre la capture d’écran suivante.
Pour en savoir plus sur la manière dont l'approche d'exploitation de flotte de Volterra a été utilisée pour gérer une flotte de 3 000 clusters, veuillez regarder la présentation de Volterra lors d'une conférence Kubernetes et lire ce blog de Jakub Pavlik
Dans le prochain blog, intitulé « Time to Effect », j’expliquerai comment le plan de contrôle distribué et le backbone de Volterra aident à propager et à assurer la cohérence de la configuration sur les sites distribués à l’échelle mondiale dans un laps de temps très court. Restez à l'écoute!