đŸ„‡Kubernetes 1.16 : aperçu des principales nouveautĂ©s | ProHoster

Note de traduction.: Cet article a Ă©tĂ© Ă©crit par Scott Lowe, un ingĂ©nieur expĂ©rimentĂ© en IT, qui est l'auteur/co-auteur de sept livres imprimĂ©s (principalement sur VMware vSphere). Il travaille actuellement pour sa filiale VMware — Heptio (acquise en 2016), spĂ©cialisĂ©e dans le cloud computing et Kubernetes. Le texte sert d'introduction concise et facile Ă  comprendre Ă  la gestion des configurations pour Kubernetes Ă  l'aide de la technologie Kustomize, rĂ©cemment intĂ©grĂ©e Ă  K8s.

đŸ„‡Kubernetes 1.16 : aperçu des principales nouveautĂ©s | ProHoster

Kustomize est un outil qui permet aux utilisateurs « d'adapter des fichiers YAML simples et sans modĂšles Ă  diverses fins, tout en laissant le YAML original intouchĂ© et rĂ©utilisable » (description tirĂ©e directement de rĂ©fĂ©rentiel kustomize sur GitHub). Kustomize peut ĂȘtre exĂ©cutĂ© directement ou, Ă  partir de Kubernetes 1.14, utilisĂ© kubectl -k pour accĂ©der Ă  ses fonctionnalitĂ©s (bien qu'Ă  l'Ă©tat actuel de Kubernetes 1.15, un binaire distinct soit plus rĂ©cent que les fonctionnalitĂ©s intĂ©grĂ©es Ă  kubectl). (Note de traduction.: Avec la rĂ©cente publication Kubernetes 1.16 kustomize est pris en charge , il est Ă©galement intĂ©grĂ© dans l'outil kubeadm.) Dans cette publication, je souhaite familiariser les lecteurs avec les bases de kustomize.

Dans sa forme/application la plus simple, kustomize est simplement un ensemble de ressources (fichiers YAML dĂ©finissant des objets Kubernetes : Deployments, Services, etc.) plus une liste d'instructions sur les modifications Ă  apporter Ă  ces ressources. De la mĂȘme maniĂšre que make utilise un ensemble d'instructions contenues dans Makefile, et Docker construit un conteneur basĂ© sur les instructions de Dockerfile, kustomize utilise kustomization.yaml pour stocker les directives sur les modifications que l'utilisateur souhaite apporter Ă  l'ensemble de ressources.

Voici un exemple de fichier kustomization.yaml:

resources:
- deployment.yaml
- service.yaml
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

Je ne vais pas essayer de parler de tous les champs possibles dans le fichier kustomization.yaml (c'est bien expliqué ici), mais je donnerai une brÚve explication d'un exemple spécifique :

  • Champ resources indique quels (ressources) seront modifiĂ©s par kustomize. Dans ce cas, il recherchera les ressources dans les fichiers deployment.yaml et service.yaml dans son rĂ©pertoire (il est possible d'indiquer des chemins absolus ou relatifs).
  • Champ namePrefix indique Ă  kustomize d'ajouter un prĂ©fixe spĂ©cifique (dans ce cas — dev-) Ă  l'attribut nom de toutes les ressources dĂ©finies dans le champ resources. Ainsi, si dans le Deployment il y a nom avec la valeur nginx-deployment, kustomize le transformera en dev-nginx-deployment.
  • Champ namespace indique Ă  kustomize d'ajouter un espace de noms donnĂ© Ă  toutes les ressources. Dans ce cas, Deployment et Service seront placĂ©s dans l'espace de noms dĂ©veloppement.
  • Enfin, le champ commonLabels contient un ensemble d'Ă©tiquettes qui seront ajoutĂ©es Ă  toutes les ressources. Dans notre exemple, kustomize attribuera une Ă©tiquette aux ressources avec le nom environment et la valeur dĂ©veloppement.

Si l'utilisateur exécute kustomize build . dans le répertoire contenant le fichier kustomization.yaml et les ressources nécessaires (c'est-à-dire les fichiers deployment.yaml et service.yaml), il obtiendra en sortie le texte avec les modifications spécifiées dans kustomization.yaml.

đŸ„‡Kubernetes 1.16 : aperçu des principales nouveautĂ©s | ProHoster
Note de traduction.: Illustration de la documentation du projet sur l'utilisation "simple" de kustomize

La sortie peut ĂȘtre redirigĂ©e, si nĂ©cessaire pour enregistrer les modifications :

kustomize build . > custom-config.yaml

Les rĂ©sultats sont dĂ©terministes (avec les mĂȘmes donnĂ©es en entrĂ©e, les mĂȘmes rĂ©sultats seront obtenus en sortie), il n'est donc pas nĂ©cessaire de sauvegarder le rĂ©sultat dans un fichier. Au lieu de cela, il peut ĂȘtre immĂ©diatement passĂ© Ă  une autre commande :

kustomize build . | kubectl apply -f -

L'accĂšs aux fonctionnalitĂ©s de kustomize peut Ă©galement ĂȘtre obtenu via kubectl -k (Ă  partir de la version 1.14 de Kubernetes). Cependant, gardez Ă  l'esprit qu'un package kustomize autonome se met Ă  jour plus rapidement que celui intĂ©grĂ© dans kubectl (en tout cas, c'est ce qui se passe avec la version 1.15 de Kubernetes).

Les lecteurs pourraient se demander : "Pourquoi toutes ces complexités, si l'on peut éditer les fichiers directement ?" Excellente question. Dans notre exemple, il est effectivement est possible possible de modifier les fichiers deployment.yaml et service.yaml directement, mais que faire s'ils sont un fork d'un projet ? Modifier les fichiers directement complique (si ce n'est pas impossible) le rebase du fork lorsque des modifications sont apportées à la source. L'utilisation de kustomize permet de centraliser ces modifications dans un fichier kustomization.yaml, laissant les fichiers originaux intacts et facilitant ainsi, si nécessaire, le rebase des fichiers sources.

Les avantages de kustomize deviennent Ă©vidents dans des cas d'utilisation plus complexes. Dans l'exemple ci-dessus, kustomization.yaml les ressources se trouvent dans le mĂȘme rĂ©pertoire. Cependant, kustomize supporte des scĂ©narios d'utilisation oĂč il existe une configuration de base et de nombreuses variantes de celle-ci, Ă©galement connues sous le nom de la nouvelle commande. Par exemple, l'utilisateur a souhaitĂ© prendre le Deployment et le Service pour nginx, que j'ai utilisĂ©s comme exemple, et crĂ©er des versions (ou variantes) de dĂ©veloppement, de staging et de production de ces fichiers. Pour cela, il lui faudra les overlays mentionnĂ©s ci-dessus et les ressources de base.

Pour illustrer l'idée des overlays et des ressources de base (base resources), supposons que les répertoires aient la structure suivante :

- base
  - deployment.yaml
  - service.yaml
  - kustomization.yaml
- overlays
  - dev
    - kustomization.yaml
  - staging
    - kustomization.yaml
  - prod
    - kustomization.yaml

Dans le fichier base/kustomization.yaml les utilisateurs utilisent le champ resources déclarent simplement les ressources que doit inclure kustomize.

Dans chacun des fichiers overlays/{dev,staging,prod}/kustomization.yaml les utilisateurs font référence à la configuration de base dans le champ resources, puis spécifient les modifications concrÚtes pour cet environnement. Par exemple, le fichier overlays/dev/kustomization.yaml pourrait ressembler à l'exemple donné précédemment :

resources:
- ../../base
namePrefix: dev-
namespace: development
commonLabels:
  environment: development

Le fichier overlays/prod/kustomization.yaml pourrait ĂȘtre complĂštement diffĂ©rent :

resources:
- ../../base
namePrefix: prod-
namespace: production
commonLabels:
  environment: production
  sre-team: blue

Lorsque l'utilisateur exĂ©cutera kustomize build . dans le rĂ©pertoire overlays/dev, kustomize gĂ©nĂ©rera une variante development. Si toutefois on exĂ©cute kustomize build . dans le rĂ©pertoire overlays/prod — cela produira une variante production. Et tout cela — sans apporter de modifications aux fichiers (base) et tout cela — de maniĂšre dĂ©clarative et dĂ©terministe. La configuration de base et les rĂ©pertoires d'overlays peuvent ĂȘtre directement engagĂ©s dans le systĂšme de contrĂŽle de version, sachant qu'Ă  partir de ces fichiers, on peut reproduire la configuration souhaitĂ©e Ă  tout moment.

đŸ„‡Kubernetes 1.16 : aperçu des principales nouveautĂ©s | ProHoster
Note de traduction.: Illustration de la documentation du projet sur l'utilisation des overlays dans kustomize

Kustomize sait beaucoup faire plus que ce qui est expliqué dans cet article. Néanmoins, j'espÚre qu'il servira de bonne introduction.

Ressources supplémentaires

Il existe de nombreux bons articles et publications sur kustomize. Voici quelques-uns que j'ai trouvés particuliÚrement utiles :

Note de traduction.: Un bloc de liens publié comme recommandé sur le site de l'outil, suivi d'une collection de vidéos des derniÚres présentations sur kustomize. Ressources Si vous avez des questions ou des suggestions pour améliorer ce matériel, je suis toujours ouvert aux retours. Vous pouvez me contacter sur le

canal Slack Kubernetes Twitter ou sur . Amusez-vous Ă  modifier vos manifests avec kustomize !Cinq principaux enseignements du Helm Summit 2019 Ă  Amsterdam

P.S. de l'auteur

Lisez aussi dans notre blog :

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