Comment choisir la bonne orchestration de conteneur et comment la déployer

L'exécution de processus de serveur dans des conteneurs est là pour rester. Si votre environnement est petit avec quelques serveurs exécutant quelques dizaines de conteneurs, vous pouvez probablement tout faire à la main. Au-delà de cette échelle, vous avez besoin d'outils performants pour gérer les tâches lourdes et fournir une fonctionnalité de base commune. L'alternative est beaucoup de travail manuel fastidieux, sujet aux erreurs, répétitif.

Si vous n'utilisez pas de pipeline CI / CD ni de système d'orchestration, le développement et les opérations devront faire preuve d'une collaboration et d'une coordination extrêmes et continues.

Image courtoisie Julius Silver - Pexels.com - J'espère vraiment qu'ils auront une orchestration sur la façon dont les conteneurs sont chargés sur ces navires… Je ne peux pas imaginer les variables impliquées: la distribution du poids. Destination et ordre de déménagement. Volatilité. Cette image me rend heureux de travailler dans un logiciel où je peux aider à gérer la complexité!

Lorsque j'ai commencé à étudier le monde des microservices plus tôt cette année, je n'avais aucune idée de l'infrastructure de support étendue que je découvrirais. Kubernetes a été un véritable trésor de trouvailles et Istio semble tout simplement incroyable pour les microservices - même si je sais que je n’ai fait qu’effleurer ces deux technologies.

Depuis ses modestes débuts il y a moins de trois ans, Kubernetes est rapidement devenu un formidable moteur d'orchestration utilisé par d'innombrables entreprises et intégré à de nombreux autres projets. En tant que concepteur de logiciel avec plusieurs décennies à mon actif, je suis assez impressionné par l'architecture Kubernetes. Il est extrêmement modulaire et construit dans l’espoir que de nombreuses pièces puissent être remplacées. Dans certains cas, il existe déjà de nombreux choix pour un composant donné.

Toute cette nouveauté et cette multiplicité de choix peuvent rendre le démarrage difficile. Alors que je suis assis sur le précipice d'aller à fond dans Kubernetes, je suis frappé par une décision plus fondamentale…

Faire le bon choix d'orchestration de conteneur

Alors que je commençais à approfondir le monde de l'orchestration de conteneurs, il est devenu évident qu'il y avait plus que quelques choix disponibles. Mon instinct me disait que Kubernetes était la chose à utiliser, mais j’ai aussi commencé à me demander comment je saurais si j’avais raison. Il n'y a rien de tel que l'incertitude pour faire creuser plus profondément.

Ma première question était: quelles sont les alternatives pour l'orchestration de conteneurs?

Après avoir passé un temps raisonnable à chercher et à lire, voici la liste des systèmes d’orchestration que j'ai pu trouver:

  • Kubernetes - Le grand papa apparent de tous. Le projet lui-même est très actif et l'architecture me donne l'assurance que le développement continu sera rapide et sûr. C'est mon choix instinctif.
  • Docker Swarm - Il est intégré à Docker par défaut et dispose de nombreuses fonctionnalités essentielles que vous souhaitez dans un système. Il a beaucoup de parité avec Kubernetes, mais il lui manque un élément clé dans le fait que la version gratuite à source ouverte est un contrôle d'accès basé sur un rôle (RBAC). Vous pouvez l'obtenir dans la version payante Enterprise.
  • Marathon on Mesos - Mesos est un système de clustering hautement évolutif pour l'exécution de tâches de toutes sortes. Il s'appuie sur des cadres pour prendre en charge différents types de tâches. Marathon est le plug-in qui fournit la prise en charge de l'orchestration de conteneurs au sein de l'écosystème Mesos. La liste des cadres est impressionnante.
  • Titus - Au moment où j'écrivais ces lignes, Netflix a ouvert son système d’orchestration interne. Merci Netflix! Titus a été conçu pour fournir les intégrations les plus strictes avec l'infrastructure Amazon AWS (où Netflix maintient ses opérations). L’une de leurs intentions est que d’autres projets utilisent leur technologie afin que Netflix puisse les utiliser à l’avenir.
  • Bétail - Il s’agit du moteur d’orchestration conçu et intégré au système Rancher. Je n’ai pas donné à Cattle un regard très profond, car son projet principal a apparemment acheté Kubernetes comme son moteur d’orchestration préféré et principal. Le titre principal sur le site Web de Rancher se lit comme suit: «Enterprise Kubernetes Made Easy». Cette page vous explique comment elle vous aide à gérer les clusters Kubernetes. Aucune mention de bovins n'existe sur la page Web. Il est clair que le projet Rancher a fait son choix.
  • Nomad - Ok, c'est Hashicorp. En tant que grand fan de Hashicorp, je me sentirais injuste si je ne donnais pas leur produit au moins une fois. Le produit a l’air intéressant en surface et suscite des inquiétudes assez graves au niveau du paywall. Les espaces de noms ne sont disponibles que dans la version entreprise. Pour la découverte de service, vous devez ajouter Consul, et pour la gestion des secrets, vous devez ajouter Vault. En examinant la documentation, il semble également manquer de configuration CNI de base - la discussion principale pour la configuration de réseau concerne les ports de mappage et les mappages IP statiques.
  • Kontena - Ceci est un produit visuellement renversant. Vous pouvez utiliser leur offre de cloud ou configurer votre propre maître de plate-forme sur l’infrastructure de votre choix. Si vous choisissez d'apporter votre propre infrastructure, vous pouvez choisir de la connecter au Kontena Cloud pour 15 $ / mois ou non. La jolie interface Web est ce que vous abandonnez dans ce cas. N'ayant pas fouillé au-delà de quelques heures de fouilles autour de leur site, je ne suis pas certain de l'impact que cela provoquerait.

