GNU/Linux >> Tutoriels Linux >  >> Linux

Ansible vs Kubernetes :comprendre les différences

Présentation

À mesure que les applications Web deviennent plus volumineuses et plus complexes, le besoin de développement de logiciels automatisés, de provisionnement d'infrastructure et de maintenance augmente.

Des outils qui facilitent les tâches répétitives (telles que le déploiement et la mise à jour d'applications sur des serveurs cloud natifs) aux solutions complètes d'orchestration de conteneurs, l'automatisation du développement de logiciels est un domaine diversifié et en évolution rapide.

Cet article présente les avantages et les inconvénients de deux outils d'automatisation populaires :Ansible et Kubernetes. De plus, il inclut des cas d'utilisation pour chaque plate-forme et suggère comment vous pouvez les utiliser ensemble.

Ansible contre Kubernetes :définitions

Ansible et Kubernetes sont tous deux des outils d'automatisation, mais ils ont des objectifs différents dans le cycle de vie du développement logiciel.

Ansible

Ansible est un moteur d'automatisation qui automatise le déploiement d'applications, le provisionnement du cloud et l'orchestration au sein d'un service. De plus, il aide à la gestion de la configuration. Il s'agit d'un système déclaratif qui utilise des Playbooks Ansible basés sur YAML qui utilisent un langage simple pour décrire les tâches d'automatisation.

Les outils similaires à Ansible sont Jenkins, Puppet, Terraform Chef, Rudder, etc.

Kubernetes

Kubernetes est une plate-forme d'orchestration pour automatiser le déploiement, la gestion et la mise à l'échelle des applications conteneurisées. Sa fonction principale est la gestion des clusters. Il contrôle également la planification, l'exécution et la gestion des images Docker sur le serveur. Il est compatible avec de nombreux outils de conteneur et fournit une interface API unifiée capable de gérer des systèmes complexes répartis sur plusieurs serveurs et plates-formes.

Pour explorer des outils similaires à Kubernetes, consultez notre article sur les meilleurs outils d'orchestration de conteneurs.

Comment fonctionnent-ils ?

Ansible

Ansible fonctionne en poussant les modules Ansible (scripts autonomes contenus dans les playbooks Ansible) vers les nœuds. Les modules sont conçus pour décrire l'état souhaité de l'ensemble du système, y compris l'infrastructure sous-jacente. Ils sont exécutés via SSH et supprimés une fois que le système atteint l'état souhaité.

Ansible ne nécessite pas de serveurs, de bases de données ou de démons. Il utilise un seul "nœud de contrôle" pour gérer et surveiller les serveurs distants. Les modules peuvent être situés sur n'importe quel serveur du système. Un simple fichier INI est utilisé pour répertorier les machines gérées en groupes. Voici un exemple du contenu d'un tel fichier :

[webservers]
www1.test.com
www2.test.com

[dbservers]
db0.test.com
db1.test.com
db2.test.com

Avec Ansible, il est possible d'ajouter et de supprimer des machines des équilibreurs de charge et des fenêtres de surveillance, de créer dynamiquement des fichiers de configuration et de centraliser la gestion et le déploiement de la configuration.

Kubernetes

Kubernetes fonctionne en recevant les entrées de l'utilisateur via des fichiers manifestes. Ces fichiers contiennent la description générale de l'état souhaité du cluster. Les utilisateurs interagissent avec Kubernetes via kubectl, l'interface de ligne de commande par défaut. À son tour, kubectl transmet les instructions au serveur d'API Kubernetes.

Le but du serveur API est de gérer automatiquement les conteneurs en suivant la déclaration fournie dans le fichier manifeste. Il garantit que l'état actuel du cluster et l'état souhaité sont toujours les mêmes.

Les clusters Kubernetes sont constitués des composants suivants :

  • Pods - Groupes de conteneurs sur le même nœud qui sont configurés pour fonctionner ensemble. Les pods sont la plus petite unité de déploiement dans Kubernetes.
  • Libellés - Paires clé/valeur attribuées aux objets pour identification.
  • Services - Groupes de pods opérant sous le même nom et remplissant la même fonction. Les services peuvent être utilisés comme équilibreurs de charge, contrôlant la distribution du trafic.
  • Contrôleurs de réplication - Cadres permettant de s'assurer que le nombre correct d'instances dupliquées de pod est planifié et exécuté à tout moment.

Ansible :avantages et inconvénients

Avantages

  • Simple - Ansible est facile à configurer et à apprendre car il propose une documentation complète et bien organisée. Il est également simple de résoudre les erreurs dans Ansible, car il exécute les tâches de manière séquentielle et s'arrête lorsqu'il rencontre une erreur.
  • Sans agent - Toutes les communications concernant la gestion des nœuds dans Ansible sont effectuées via SSH ou le module Paramiko (une implémentation de SSH2). En pratique, cela signifie qu'Ansible ne nécessite aucun agent de serveur distant, ce qui améliore les performances et la sécurité de l'outil.
  • Basé sur YAML - Les playbooks Ansible sont essentiellement des fichiers YAML, faciles à lire et bien connus des développeurs.
  • Capable et efficace - L'outil est capable de gérer des workflows complexes.
  • Souple - De nombreux modules utiles permettent une personnalisation facile d'Ansible.
  • Conçu en Python - Les bibliothèques Python font partie de la plupart des distributions Linux. Par conséquent, les développeurs se sentent souvent chez eux lorsqu'ils travaillent avec.
  • Gratuit - Ansible est une solution open source offerte gratuitement.

Inconvénients

  • Interface graphique sous-développée - Ansible a été créé en tant qu'outil de ligne de commande. Les tentatives ultérieures d'implémentation d'une interface graphique (comme AWX et plus tard Ansible Tower) n'ont pas réussi à transférer toutes les fonctionnalités de la CLI. L'interface graphique peut également se désynchroniser avec la CLI, ce qui entraîne des requêtes incohérentes.
  • Apatride - Contrairement à Terraform ou Puppet, Ansible est un système sans état et ne garde aucune trace des dépendances. Cela peut présenter un problème dans les scénarios où l'environnement change.
  • Mauvaise prise en charge de Windows - Ansible pour Windows est un travail en cours. Actuellement, vous pouvez exécuter Ansible sur Windows, mais les machines Linux sont toujours nécessaires pour contrôler les hôtes Windows.
  • Manque de soutien de la communauté - Ansible est relativement nouveau sur le marché et a une communauté d'utilisateurs plus petite que ses concurrents.

Kubernetes :avantages et inconvénients

Avantages

  • Très évolutif et efficace - La capacité à s'adapter aux circonstances est ce qui fait de Kubernetes un outil extrêmement économe en ressources. Il permet une mise à l'échelle horizontale en ajoutant ou en supprimant des conteneurs pour prendre en charge des charges de travail accrues ou réduites.
  • Permet la communication avec le conteneur - La plate-forme fournit un cadre permettant aux conteneurs de communiquer et garantit qu'ils sont toujours correctement synchronisés.
  • Élimine les blocages de l'infrastructure - Avec Kubernetes, les organisations n'ont pas à se soucier des conséquences de l'utilisation de plusieurs environnements de production et de développement. Ceci est particulièrement utile dans les scénarios hybrides et multicloud.
  • Configuration déclarative - Il permet aux utilisateurs de déclarer un état souhaité du système, puis de s'assurer que cet état est maintenu. Par rapport à la configuration impérative, cette approche est beaucoup moins sujette aux erreurs.
  • Immuable - Avec la possibilité d'annuler les modifications, la création et le déploiement de nouvelles images de conteneurs sont simples et sûrs.
  • Auto-guérison - Kubernetes automatise le processus de surveillance des répliques et en introduit de nouvelles en cas de panne.
  • Gratuit - Il s'agit d'un projet open-source, disponible gratuitement.

Inconvénients

  • Courbe d'apprentissage abrupte - Kubernetes est un système complexe qui utilise de nombreuses nouvelles technologies.
  • Complexité - Alors que les applications avec de nombreux utilisateurs distribués bénéficient certainement de Kubernetes, l'utilisation de l'outil pour des déploiements plus simples peut réduire la productivité.
  • La transition vers Kubernetes peut être difficile - L'introduire dans votre organisation nécessite un personnel formé et un ajustement du flux de travail.

Comment choisir

Compte tenu de la différence de leurs fonctions, vous n'avez pas besoin de choisir entre les deux outils. S'appuyer sur un seul outil d'automatisation peut être contre-productif dans un environnement de développement logiciel. Une stratégie d'automatisation plus large doit être établie avant que l'automatisation ne soit introduite dans une organisation.

Kubernetes n'est pas conçu pour gérer l'intégralité du cycle de vie d'une application. Ansible est un bon choix pour gérer les serveurs et les applications à l'intérieur de Kubernetes, ainsi que les intégrations externes.

Utilisés ensemble, Kubernetes et Ansible se complètent dans un cycle de vie de développement logiciel en tant que solution très rentable. Alors que Kubernetes s'occupe de la santé et de la gestion des conteneurs, Ansible déploie les modifications sur les hôtes, configure les systèmes, provisionne l'infrastructure et organise les mises à jour continues et les déploiements continus.

Enfin, Ansible est une excellente solution pour l'automatisation des mises à jour et d'autres procédures de maintenance de Kubernetes lui-même en raison de sa nature facile à utiliser et de sa configuration simple.


Linux
  1. Comprendre YAML pour Ansible

  2. Comprendre la sortie de "apt-cache Policy" ?

  3. Fedora vs Ubuntu :quelles sont les principales différences ?

  4. Comprendre les scripts rc sous Linux

  5. Quel est le but d'un '-' final dans une application Kubernetes -f -

Guide Ansible :la commande ad hoc

Présentation du nouveau hub d'automatisation Ansible

Comprendre la commande uname sous Linux

Comprendre la boucle for dans les scripts shell

Comprendre la commande time sous Linux

useradd vs adduser :quelles sont les différences ?