Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Meilleures pratiques Kubernetes. Création de petits conteneurs

Au fur et Ă  mesure que vous commencez Ă  crĂ©er de plus en plus de services Kubernetes, des tĂąches simples au dĂ©but commencent Ă  devenir compliquĂ©es. Par exemple, les Ă©quipes de dĂ©veloppeurs ne peuvent pas crĂ©er de services ou de dĂ©ploiements avec le mĂȘme nom. Si vous avez des milliers de pods, Ă©numĂ©rer ces derniers peut prendre beaucoup de temps, sans parler de la nĂ©cessitĂ© de garantir une gestion efficace. Et ce n'est que la partie Ă©mergĂ©e de l'iceberg.

Examinons comment les namespaces facilitent la gestion des ressources Kubernetes. Mais qu'est-ce qu'un namespace ? Un namespace peut ĂȘtre considĂ©rĂ© comme un cluster virtuel Ă  l'intĂ©rieur de votre cluster Kubernetes. Vous pouvez avoir plusieurs namespaces isolĂ©s les uns des autres au sein d'un mĂȘme cluster Kubernetes. Ils peuvent vraiment vous aider, vous et vos Ă©quipes, en termes d'organisation, de sĂ©curitĂ© et mĂȘme de performance du systĂšme.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Dans la plupart des distributions Kubernetes, le cluster est livrĂ© « prĂȘt Ă  l'emploi » avec un namespace nommĂ© « default ». En rĂ©alitĂ©, il existe trois namespaces avec lesquels Kubernetes interagit : default, kube-system et kube-public. Actuellement, kube-public n'est pas souvent utilisĂ©.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Il est conseillĂ© de ne pas toucher au namespace kube, surtout dans un systĂšme gĂ©rĂ© comme Google Kubernetes Engine. Il utilise le namespace « default » comme emplacement oĂč vos services et applications sont créés. Il n'y a rien de vraiment spĂ©cial Ă  propos de celui-ci, si ce n'est que Kubernetes est configurĂ© pour l'utiliser par dĂ©faut et que vous ne pouvez pas le supprimer. Cela convient parfaitement pour dĂ©marrer et pour les systĂšmes Ă  faible performance, mais je ne recommanderais pas d'utiliser le namespace default dans de grandes systĂšmes de production. Dans ce dernier cas, une Ă©quipe de dĂ©veloppeurs pourrait facilement Ă©craser le code d'une autre Ă©quipe et perturber son fonctionnement sans mĂȘme s'en rendre compte.

Il est donc recommandĂ© de crĂ©er plusieurs namespaces et de les utiliser pour segmenter vos services en unitĂ©s gĂ©rĂ©es. Un namespace peut ĂȘtre créé avec une simple commande. Si vous souhaitez crĂ©er un namespace nommĂ© test, utilisez la commande $ kubectl create namespace test ou crĂ©ez simplement un fichier YAML et utilisez-le comme n'importe quelle autre ressource Kubernetes.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Vous pouvez voir tous les namespaces Ă  l'aide de la commande $ kubectl get namespace.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

AprÚs son exécution, vous verrez trois espaces de noms intégrés et un nouvel espace de noms appelé « test ». Examinons un fichier YAML simple destiné à créer un pod. Vous remarquerez qu'il n'y a aucune mention d'espace de noms.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Si vous utilisez kubectl pour exécuter ce fichier, il créera le module mypod dans l'espace de noms actif actuel. Ce sera l'espace de noms par défaut jusqu'à ce que vous le changiez. Il existe 2 façons de signaler à Kubernetes dans quel espace de noms vous souhaitez créer votre ressource. La premiÚre méthode consiste à utiliser l'option d'espace de noms lors de la création de la ressource.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