Si vous regardez assez attentivement, vous en trouverez encore d'autres indices: Deis, Mantl, Cloud Foundry et Amazon ECS, pour n'en nommer que quelques-uns. Ces gars méritent probablement plus que cette simple et honorable mention.

Exigences d'abord

Faire le choix ici est difficile. Bien sûr, cela dépend de vos besoins, alors laissez-moi vous en énumérer quelques-uns importants:

  1. Développement actif: le monde de l'orchestration de conteneurs est relativement jeune. Les projets inactifs vont rapidement prendre du retard et signifier que les bogues ne sont pas résolus. J'ai l'impression que le bétail est en voie de disparition. Donc, je le gratte ici.
  2. Pas de verrouillage du vendeur dans le cloud: je ne suis pas intéressé par un seul fournisseur de cloud pour le moment. Titus tombe ici à cause de son intégration étroite avec AWS, ce qui est définitivement un inconvénient ici.
  3. Simplicité: Plus un système est complexe, plus il sera difficile à utiliser. Cette exigence m'oblige à abandonner l'exécution de Mesos, car ce n'est pas d'abord un système d'orchestration de conteneur. Pour beaucoup de gens, il s’agit de faire beaucoup de choses et cela donne l’impression d’être mal adapté.
  4. Réseau CNI: La possibilité d'avoir une connectivité réseau triviale entre mes services est importante. Je ne veux pas que les développeurs consacrent du temps à un code à usage spécifique pour trouver des services dépendants. Docker Swarm et Kubernetes, vous êtes toujours dans la course.
  5. Espaces de noms avec RBAC - Je travaille dans un environnement d'entreprise et l'un de mes objectifs est de fournir des configurations de développement, d'assurance qualité, de transfert et de production qui ne se rencontrent pas. Je pouvais configurer un cluster distinct pour chacun, ou utiliser RBAC et partager ma puissance de calcul. Docker Swarm, je suis désolé de vous voir partir, mais c'est la fin de notre voyage ensemble. J'aime Hashicorp, mais Nomad met également cette fonctionnalité derrière un paywall.

Voilà, certaines exigences de haut niveau qui réduisent assez rapidement le terrain de jeu. Il pourrait ne pas sembler juste de laisser tomber Mesos dans la catégorie «simplicité». Mais si vous passez la moitié du temps que j’ai à étudier toutes ces options, vous comprendrez qu’à un moment donné, vous devez simplifier votre processus de décision pour pouvoir réellement aller de l’avant.

Je reste dans l'état bizarre d'avoir Kubernetes et Kontena toujours sur la liste. Kontena est littéralement une enquête de 11ème heure. J'ai failli le laisser relégué à la liste des autres. Si je l'avais fait, cette dernière heure de création aurait été moins pénible. Mais le voici. Une décision doit être prise, et bien que je revienne finalement à Kontena, Kubernetes est mon vote actuel.

Je me sens coupable de laisser tant de projets incroyables sur le plancher de la salle de coupe. C’est ce qui se passe dans le monde d’aujourd’hui, avec d’étonnantes options et un besoin séculaire de prendre une décision.

Débuter avec Kubernetes

J'ai donc choisi Kubernetes comme système de choix pour l'orchestration de conteneurs. Comment puis-je obtenir un cluster opérationnel pour les tests et la production? Les réponses à cette question sont également très variées.

