Blogue
Blockchain et Kubernetes : histoires de chaos orchestré

Blockchain et Kubernetes : histoires de chaos orchestré

Olha Diachuk
May 9, 2024

Es-tu déjà allé à Tokyo ? La première chose qui m'a fascinée, c'est le fonctionnement du métro (oui, cette tautologie a été faite exprès :)). Cette organisation obsédée par le temps composée de personnel, de trains, de passagers, de routine de nettoyage, d'arrivées et de départs basée sur une discipline stricte est l'une des artères d'infrastructure les plus importantes de la ville inactive de Tokyo-san. J'ai imaginé toute la ville enveloppée dans un réseau qui fonctionne en permanence, ce qui me rappelle les réseaux blockchain.

En particulier, toute cette histoire de métro constitue une analogie parfaite avec les relations « Blockchain-Kubernetes ». Un système distribué aussi complexe doit être synchronisé à chaque nœud, à chaque station et au sein de chaque train sans aucune latence. Elle a besoin d'un style de gestion spécial qui suppose des règles strictes tout en étant libre d'agir. K8s fonctionne ici à la fois comme un système de communication pour les répartiteurs, un livre de règles de prestation de services et un guide technique pour l'infrastructure des voies ferrées, des trains, etc.

Donc, puisque vous lisez un blog de Dysnix, et non mon blog de voyage imaginaire, nous allons explorer le thème de la blockchain et de Kubernetes plus en détail. Nous examinerons les cas les plus populaires du portefeuille Dysnix pour découvrir comment Kuber résout les défis des applications décentralisées.

Qu'est-ce que la blockchain pour Kubernetes : un vaste champ d'application de k8s

Les réseaux blockchain sont une symphonie de composants (nœuds de validation, contrats intelligents, mécanismes de consensus) jouant chacun un rôle crucial. Traditionnellement, le déploiement et la gestion de ces composants ainsi que la gestion manuelle du référentiel de versions étaient des tâches manuelles.

Nous avons l'habitude d'imaginer la blockchain comme un système immuable, sécurisé, décentralisé et distribué, mais personne n'a demandé quel en était le coût. De la base matérielle aux couches supplémentaires d'applications et d'API, chaque réseau de blockchain ou application construit dessus est soumis à la même procédure de déploiement, de lancement, de maintenance et de support. La gestion de ces registres distribués peut être un véritable cauchemar en raison de déploiements tentaculaires, d'une mise à l'échelle manuelle et d'une surveillance constante. Ainsi, pour que tout fonctionne avant l'apparition des K8, le réseau Fabric a nécessité beaucoup de travail manuel.

Il a fallu des heures pour des opérations qui ne nécessitent que quelques secondes aujourd'hui, grâce à k8s.

Qu'est-ce que Kubernetes pour la blockchain et pourquoi les DevOps l'apprécient tant

Kubernetes rend la routine opérationnelle plus simple, plus rapide et plus contrôlable. Plus tard, votre système devient plus autonome et vous passez simplement du temps à l'observer fonctionner sans défaillance.

Containérisez tout le désordre des nœuds et envoyez-le en chaîne !

C'est un rêve DevOps. Avec K8s, nous pouvons encapsuler tous les composants de la blockchain dans des conteneurs, des unités légères et portables qui regroupent tout ce dont une application a besoin pour fonctionner. Imaginez déployer l'ensemble de votre réseau blockchain avec un seul fichier YAML à l'aide de kubectl apply -f my-blockchain.yaml. Boum !

Vos nœuds de validation sont opérationnels sur l'ensemble de votre cluster Kubernetes et sont préconfigurés avec les ressources appropriées. Vous avez besoin d'ajouter un nouveau contrat intelligent ? Créez simplement une nouvelle image de conteneur et déployez-la aux côtés des autres. K8s gère le plus gros du travail, garantissant la cohérence et la répétabilité d'un déploiement à l'autre.

Voici un exemple d'extrait de code pour un déploiement Kubernetes de base d'un nœud de validation :


YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: validator-node
spec:
  replicas: 3 # Scale your validator nodes easily
  selector:
    matchLabels:
      app: validator-node
  template:
    metadata:
      labels:
        app: validator-node
    spec:
      containers:
      - name: validator-node
        image: my-validator-node:latest # Replace with your image
        ports:
        - containerPort: 8080
      resources:
        requests:
          cpu: 100m
          memory: 256Mi

C'est aussi simple que cela, il suffit de quelques lignes de code. Cet exemple de déploiement d'un nœud de validation m'a rappelé notre Affaire Nansen qui utilisait k8s :

L'infrastructure de Nansen.ai

Mise à l'échelle sur pilote automatique

Le trafic de la blockchain peut être imprévisible. Une minute, c'est un filet de transactions, la minute suivante, c'est un tsunami. La mise à l'échelle manuelle des nœuds de validation pour suivre le rythme est la recette de l'épuisement professionnel. Les K8 viennent à la rescousse ! Nous pouvons définir des HPA (Horizontal Pod Autoscalers) qui ajustent automatiquement le nombre de répliques de nœuds de validation en fonction de mesures prédéfinies telles que l'utilisation du processeur ou le volume de transactions.