La deuxiÚme méthode consiste à spécifier l'espace de noms dans la déclaration YAML.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Si vous spécifiez l'espace de noms dans le YAML, la ressource sera toujours créée dans cet espace. Si vous essayez d'utiliser un autre espace de noms en utilisant l'option d'espace de noms, la commande échouera. Maintenant, si vous essayez de trouver votre pod, vous ne pourrez pas le faire.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Cela se produit parce que toutes les commandes s'exĂ©cutent en dehors de l'espace de noms actif actuel. Pour trouver votre pod, vous devez utiliser l'option d'espace de noms, mais cela devient vite ennuyeux, surtout si vous travaillez en tant que dĂ©veloppeur dans un groupe qui utilise son propre espace de noms et ne souhaite pas utiliser cette option pour chaque commande distincte. Voyons comment cela peut ĂȘtre corrigĂ©.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Par dĂ©faut, votre espace de noms actif s'appelle default. Si vous ne spĂ©cifiez pas l'espace de noms dans le YAML de la ressource, toutes les commandes Kubernetes utiliseront cet espace de noms actif par dĂ©faut. Malheureusement, tenter de gĂ©rer l'espace de noms actif avec kubectl peut ĂȘtre vouĂ© Ă  l'Ă©chec. Cependant, il existe un excellent outil appelĂ© Kubens qui simplifie Ă©normĂ©ment ce processus. Lorsque vous exĂ©cutez la commande kubens, vous voyez tous les espaces de noms avec l'espace de noms actif mis en surbrillance.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Pour changer l'espace de noms actif en l'espace de noms test, il vous suffit d'exĂ©cuter la commande $ kubens test. Si vous entrez Ă  nouveau la commande $ kubens aprĂšs cela, vous verrez que le nouvel espace de noms actif est dĂ©sormais soulignĂ© – test.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Cela signifie que vous n'avez pas besoin d'un drapeau d'espace de noms pour voir le pod dans l'espace de noms test.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Ainsi, les espaces de noms sont cachés les uns des autres, mais ne sont pas isolés les uns des autres. Un service dans un espace de noms peut facilement communiquer avec un service dans un autre espace de noms, ce qui est souvent trÚs utile. La possibilité de communication entre différents espaces de noms signifie que le service de vos développeurs peut interagir avec le service d'une autre équipe de développement dans un autre espace de noms.

En gĂ©nĂ©ral, lorsque votre application souhaite accĂ©der Ă  un service Kubernetes, vous utilisez le service de dĂ©couverte DNS intĂ©grĂ© et indiquez simplement Ă  votre application le nom du service. Cependant, vous pouvez crĂ©er un service avec le mĂȘme nom dans plusieurs espaces de noms, ce qui n'est pas autorisĂ©.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Heureusement, il est facile de contourner cela en utilisant la forme entiÚrement qualifiée de l'adresse DNS. Les services dans Kubernetes exposent leurs points de terminaison en utilisant un modÚle DNS commun. Cela ressemble à peu prÚs à ceci :

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

En rÚgle générale, vous avez simplement besoin du nom du service, et le DNS déterminera automatiquement l'adresse complÚte.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Cependant, si vous devez accéder à un service dans un autre espace de noms, utilisez simplement le nom du service plus le nom de l'espace de noms :

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Par exemple, si vous souhaitez vous connecter à la base de données d'un service dans l'espace de noms test, vous pouvez utiliser l'adresse database.test.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Si vous voulez vous connecter à la base de données d'un service dans l'espace de noms prod, vous utilisez database.prod.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Si vous souhaitez vraiment isoler et restreindre l'accÚs à l'espace de noms, Kubernetes permet de le faire grùce aux politiques de réseau Kubernetes Network Policies. J'en parlerai dans la prochaine série.

On me pose souvent la question de savoir combien d'espaces de noms créer et dans quel but ? Qu'est-ce qu'un fragment de données géré ?

Si vous crĂ©ez trop de namespaces, ils vous gĂȘneront simplement. En revanche, s'il y en a trop peu, vous perdrez tous les avantages d'une telle solution. Je pense qu'il y a quatre Ă©tapes principales que chaque entreprise traverse lors de la crĂ©ation de sa structure organisationnelle. Selon l'Ă©tape de dĂ©veloppement Ă  laquelle votre projet ou entreprise est arrivĂ©, vous pouvez adopter une stratĂ©gie de crĂ©ation de namespace appropriĂ©e.

Imaginez que vous faites partie d'une petite Ă©quipe travaillant sur le dĂ©veloppement de 5 Ă  10 microservices et que vous pouvez facilement rassembler tous les dĂ©veloppeurs dans une mĂȘme piĂšce. Dans cette situation, il a du sens de lancer tous les services de production dans l'espace de nom par dĂ©faut. Bien sĂ»r, pour plus de flexibilitĂ©, vous pouvez utiliser deux espaces de noms — un pour la production et un pour le dĂ©veloppement. Et il est probable que vous testiez votre dĂ©veloppement sur votre ordinateur local avec quelque chose comme Minikube.