Méthodes de déploiement de Kubernetes

  • Minikube: La méthode recommandée pour faire fonctionner rapidement un Kubernetes à un seul noeud à des fins de test et de développement. Je préfère voir les choses en pleine action, je ne me suis donc pas contenté du déploiement d'un seul nœud pour mes tests.
  • Kubeadm: cela est fourni par kubernetes.io en tant que méthode de déploiement d'un cluster à maître unique et à plusieurs noeuds. Il existe également des instructions supplémentaires pour la configuration d’une configuration multi-maîtres. J'ai déjà utilisé Kubeadm dans certains scripts Terraform pour configurer mes clusters de bancs d'essais Digital Ocean.
  • Docker Enterprise 2.0: Alors que je travaillais sur cet article, Docker a annoncé la mise à niveau vers EE 2.0. Cette nouvelle version intègre désormais un déploiement complet de Kubernetes intégré au produit. Après une lecture rapide, ils utilisent Swarm pour amorcer le cluster et déployer Kubernetes.
  • Rancher: «Enterprise Kubernetes Made Easy» est leur prétention. En effet, j'ai réussi à faire fonctionner un cluster Kubernetes complet sur Digital Ocean en moins d'une heure en suivant leur guide. Ma première réaction a été: “Sainte vache! Rancher is Amazing. »Il prend en charge la gestion des déploiements Kubernetes dans de nombreux environnements et banalise le déploiement de la haute disponibilité. Il est censé permettre la gestion de plusieurs clusters ainsi que la gestion d'autres solutions d'orchestration, y compris leurs propres Cattle et Apache Mesos.
  • Mesosphere DC / OS: Peut-être même un champion du poids encore plus lourd en tant que système d’orchestration de conteneurs à part entière, mais maintenant aussi capable d’administrer des clusters Kubernetes. Ce produit semble assez convaincant… Sauf que les très bonnes choses se trouvent sous le mur de la paie d'entreprise. Je ne vois pas non plus clairement sur leur site Web si la version de DC / OS est gratuite et si la version de DC / OS Enterprise est payante (ou s’ils sont payés tous les deux). À chaque fois que je vois un message «Contactez-nous pour obtenir un prix», j'ai tendance à aller de l'avant. Cela m'empêchera de regarder de trop près - des excuses à ceux que j'ai offensés.
  • Kontena’s Pharos - Il semble que même les entreprises qui disposent de leur propre alternative complète à Kubernetes ne peuvent se tenir à l’abri des initiatives logicielles de déploiement de Kubernetes. Leur documentation «Utilisation avec Terraform» semble avoir beaucoup de pouvoir pour faire de votre installation Kubernetes une étape distincte et composable. Vous pouvez configurer votre infrastructure en une seule étape à l'aide de l'outil que vous possédez, puis configurer Kubernetes par dessus. setup-infrastructure | install-kubernetes> profit

La liste est longue: Kubo de Pivitol, Apprenda Kismatic, CoreOS Tectonic, RedHat Openshift v3, Openshift Origin, et bien plus encore.

Options hébergées

  • Amazon EKS - Elastic Container Service for Kubernetes - Un cluster Kubernetes hébergé par Amazon. Il s'agit actuellement d'une technologie «In Preview» d'Amazon. Cela parle de la viabilité et de l'avenir de Kubernetes…
  • Google Kubernetes Engine (GKE) - Il s’agit de l’offre hébergée de Google. J'aimerais en dire plus, mais pour une raison quelconque, mon compte est cassé en ce qui concerne l'accès.
  • OpenShift - le service de conteneur en ligne de Red Hat.

Mon choix de déploiement Kubernetes?

Pour le déploiement de Kubernetes, je prévois de continuer à travailler à la fois avec Kubeadm (éventuellement en le remplaçant par Pharos) et avec Rancher.

Un éleveur s'est montré très prometteur la première fois que je l'ai utilisé. Le seul inconvénient est que je dois d'abord avoir une machine de contrôle sur laquelle j'installe Rancher, mais c'est un petit prix à payer. Je ne suis pas certain de vouloir utiliser l'interface Rancher pour interagir avec mon cluster Kubernetes et, tant que cela n'empêche pas que j'utilise kubectl pour contrôler le cluster, nous pouvons nous entendre très bien.

Quelle est la prochaine?

Maintenant que j'ai traversé l'exercice pour comprendre le monde des options, je suis prêt à aller de l'avant et à expérimenter avec Kubernetes. Je dois explorer beaucoup les méthodes de déploiement de mon choix.

J'ai également déjà parlé d'Istio, qui se situe au-dessus de Kubernetes afin de fournir encore plus de bases pour la prise en charge de la communication et du monitoring de microservices. Attendez-vous à plus de cela dans les prochains articles. Oh, et maintenant que j'ai trébuché sur Kontena, je me sens poussé à l'essayer.