Imaginez un scénario dans lequel le volume de transactions augmente en flèche. Le HPA détecte l'augmentation de la charge et active automatiquement des nœuds de validation supplémentaires pour gérer la surtension. Une fois le trafic diminué, le HPA réduit la taille des nœuds, ce qui permet d'économiser de précieuses ressources. Ce type de dimensionnement intelligent permet à votre réseau de rester performant et rentable.

Caractéristiques d'auto-guérison

Il se passe des choses. Les nœuds tombent en panne, les conteneurs échouent. Mais avec K8s, vous n'avez pas à vous bousculer pour résoudre les problèmes manuellement. K8s utilise des mécanismes d'auto-guérison tels que des sondes de vivacité et de préparation pour surveiller en permanence l'état de santé de votre réseau blockchain. Si un nœud devient non autorisé, K8s redémarre automatiquement le conteneur, garantissant ainsi que votre réseau reste opérationnel avec un minimum de temps d'arrêt.

Ou vous n'êtes peut-être même pas au courant de problèmes, car vos DevOpses de Dysnix ont configuré la rotation des nœuds comme une routine d'autoréparation ; ainsi, vous avez des nœuds 100 % sains en production. La disponibilité permanente est une règle pour nos projets.

Exemple concret : Hyperledger Fabric sur K8s

Hyperledger Fabric, un framework de blockchain populaire, exploite K8s pour rationaliser les déploiements et la gestion. Les composants du tissu tels que le chaincode et les pairs sont conteneurisés, ce qui facilite la mise à l'échelle et la gestion des versions. K8s s'occupe de l'allocation des ressources, des bilans de santé et de l'auto-guérison, ce qui permet aux développeurs de se concentrer sur la création d'applications blockchain innovantes.

Quelles sont les alternatives aux k8 dans la blockchain ?

Bien que Kubernetes (K8s) soit devenu un choix populaire pour la gestion des réseaux blockchain, certaines alternatives doivent être envisagées en fonction de vos besoins spécifiques.

  • Services de blockchain basés sur le cloud :

    Amazon Managed Blockchain, Azure Blockchain Service et IBM Blockchain Platform proposent des environnements préconfigurés pour le déploiement et la gestion de réseaux blockchain.
  • Solutions de déploiement personnalisées :

    Cette approche vous ramène avant k8s à la construction manuelle de votre infrastructure et à l'automatisation des scripts de déploiement et de gestion du réseau blockchain.
  • Autres plates-formes d'orchestration de conteneurs :

    Bien que moins largement utilisées que K8s dans l'espace blockchain, des plates-formes comme Docker Swarm et Mesos proposent également une orchestration de conteneurs pour les projets Web3.

Mais comment choisir ? Découvrons-le en comparant ces outils et approches (TL ; DR ci-dessous) :

Fonctionnalité

Kubernetes

Services basés sur le Cloud (SBC)

Solutions de déploiement personnalisées

Autres orchestrateurs de conteneurs

Déploiement

Manuel (YAML) ou outils automatisés

Environnements préconfigurés

Nécessite du développement et des scripts

Manuel (YAML ou spécifique à la plateforme)

Flexibilité

Très personnalisable

Faible, limitée par la plateforme

Élevée, contrôle total

Dépend de la plateforme

Scalabilité

Automatique avec l'extension horizontale des pods (HPA)

Élevée, gérée par la plateforme

Élevée, nécessite un script personnalisé

Dépend de la plateforme

Sécurité

Nécessite une configuration avec les meilleures pratiques

Gérée par la plateforme (modèle de responsabilité partagée)

Nécessite une implémentation de sécurité personnalisée

Nécessite une configuration avec les meilleures pratiques

Surveillance et Journalisation

Nécessite une intégration avec des outils externes

Gérée par la plateforme (accès limité)

Nécessite une implémentation personnalisée

Nécessite une intégration avec des outils externes

Coût

Variable en fonction de l'infrastructure et des ressources

Facturation basée sur l'abonnement

Nécessite des coûts de développement et d'infrastructure initiaux

Variable en fonction de l'infrastructure et des licences

Facilité d'utilisation

Modérée, nécessite une certaine expertise technique

Facile, peu de connaissances techniques requises

Difficile, nécessite une expertise de développement significative

Dépend de la familiarité avec la plateforme, généralement modérée

Emprisonnement chez le fournisseur

Non, plateforme open-source

Oui, verrouillé dans un fournisseur de cloud spécifique

Non, contrôle total sur l'environnement

Dépend de la plateforme choisie

Communauté et support

Communauté large et active

Support fourni par le fournisseur de cloud

Limité à l'expertise interne

Dépend de la plateforme choisie

  • Services basés sur le cloud sont une bonne option pour les débutants ou ceux qui recherchent une solution rapide et facile. Cependant, ils n'ont pas la flexibilité et la personnalisation offertes par les K8 ou les solutions personnalisées.
  • Solutions de déploiement personnalisées offrent le plus de contrôle mais nécessitent le plus d'efforts de développement. Ils sont particulièrement adaptés aux grandes organisations dotées d'équipes DevOps dédiées.
  • Orchestrateurs de conteneurs alternatifs peut être une bonne solution si votre équipe a déjà de l'expérience avec eux ou a des exigences spécifiques non satisfaites par K8s. Cependant, ils peuvent avoir une communauté plus petite et moins de fonctionnalités spécifiquement conçues pour la gestion de la blockchain.
  • Dans tous les autres cas...Kubernetes est votre choix idéal.