Supposons que les conditions aient changĂ© et que vous ayez maintenant une Ă©quipe en forte croissance travaillant simultanĂ©ment sur plus de 10 microservices. Il vient un moment oĂč il est nĂ©cessaire d'utiliser plusieurs clusters ou namespaces, sĂ©parĂ©ment pour la production et le dĂ©veloppement. Vous pouvez diviser l'Ă©quipe en plusieurs sous-groupes, chacun ayant ses propres microservices et chaque Ă©quipe pouvant choisir son propre namespace pour faciliter le processus de gestion du dĂ©veloppement et du dĂ©ploiement logiciel.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

À mesure que chaque membre de l'Ă©quipe comprend comment fonctionne le systĂšme dans son ensemble, il devient de plus en plus difficile de coordonner chaque changement avec tous les autres dĂ©veloppeurs. Essayer de faire tourner toute la pile sur votre ordinateur local devient de plus en plus complexe.

Dans les grandes entreprises, les dĂ©veloppeurs ne savent souvent pas qui travaille sur quoi en particulier. Les Ă©quipes communiquent via des contrats de service ou utilisent la technologie Service Mesh, qui ajoute un niveau d'abstraction au rĂ©seau, comme l'outil de configuration Istio. Essayer de lancer toute la pile localement est tout simplement impossible. Je recommande vivement d'utiliser dans Kubernetes une plateforme de livraison continue (CD) telle que Spinnaker. Ainsi, vient un moment oĂč chaque Ă©quipe a dĂ©finitivement besoin de son propre espace de noms. Chaque Ă©quipe peut mĂȘme choisir plusieurs espaces de noms pour l'environnement de dĂ©veloppement et l'environnement de production.

Enfin, il existe de grandes entreprises oĂč un groupe de dĂ©veloppeurs ne sait mĂȘme pas que d'autres groupes existent. Une telle entreprise peut mĂȘme embaucher des dĂ©veloppeurs externes qui interagissent via des API bien documentĂ©es. Dans chaque groupe, il y a plusieurs Ă©quipes et plusieurs microservices. Dans ce cas, il est nĂ©cessaire d'utiliser tous les outils dont j'ai parlĂ© prĂ©cĂ©demment.

Meilleures pratiques Kubernetes. Organisation de Kubernetes avec des espaces de noms

Les programmeurs ne doivent pas dĂ©ployer les services manuellement et ne doivent pas avoir accĂšs Ă  des espaces de noms qui ne les concernent pas. À ce stade, il est judicieux d'avoir plusieurs clusters pour rĂ©duire le « rayon d'explosion » des applications mal configurĂ©es, pour simplifier les processus de facturation et de gestion des ressources.

Ainsi, une bonne utilisation des espaces de noms par votre organisation permet de rendre Kubernetes plus gérable, contrÎlable, sûr et flexible.

Les développeurs de Xenoblade Chronicles: Definitive Edition dans le dernier numéro du magazine Weekly Famitsu.

Lire la vidéo

Un peu de publicitĂ© 🙂

Merci de rester avec nous. Aimez-vous nos articles ? Voulez-vous voir plus de contenu intĂ©ressant ? Soutenez-nous en passants une commande ou en nous recommandant Ă  des amis, VPS cloud pour dĂ©veloppeurs Ă  partir de 4,99 $, un Ă©quivalent unique des serveurs d'entrĂ©e de gamme, conçu pour vous : Toute la vĂ©ritĂ© sur le VPS (KVM) E5-2697 v3 (6 cƓurs) 10 Go DDR4 480 Go SSD 1 Gbps Ă  partir de 19 $ ou comment bien diviser un serveur ? (options disponibles avec RAID1 et RAID10, jusqu'Ă  24 cƓurs et jusqu'Ă  40 Go DDR4).

Dell R730xd deux fois moins cher dans le data center Equinix Tier IV Ă  Amsterdam ? Uniquement chez nous 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64Go DDR4 4x960Go SSD 1Gbps 100 To Ă  partir de 199 $ aux Pays-Bas ! Dell R420 — 2x E5-2430 2.2GHz 6C 128Go DDR3 2x960Go SSD 1Gbps 100To — Ă  partir de 99 $ ! Lisez sur Comment construire une infrastructure de classe entreprise avec des serveurs Dell R730xd E5-2650 v4 coĂ»tant 9000 euros pour des clopinettes ?

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster