web-dev-qa-db-fra.com

Draft et Helm vs Ksonnet?

Si je comprends bien tous ces outils Draft , Helm et Ksonnet ont des fonctionnalités qui se chevauchent telles que la création d'un graphique ainsi que le déploiement de configurations kubernetes.

Je comprends que le but de ces outils serait de décrire et configurer l'application ainsi que les environnements k8s.

En utilisant Draft, nous pouvons créer Dockerfile, Chart. Néanmoins, nous pouvons faire la même chose avec Helm et Ksonnet.

Ma question est de savoir si ces composants créent un pipeline en CI/CD alors quelle sera la commande?

par exemple,

draft -> ksonnet> helm or

brouillon -> barre -> ksonnet

15
Suresh Vishnoi

En bref, le projet et la barre sont plus ou moins complémentaires et ksonnet est orthogonal, fournissant spécifiquement une alternative à barre .

En élaborant, je diviserai ma réponse en trois sections principales, dont la première décrit comment rédige et la barre interagissent, le second décrivant comment ksonnet est orthogonal aux autres, et enfin une section expliquant comment je les comprends avec respect vers CI/CD.

Heaume et tirant d'eau

Helm et Draft sont complémentaires dans le sens où Helm, qui peut être considéré comme un système de gestion de packages pour Kubernetes, fournit une partie des fonctionnalités offertes par Draft qui est lui-même essentiellement un outil de développement d'applications Kubernetes.

La relation entre Draft et Helm peut être résumée en soulignant que dans la poursuite de son objectif de simplification du développement d'applications Kubernetes, Draft produit un graphique Helm en utilisant des métadonnées déduites de votre type d'application actuel (plus à ce sujet ci-dessous) si une n'existe pas déjà ou utilise et existant afin de déployer/mettre à jour une version de développement de votre application sans que vous ayez besoin de savoir quoi faire.

Helm for Kubernetes Package Management

Comme mentionné précédemment, Helm est un système de gestion de packages pour les applications basées sur Kubernetes. Il offre les fonctionnalités suivantes:

  • Une approche basée sur des modèles pour définir les manifestes Kubernetes (appelés "diagrammes")
  • Gestion des packages, y compris un service de référentiel de packages de base pour héberger les packages publiés.
  • Gestion du cycle de vie des applications, y compris le déploiement, la mise à jour et la purge des applications Helm
  • Dépendances des packages

Helm adopte une approche YAML basée sur des modèles pour paramétrer les manifestes Kubernetes et permet de partager et de remplacer les valeurs entre les packages dépendants. c'est-à-dire que le supposé package A dépend du package B; Le package A peut réutiliser les valeurs de configuration définies sur le package B et il peut remplacer ces paramètres par des valeurs qui lui sont propres. Les valeurs de tous les packages d'un déploiement donné peuvent également être remplacées à l'aide de l'outil de ligne de commande Helm.

Il convient également de mentionner le fait que Helm dépend de la disponibilité de son composant côté cluster nommé "Tiller" pour effectuer le travail de réification des modèles et de déploiement des manifestes Kubernetes générés sur le cluster.

Projet pour le développement d'applications Kubernetes

L'objectif de Draft est de simplifier considérablement le développement des applications Kubernetes en créant et déployant rapidement les graphiques/packages Helm et les images de docker correspondantes nécessaires pour exécuter un projet - à condition que les éléments suivants existent:

  • Un cluster Kubernetes
  • Le pod Tiller de Helm installé dans le cluster Kubernetes
  • Un registre Docker

Le projet de guide d'installation fournit des détails sur la configuration de ces éléments pour les essayer vous-même.

Draft s'appuie également sur Helm en fournissant un format de "packaging" de haut niveau qui inclut à la fois le graphique de barre d'application et le Dockerfile, ce dernier lui donnant la possibilité de créer des images Docker.

Enfin, il prend en charge des langages de programmation spécifiques et tentera dans une certaine mesure de déduire le langage de programmation et les frameworks que vous utilisez lors de la création initiale d'un nouveau projet de projet à l'aide de draft create.

Ksonnet pour la gestion des packages Kubernetes

Comme mentionné précédemment, Ksonnet est orthogonal à bien des égards à Helm, fournissant essentiellement les mêmes fonctionnalités en ce qui concerne la gestion des packages enveloppés dans une terminologie différente - voir son documentation sur les concepts de base . Il convient de noter qu'il n'est pas compatible avec et ne répond pas aux mêmes préoccupations que Draft.

Je dis que Ksonnet et Helm sont orthogonaux parce qu'ils adoptent des approches mutuellement incompatibles pour générer et déployer des manifestes Kubernetes. Alors que Helm utilise le modèle YAML, Ksonnet génère des manifestes Kubernetes en utilisant un langage "modèle de données" appelé Jsonnet . De plus, plutôt que de concevoir des packages "dépendants" comme c'est le cas avec Helm, Ksonnet brouille la frontière entre les services dépendants en les représentant comme des "prototypes" composables. Enfin, plutôt que de dépendre d'une application côté cluster qui réifie et déploie des modèles de manifeste, Ksonnet a une sous-commande apply analogue à kubectl apply.

CI/CD

Alors, où ces pièces s'intègrent-elles dans un flux de travail CI/CD? Eh bien, puisqu'il existe essentiellement deux ensembles d'outils mutuellement incompatibles, considérons-les au cas par cas:

Brouillon + Heaume

Selon la section Q&A de la conception préliminaire , il est uniquement conçu comme un outil de développeur destiné à faire abstraction de la complexité de la gestion des kubernetes, des commandes et des dockers des développeurs principalement intéressés à voir leur application s'exécuter dans un cluster de développement.

Dans cet esprit, toute approche CD impliquant cet ensemble d'outils devrait faire ce qui suit:

  • Créez des images de docker à l'aide de la CLI docker si nécessaire
  • Créez un ou plusieurs packages Helm à l'aide de la CLI helm
  • Déployer le (s) package (s) Helm vers le référentiel Helm à l'aide de la CLI helm
  • Installer/mettre à jour les packages Helm sur les clusters Kubernetes de transfert/production appropriés à l'aide de la CLI helm

Ksonnet

Le workflow du CD Ksonnet est quelque peu abrégé par rapport au workflow helm ci-dessus:

  • Créez des images de docker à l'aide de la CLI docker si nécessaire
  • Appliquer le manifeste Ksonnet à l'aide de la CLI ks

Alors qu'avec Helm, vous déploieriez le package de votre application dans un registre Helm pour une réutilisation, si votre manifeste Ksonnet contient prototypes réutilisables qui pourraient être utiles à une autre application basée sur Ksonnet que vous voudriez garantir il est disponible dans un dépôt git comme décrit dans la documentation du registre Ksonnet.

Cela signifie que la façon dont les définitions de Ksonnet sont traitées dans CI/CD dépend largement du ou des dépôts git dans lesquels vous décidez de les stocker et de la façon dont ils sont structurés.

34
Wayne Warren