Les 5 manières les plus populaires d'utiliser Kubernetes pour les applications blockchain basées sur les fonctionnalités uniques de K8s

Kubernetes (K8s) a changé la donne en matière de gestion des applications blockchain grâce à ses fonctionnalités uniques. Voici 5 des manières les plus populaires dont K8s renforce les applications blockchain :

Déploiements simplifiés et répétables (configuration déclarative)

La configuration déclarative avec des fichiers YAML vous permet de définir l'état souhaité de votre réseau blockchain (par exemple, nombre de nœuds de validation, allocation de ressources). Cela permet de rationaliser les déploiements dans tous les environnements.

Le contrôle de version des fichiers YAML garantit la cohérence et la reproductibilité, ce qui est crucial pour la stabilité du réseau blockchain. Imaginez le déploiement d'un réseau blockchain multi-nœuds complexe avec une seule commande kubectl apply.

Mise à l'échelle élastique en fonction de la demande (HPA)

Les HPA font automatiquement évoluer les déploiements (par exemple, les nœuds de validation) en fonction de mesures prédéfinies telles que l'utilisation du processeur ou le volume de transactions.

Cela garantit des performances fluides pendant les périodes de volume de transactions élevé et évite le gaspillage de ressources pendant les périodes de faible trafic. Imaginez que votre réseau blockchain agrandisse automatiquement les nœuds de validation pour faire face à une augmentation soudaine des transactions en cryptomonnaies.

Chez Dysnix, nous sommes allés encore plus loin et avons inventé notre version améliorée de HPA—l'autoscaler prédictif qui utilise l'IA pour signaler et réagir aux premiers signes de futurs pics de trafic.

Tableau comparatif des fonctionnalités de l'autoscaler prédictif

Sondes Liveness & Readiness pour une haute disponibilité

K8s surveille en permanence l'état des conteneurs à l'aide de sondes de vivacité et de préparation. En cas de dysfonctionnement d'un nœud, K8s redémarre automatiquement le conteneur, garantissant ainsi une haute disponibilité.

Cette fonctionnalité minimise les temps d'arrêt et préserve l'intégrité du réseau. Un nœud de validation non autorisé ne détruit pas l'ensemble de votre réseau de blockchain. K8s détecte le problème et redémarre le conteneur, garantissant ainsi un fonctionnement continu.

Modularisation et isolation grâce à la conteneurisation

Les conteneurs K8s fournissent une isolation et garantissent des environnements d'exécution cohérents. Cela simplifie le développement, les tests et le déploiement. Les modifications apportées à un composant spécifique (par exemple, un contrat intelligent) sont isolées dans son conteneur, ce qui minimise les défaillances en cascade.

Avec k8s, vous pouvez facilement mettre à jour un contrat intelligent sans affecter les autres composants de votre réseau blockchain.

Politiques réseau déclaratives et politiques de sécurité des pods

K8s applique des politiques de sécurité au niveau du réseau et des pods, en limitant les canaux de communication et les privilèges d'accès. Il renforce la sécurité globale de la blockchain en contrôlant la communication entre les composants et en empêchant les accès non autorisés.

Imaginez définir des politiques réseau pour empêcher les nœuds de validation de communiquer avec des entités non fiables, renforçant ainsi la sécurité de votre réseau blockchain.

Régler le rythme de synchronisation pour les systèmes décentralisés

Alors voilà. Nous espérons que vous aimerez notre petit voyage vers la relation entre la blockchain et Kubernetes. Si vous avez des questions, n'hésitez pas à poursuivre notre discussion sur notre page X officielle.

Nous vous invitons également à regarder de plus près nos étuis. Dysnix met en place un suivi personnalisé pour presque tous les projets sur lesquels nous travaillons. Nansen, PancakeSwap et GotBit sont nos favoris en matière de synergie blockchain-k8.

Nous vous invitons à notre Salon de discussion Web3, où les meilleurs passionnés de blockchain de niveau C partagent leurs défis et leurs solutions, ou simplement envoyez-nous un message directement. Nous sommes toujours ouverts à de nouvelles opportunités.

Et comme toujours, merci de m'avoir lu 🙂

Olha Diachuk
Writer at Dysnix
10+ years in tech writing. Trained researcher and tech enthusiast.
Table des matières
Articles connexes
Abonnez-vous au blog
La meilleure source d'informations pour le service client, les conseils de vente, les guides et les meilleures pratiques du secteur. Joignez-vous à nous.
Merci de votre inscription au blog Dysnix
Vous serez désormais le premier à savoir quand nous publierons un nouvel article
J'ai compris
Oups ! Une erreur s'est produite lors de l'envoi du formulaire.
Copié dans le presse-papiers
Collez-le où vous voulez