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.

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Ă©.

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.

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

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.

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.

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

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.

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Ă©.

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.

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.

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.

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Ă©.

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 :

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

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 :
![]()
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.

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

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.

à 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.

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.

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, , un Ă©quivalent unique des serveurs d'entrĂ©e de gamme, conçu pour vous : (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 aux Pays-Bas ! Dell R420 â 2x E5-2430 2.2GHz 6C 128Go DDR3 2x960Go SSD 1Gbps 100To â Ă partir de 99 $ ! Lisez sur
Source : habr.com
