{"id":83787,"date":"2020-06-03T07:42:26","date_gmt":"2020-06-03T05:42:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2"},"modified":"2020-06-03T07:42:26","modified_gmt":"2020-06-03T05:42:26","slug":"devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","title":{"rendered":"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l'\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Kubernetes est un excellent outil pour d\u00e9ployer des conteneurs Docker dans un environnement de production en cluster. Cependant, certaines t\u00e2ches ne peuvent pas \u00eatre r\u00e9solues par Kubernetes. Lors d'un d\u00e9ploiement fr\u00e9quent en environnement de production, nous avons besoin d'un d\u00e9ploiement Blue\/Green enti\u00e8rement automatis\u00e9 pour \u00e9viter les temps d'arr\u00eat, ce qui n\u00e9cessite \u00e9galement de traiter les requ\u00eates HTTP externes et d'effectuer le d\u00e9chargement SSL. Cela n\u00e9cessite une int\u00e9gration avec un r\u00e9partiteur de charge comme ha-proxy. Une autre t\u00e2che consiste \u00e0 effectuer un dimensionnement semi-automatique du cluster Kubernetes lorsqu'il fonctionne dans un environnement cloud, par exemple, r\u00e9duire partiellement la taille du cluster la nuit.<\/p>\n<p>Bien que Kubernetes ne poss\u00e8de pas ces fonctionnalit\u00e9s \u00ab pr\u00eates \u00e0 l'emploi \u00bb, il fournit une API que vous pouvez utiliser pour r\u00e9soudre de telles t\u00e2ches. Les outils pour le d\u00e9ploiement Blue\/Green automatis\u00e9 et le dimensionnement du cluster Kubernetes ont \u00e9t\u00e9 d\u00e9velopp\u00e9s dans le cadre du projet Cloud RTI, qui a \u00e9t\u00e9 cr\u00e9\u00e9 sur la base d'open-source.<\/p>\n<p>Cet article, qui d\u00e9chiffre une vid\u00e9o, explique comment configurer Kubernetes avec d'autres composants open-source pour cr\u00e9er un environnement pr\u00eat \u00e0 la production, qui, sans temps d'arr\u00eat en production, prend en compte le code des modifications git commit.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/43a4ba56526a91b6f3d1fb16c159cc1b.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504666\/\">DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, autoscaling et automatisation des d\u00e9ploiements. Partie 1<\/a><\/noindex><\/p>\n<p>Donc, une fois que vous avez acc\u00e8s \u00e0 vos applications depuis le monde ext\u00e9rieur, vous pouvez passer \u00e0 la configuration compl\u00e8te de l'automatisation, c'est-\u00e0-dire l'amener \u00e0 un stade o\u00f9 vous pouvez effectuer un git commit et vous assurer que ce git commit se termine en production. Naturellement, lors de la mise en \u0153uvre de ces \u00e9tapes, lors du d\u00e9ploiement, nous ne voulons pas subir de temps d'arr\u00eat. Ainsi, toute automatisation dans Kubernetes commence par l'API. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/aa470c1562e49d98a164e0485196426e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes n'est pas un outil que l'on peut utiliser de mani\u00e8re productive \u00ab pr\u00eat \u00e0 l'emploi \u00bb. Bien s\u00fbr, vous pouvez le faire, utiliser kubectl, etc., mais l'API est tout de m\u00eame la fonctionnalit\u00e9 la plus int\u00e9ressante et utile de cette plateforme. En utilisant l'API comme un ensemble de fonctions, vous pouvez acc\u00e9der pratiquement \u00e0 tout ce que vous souhaitez faire dans Kubernetes. kubectl lui-m\u00eame utilise \u00e9galement l'API REST. <\/p>\n<p>C'est un REST, donc vous pouvez utiliser n'importe quel langage et outil pour travailler avec cette API, mais les biblioth\u00e8ques utilisateur faciliteront consid\u00e9rablement votre vie. Mon \u00e9quipe a \u00e9crit 2 de ces biblioth\u00e8ques : une pour Java \/ OSGi et une pour Go. La deuxi\u00e8me est moins souvent utilis\u00e9e, mais de toute fa\u00e7on, ces outils utiles sont \u00e0 votre disposition. Ce sont en partie des projets open-source sous licence. Il existe de nombreuses biblioth\u00e8ques de ce type pour diff\u00e9rents langages, vous pouvez donc choisir celles qui vous conviennent le mieux. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/808865e4cda6023c6775ec9e581fc46e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDonc, avant de commencer l'automatisation du d\u00e9ploiement, il est essentiel de s'assurer que ce processus ne souffrira d'aucun temps d'arr\u00eat. Par exemple, notre \u00e9quipe effectue des d\u00e9ploiements en production au milieu de la journ\u00e9e, lorsque les utilisateurs utilisent intens\u00e9ment les applications, il est donc tr\u00e8s important d'\u00e9viter les retards dans ce processus. Pour \u00e9viter les temps d'arr\u00eat, nous utilisons 2 m\u00e9thodes : le d\u00e9ploiement blue\/green ou la mise \u00e0 jour continue. Dans le dernier cas, si vous avez 5 r\u00e9pliques de l'application en marche, elles sont mises \u00e0 jour successivement. Cette m\u00e9thode fonctionne tr\u00e8s bien, mais elle n'est pas adapt\u00e9e si diff\u00e9rentes versions de l'application sont en cours d'ex\u00e9cution pendant le d\u00e9ploiement. Dans ce cas, vous pouvez mettre \u00e0 jour l'interface utilisateur pendant que le backend continue de fonctionner avec l'ancienne version, ce qui perturbera l'application. Ainsi, du point de vue de la programmation, travailler dans de telles conditions est assez difficile. <\/p>\n<p>C'est l'une des raisons pour lesquelles nous pr\u00e9f\u00e9rons utiliser le d\u00e9ploiement blue\/green pour automatiser le d\u00e9ploiement de nos applications. Avec cette m\u00e9thode, vous devez vous assurer qu'\u00e0 un moment donn\u00e9, une seule version de l'application est active. <\/p>\n<p>Le m\u00e9canisme de d\u00e9ploiement blue\/green fonctionne comme suit. Nous recevons le trafic pour nos applications via ha-proxy, qui le dirige vers les r\u00e9pliques de l'application de la m\u00eame version. <\/p>\n<p>Lors d'un nouveau d\u00e9ploiement, nous utilisons Deployer, auquel de nouveaux composants sont fournis, et il effectue le d\u00e9ploiement de la nouvelle version. Le d\u00e9ploiement d'une nouvelle version de l'application signifie qu'un nouvel ensemble de r\u00e9pliques est 'mis en place', apr\u00e8s quoi ces r\u00e9pliques de la nouvelle version sont lanc\u00e9es dans un pod s\u00e9par\u00e9 et nouveau. Cependant, ha-proxy n'en sait rien et ne dirige pour l'instant aucune charge de travail vers elles.<\/p>\n<p>Il est donc primordial d'effectuer d'abord un contr\u00f4le de la fonctionnalit\u00e9 des nouvelles versions par le biais d'un health checking, afin de s'assurer que les r\u00e9pliques sont pr\u00eates \u00e0 prendre en charge la charge.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/6134f89567ac3627197883b2f4c768d4.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTous les composants de d\u00e9ploiement doivent prendre en charge une forme quelconque de health check. Cela peut \u00eatre une simple v\u00e9rification HTTP par appel, o\u00f9 vous obtenez un code avec un statut 200, ou un contr\u00f4le plus profond, o\u00f9 vous v\u00e9rifiez la connexion des r\u00e9pliques \u00e0 la base de donn\u00e9es et \u00e0 d'autres services, la robustesse des connexions dans l'environnement dynamique, et si tout est lanc\u00e9 et fonctionne correctement. Ce processus peut \u00eatre assez complexe. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/fdc537599187b32ab97bc00970283e1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUne fois que le syst\u00e8me a v\u00e9rifi\u00e9 le bon fonctionnement de toutes les r\u00e9pliques mises \u00e0 jour, Deployer mettra \u00e0 jour la configuration et transmettra le bon confd, qui reconfigurera ha-proxy. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/099240482096c2ac4aafe7e803409511.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCe n'est qu'apr\u00e8s cela que le trafic sera dirig\u00e9 vers le pod avec les r\u00e9pliques de la nouvelle version, et le pod ancien dispara\u00eetra. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/f656b3a3adfc27e782e5d9785b8b615e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCe m\u00e9canisme n'est pas une sp\u00e9cificit\u00e9 de Kubernetes. Le concept de d\u00e9ploiement Blue\/Green existe depuis assez longtemps et a toujours utilis\u00e9 un \u00e9quilibreur de charge. Au d\u00e9part, vous dirigez tout le trafic vers l'ancienne version de l'application, puis, apr\u00e8s la mise \u00e0 jour, vous le transf\u00e9rez enti\u00e8rement vers la nouvelle version. Ce principe est utilis\u00e9 non seulement dans Kubernetes.<\/p>\n<p>Je vais maintenant vous pr\u00e9senter un nouveau composant de d\u00e9ploiement \u2013 Deployer, qui effectue des v\u00e9rifications de fonctionnalit\u00e9, reconfigure le proxy, etc. C'est un concept qui ne concerne pas le monde ext\u00e9rieur et existe \u00e0 l'int\u00e9rieur de Kubernetes. Je vais montrer comment cr\u00e9er votre propre concept Deployer en utilisant des outils open-source. <\/p>\n<p>Ainsi, la premi\u00e8re chose que fait Deployer est de cr\u00e9er un contr\u00f4leur de r\u00e9plication RC, en utilisant l'API Kubernetes. Cette API cr\u00e9e des pods et des services pour un d\u00e9ploiement ult\u00e9rieur, c'est-\u00e0-dire qu'elle cr\u00e9e un tout nouveau cluster pour nos applications. Une fois que le RC s'assure que les r\u00e9pliques ont d\u00e9marr\u00e9, il effectuera un contr\u00f4le de leur \u00e9tat de sant\u00e9. Pour cela, Deployer utilise la commande GET \/health. Cela lance les composants de v\u00e9rification appropri\u00e9s et v\u00e9rifie tous les \u00e9l\u00e9ments qui garantissent le bon fonctionnement du cluster. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/f2ef0232e17bc69f0b70ea9eabc2f456.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApr\u00e8s que tous les pods aient signal\u00e9 leur \u00ab sant\u00e9 \u00bb, Deployer cr\u00e9e un nouvel \u00e9l\u00e9ment de configuration : le stockage distribu\u00e9 etcd, qui est utilis\u00e9 \u00e0 l'int\u00e9rieur de Kubernetes, notamment pour stocker la configuration de l'\u00e9quilibreur de charge. Nous enregistrons les donn\u00e9es dans etcd, et un petit outil, confd, surveille etcd \u00e0 la recherche de nouvelles donn\u00e9es. <\/p>\n<p>S'il d\u00e9tecte des modifications de la configuration initiale, il g\u00e9n\u00e8re un nouveau fichier de param\u00e8tres et le transmet \u00e0 ha-proxy. Dans ce cas, ha-proxy se red\u00e9marre sans perdre aucune connexion et dirige la charge vers les nouveaux services qui assurent le fonctionnement de la nouvelle version de nos applications. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/bef1536c2b8dee6b0da710fc6c6fda99.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComme vous pouvez le voir, malgr\u00e9 la multitude de composants, il n'y a rien de compliqu\u00e9 ici. Vous devez simplement porter plus d'attention \u00e0 l'API et \u00e0 etcd. Je tiens \u00e0 vous parler d'un d\u00e9ployeur open-source que nous utilisons nous-m\u00eames : Amdatu Kubernetes Deployer.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/34124e093d2e16fcbb80fd112c7d223f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'est un outil d'orchestration de d\u00e9ploiements Kubernetes, dot\u00e9 des fonctionnalit\u00e9s suivantes : <\/p>\n<ul>\n<li>d\u00e9ploiement Blue\/Green ;<\/li>\n<li>configuration de l'\u00e9quilibreur de charge externe ;<\/li>\n<li>gestion des descripteurs de d\u00e9ploiement ;<\/li>\n<li>gestion du d\u00e9ploiement effectif ;<\/li>\n<li>v\u00e9rification de l'\u00e9tat de sant\u00e9 pendant le d\u00e9ploiement ;<\/li>\n<li>injection de variables d'environnement dans les pods.<\/li>\n<\/ul>\n<p>\nCe Deployer est construit sur l'API Kubernetes et offre une API REST pour la gestion des descripteurs et des d\u00e9ploiements, ainsi qu'une API Websocket pour les journaux en continu pendant le d\u00e9ploiement.<\/p>\n<p>Il place les donn\u00e9es de configuration de l'\u00e9quilibreur de charge dans etcd, vous pouvez donc ne pas utiliser ha-proxy avec un support \u00ab pr\u00eat \u00e0 l'emploi \u00bb, mais facilement utiliser votre propre fichier de configuration d'\u00e9quilibreur. Amdatu Deployer est \u00e9crit en Go, tout comme Kubernetes lui-m\u00eame, et est sous licence Apache.<\/p>\n<p>Avant de commencer \u00e0 utiliser cette version du d\u00e9ployeur, j'ai utilis\u00e9 le descripteur de d\u00e9ploiement suivant, qui pr\u00e9cise les param\u00e8tres dont j'ai besoin. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/14e9ecca6ad772a43afcf95a4950fad8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'un des param\u00e8tres importants de ce code est l'activation du drapeau \u00ab useHealthCheck \u00bb. Nous devons indiquer qu'une v\u00e9rification de l'\u00e9tat doit \u00eatre effectu\u00e9e lors du d\u00e9ploiement. Ce param\u00e8tre peut \u00eatre d\u00e9sactiv\u00e9 lorsque des conteneurs de tiers sont utilis\u00e9s et qu'il n'est pas n\u00e9cessaire de les v\u00e9rifier. Ce descripteur indique \u00e9galement le nombre de r\u00e9plicas et l'URL du frontend dont ha-proxy a besoin. Enfin, il mentionne le drapeau de sp\u00e9cification du pod \u00ab podspec \u00bb, qui interroge Kubernetes pour obtenir des informations sur la configuration des ports, l'image, etc. C'est un descripteur assez simple au format JSON. <\/p>\n<p>Un autre outil qui fait partie du projet open-source Amdatu est Deploymentctl. Il dispose d'une interface utilisateur pour configurer le d\u00e9ploiement, stocke l'historique des d\u00e9ploiements et contient des webhooks pour les appels de retour de la part d'utilisateurs et d\u00e9veloppeurs tiers. Vous pouvez ne pas utiliser l'interface utilisateur, car le d\u00e9ployeur Amdatu est une API REST, mais cette interface peut grandement faciliter le d\u00e9ploiement sans avoir \u00e0 utiliser une API. Deploymentctl est \u00e9crit en OSGi\/Vertx en utilisant Angular 2. <\/p>\n<p>Maintenant, je vais illustrer ce que j'ai dit \u00e0 l'\u00e9cran, en utilisant un enregistrement pr\u00e9alablement r\u00e9alis\u00e9, afin que vous n'ayez pas \u00e0 attendre. Nous allons d\u00e9ployer une application simple en Go. Ne vous inqui\u00e9tez pas si vous n'avez jamais travaill\u00e9 avec Go, cette application est tr\u00e8s basique, donc tout devrait vous sembler clair. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/ab61ada396143e980d73a0bb8ff95076.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIci, nous cr\u00e9ons un serveur HTTP qui r\u00e9pond uniquement \u00e0 \/health, donc cette application v\u00e9rifie simplement l'\u00e9tat de sant\u00e9 et rien de plus. Si la v\u00e9rification r\u00e9ussit, la structure JSON affich\u00e9e ci-dessous est utilis\u00e9e. Elle contient la version de l'application qui sera d\u00e9ploy\u00e9e par le d\u00e9ployeur, un message que vous voyez en haut du fichier, et un type de donn\u00e9es bool\u00e9en \u2014 si notre application fonctionne ou non.<\/p>\n<p>Pour la derni\u00e8re ligne, j'ai un peu trich\u00e9, car j'ai mis une valeur bool\u00e9enne fixe en haut du fichier, qui m'aidera par la suite \u00e0 d\u00e9ployer m\u00eame une application \u00ab non saine \u00bb. Nous allons examiner cela plus tard. <\/p>\n<p>Alors, commen\u00e7ons. D'abord, nous v\u00e9rifions s'il y a des pods en cours d'ex\u00e9cution avec la commande ~ kubectl get pods et par l'absence de r\u00e9ponse de l'URL du frontend, nous concordons qu'aucun d\u00e9ploiement n'est en cours. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/4da1ae467993d6e60ec539ae5ff136ff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEnsuite, \u00e0 l'\u00e9cran, vous voyez l'interface Deploymentctl que j'ai mentionn\u00e9e, o\u00f9 sont d\u00e9finis les param\u00e8tres de d\u00e9ploiement : l'espace de noms, le nom de l'application, la version du d\u00e9ploiement, le nombre de r\u00e9pliques, l'URL du frontend, le nom du conteneur, l'image, les limites de ressources, le num\u00e9ro de port pour la v\u00e9rification de l'\u00e9tat, etc. Les limites de ressources sont tr\u00e8s importantes, car elles permettent d'utiliser au maximum les capacit\u00e9s mat\u00e9rielles. Vous pouvez \u00e9galement consulter le journal du d\u00e9ploiement dans le journal de d\u00e9ploiement.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/edf6a02b336f1abce61f0a323edeee9d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi nous r\u00e9p\u00e9tons maintenant la commande ~ kubectl get pods, nous voyons que le syst\u00e8me \"se fige\" pendant 20 secondes, pendant lesquelles une reconfiguration de ha-proxy a lieu. Apr\u00e8s cela, le pod se lance et notre r\u00e9plique peut \u00eatre vue dans le journal du d\u00e9ploiement. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/c6c8f6335e00d3a9cfcf4d4792ecf795.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJ'ai coup\u00e9 l'attente de 20 secondes de la vid\u00e9o, et maintenant vous voyez \u00e0 l'\u00e9cran que la premi\u00e8re version de l'application est d\u00e9ploy\u00e9e. Tout cela a \u00e9t\u00e9 fait uniquement \u00e0 l'aide de l'interface utilisateur. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/d21fa9ad71e22b2bb9efdfc7bc9c8771.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMaintenant, essayons la deuxi\u00e8me version. Pour cela, je change le message de l'application de \u00ab Bonjour, Kubernetes ! \u00bb \u00e0 \u00ab Bonjour, Deployer ! \u00bb, le syst\u00e8me cr\u00e9e cette image et la place dans le registre Docker, apr\u00e8s quoi nous appuyons simplement \u00e0 nouveau sur le bouton \u00ab D\u00e9ployer \u00bb dans la fen\u00eatre Deploymentctl. Cela lance automatiquement le journal du d\u00e9ploiement exactement comme lors du d\u00e9ploiement de la premi\u00e8re version de l'application. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/e4ef784649fd18b1580d2562b318ac0f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa commande ~ kubectl get pods montre qu'il y a actuellement 2 versions de l'application en cours d'ex\u00e9cution, cependant, le frontend indique que nous avons toujours la version 1 en fonction. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/1d4a9c91f836007325a2a2c833da8eff.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'\u00e9quilibreur de charge attend qu'un contr\u00f4le de l'\u00e9tat soit effectu\u00e9, puis redirigera le trafic vers la nouvelle version. Apr\u00e8s 20 secondes, nous passons \u00e0 curl et voyons que maintenant nous avons d\u00e9ploy\u00e9 la version 2 de l'application, tandis que la premi\u00e8re a \u00e9t\u00e9 supprim\u00e9e. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/e123618251e9fcb1c14829772634b6e8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC'\u00e9tait le d\u00e9ploiement d'une application \"saine\" - healthy. Voyons ce qui se passera si, pour la nouvelle version de l'application, je change la valeur du param\u00e8tre Healthy de true \u00e0 false, c'est-\u00e0-dire que j'essaie de d\u00e9ployer une application insaine qui n'a pas pass\u00e9 le contr\u00f4le de l'\u00e9tat. Cela peut arriver s'il y a eu des erreurs de configuration pendant la phase de d\u00e9veloppement, et qu'elle a \u00e9t\u00e9 envoy\u00e9e en production dans cet \u00e9tat. <\/p>\n<p>Comme vous pouvez le voir, le d\u00e9ploiement passe par toutes les \u00e9tapes mentionn\u00e9es ci-dessus, et ~ kubectl get pods montre que les deux pods sont en cours d'ex\u00e9cution. Cependant, contrairement au d\u00e9ploiement pr\u00e9c\u00e9dent, le journal indique un \u00e9tat de timeout. Cela signifie que, parce que la v\u00e9rification de la sant\u00e9 n'a pas r\u00e9ussi, la nouvelle version de l'application ne peut pas \u00eatre d\u00e9ploy\u00e9e. En cons\u00e9quence, vous voyez que le syst\u00e8me est revenu \u00e0 l'utilisation de l'ancienne version de l'application, tandis que la nouvelle version a simplement \u00e9t\u00e9 supprim\u00e9e. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/4542761328603596704f21cef4c9d4a3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCe qui est bien, c'est que m\u00eame si vous avez un grand nombre de requ\u00eates simultan\u00e9es entrant dans l'application, elles ne remarqueront m\u00eame pas de temps d'arr\u00eat pendant la proc\u00e9dure de d\u00e9ploiement. Si vous testez cette application avec le framework Gatling, qui lui envoie le maximum de requ\u00eates possible, aucune de ces requ\u00eates ne sera abandonn\u00e9e. Cela signifie que nos utilisateurs ne remarqueront m\u00eame pas la mise \u00e0 jour des versions en temps r\u00e9el. Si elle \u00e9choue, le travail continuera avec l'ancienne version, si elle r\u00e9ussit, les utilisateurs passeront \u00e0 la nouvelle version. <\/p>\n<p>Il n'y a qu'une seule chose qui peut causer un \u00e9chec : si la v\u00e9rification de la sant\u00e9 a r\u00e9ussi, mais que l'application a \u00e9chou\u00e9 d\u00e8s qu'elle a re\u00e7u une charge de travail, c'est-\u00e0-dire que l'effondrement ne se produira qu'apr\u00e8s la fin du d\u00e9ploiement. Dans ce cas, vous devrez revenir manuellement \u00e0 l'ancienne version. Nous avons donc examin\u00e9 comment utiliser Kubernetes avec les outils open-source qui lui sont destin\u00e9s. La proc\u00e9dure de d\u00e9ploiement sera beaucoup plus simple si vous int\u00e9grez ces outils dans les pipelines de cr\u00e9ation\/d\u00e9ploiement Build\/Deploy. Ainsi, vous pouvez utiliser \u00e0 la fois l'interface utilisateur et automatiser compl\u00e8tement ce processus, par exemple, en appliquant un commit to master. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/43b638be9d334c6c4f8e9f4fc00ce2f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNotre serveur de construction Build Server cr\u00e9era une image Docker, la placera dans Docker Hub ou tout autre registre que vous utilisez. Le Hub Docker prend en charge le webhook, donc nous pouvons lancer un d\u00e9ploiement distant via Deployer comme indiqu\u00e9 ci-dessus. De cette mani\u00e8re, le d\u00e9ploiement de l'application dans un environnement de production potentiel peut \u00eatre compl\u00e8tement automatis\u00e9. <\/p>\n<p>Passons \u00e0 la prochaine th\u00e9matique : la mise \u00e0 l'\u00e9chelle d'un cluster Kubernetes. Je note que la commande kubectl est la commande de mise \u00e0 l'\u00e9chelle. Avec elle, il est facile d'augmenter le nombre de r\u00e9pliques dans notre cluster actuel. Cependant, en pratique, nous souhaitons g\u00e9n\u00e9ralement augmenter non le nombre de pods, mais celui de n\u0153uds. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/890f436b4bc52c81f5db5b35e64e7e18.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCela signifie qu'au cours de vos horaires de travail, vous pourriez avoir besoin d'augmenter le nombre de n\u0153uds, tandis que la nuit, afin de r\u00e9duire le co\u00fbt des services Amazon, vous souhaiterez diminuer le nombre d'instances de votre application. Cela ne signifie pas qu'il suffit de mettre \u00e0 l'\u00e9chelle seulement le nombre de pods, car m\u00eame si l'un des n\u0153uds est inoccup\u00e9, vous devrez toujours payer Amazon pour cela. Donc, en plus de mettre \u00e0 l'\u00e9chelle les pods, vous devrez \u00e9galement mettre \u00e0 l'\u00e9chelle le nombre de machines utilis\u00e9es. <\/p>\n<p>Cela peut poser des probl\u00e8mes, car peu importe si nous utilisons Amazon ou un autre service cloud, Kubernetes ne sait rien du nombre de machines utilis\u00e9es. Il manque un outil permettant de mettre \u00e0 l'\u00e9chelle le syst\u00e8me au niveau des n\u0153uds. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/2f00b19f1cb665d8e7bd896fa419554c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous devrons donc g\u00e9rer \u00e0 la fois les n\u0153uds et les pods. Nous pouvons facilement mettre \u00e0 l'\u00e9chelle le lancement de nouveaux n\u0153uds \u00e0 l'aide de l'API AWS et des groupes de mise \u00e0 l'\u00e9chelle pour configurer le nombre de n\u0153uds de travail Kubernetes. Il est \u00e9galement possible d'utiliser cloud-init ou un script similaire pour enregistrer les n\u0153uds dans le cluster Kubernetes. <\/p>\n<p>Une nouvelle machine d\u00e9marre dans le groupe de mise \u00e0 l'\u00e9chelle, s'initie en tant que n\u0153ud, s'enregistre dans le registre ma\u00eetre et commence \u00e0 fonctionner. Apr\u00e8s cela, il est possible d'augmenter le nombre de r\u00e9pliques pour les n\u0153uds nouvellement form\u00e9s. La r\u00e9duction de l'\u00e9chelle n\u00e9cessite plus d'efforts, car il faut s'assurer qu'une telle mesure ne conduira pas \u00e0 la destruction des applications d\u00e9j\u00e0 fonctionnelles apr\u00e8s la d\u00e9sactivation des machines \u00ab inutiles \u00bb. Pour \u00e9viter ce sc\u00e9nario, il est n\u00e9cessaire de mettre les n\u0153uds en statut \u00ab unschedulable \u00bb. Cela signifie que le planificateur par d\u00e9faut ignorera ces n\u0153uds lors de la planification des pods DaemonSet. Le planificateur ne supprimera rien de ces serveurs, mais n'y lancera \u00e9galement aucun nouveau conteneur. L'\u00e9tape suivante consiste \u00e0 drainer le n\u0153ud, c'est-\u00e0-dire \u00e0 transf\u00e9rer les pods actifs vers une autre machine ou d'autres n\u0153uds ayant suffisamment de capacit\u00e9. Une fois qu'il n'y a plus de conteneurs sur ces n\u0153uds, ils peuvent \u00eatre supprim\u00e9s de Kubernetes. Apr\u00e8s cela, pour Kubernetes, ils cesseront simplement d'exister. Il est ensuite n\u00e9cessaire d'utiliser l'API AWS pour d\u00e9sactiver les n\u0153uds ou machines inutiles. <br \/>\nVous pouvez utiliser Amdatu Scalerd \u2014 un autre outil open-source pour la mise \u00e0 l'\u00e9chelle, similaire \u00e0 l'API AWS. Il fournit une CLI pour ajouter ou supprimer des n\u0153uds dans le cluster. Une de ses caract\u00e9ristiques int\u00e9ressantes est la possibilit\u00e9 de configurer le planificateur \u00e0 l'aide du fichier json suivant. <\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/f70c7c722cacb4792c316e9f80a7500a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLe code illustr\u00e9 r\u00e9duit de moiti\u00e9 la capacit\u00e9 du cluster pendant la nuit. Il configure \u00e0 la fois le nombre de r\u00e9pliques existantes et la capacit\u00e9 souhait\u00e9e du cluster Amazon. L'utilisation de ce planificateur r\u00e9duira automatiquement le nombre de n\u0153uds la nuit et les augmentera le matin, permettant ainsi d'\u00e9conomiser sur le co\u00fbt d'utilisation des n\u0153uds d'un service cloud tel qu'Amazon. Cette fonctionnalit\u00e9 n'est pas int\u00e9gr\u00e9e dans Kubernetes, mais l'utilisation de Scalerd vous permettra de mettre \u00e0 l'\u00e9chelle cette plateforme comme bon vous semble. <\/p>\n<p>Je voudrais attirer votre attention sur le fait que de nombreuses personnes me disent : \u00ab Tout cela est bien, mais qu'en est-il de ma base de donn\u00e9es, qui est g\u00e9n\u00e9ralement statique ? \u00bb Comment peut-on faire fonctionner quelque chose de similaire dans un environnement aussi dynamique que Kubernetes ? \u00c0 mon avis, vous ne devriez pas le faire, ne pas essayer d'organiser un stockage de donn\u00e9es dans Kubernetes. Techniquement, c'est possible, il existe des guides en ligne \u00e0 ce sujet, mais cela compliquerait s\u00e9rieusement votre vie. <\/p>\n<p>Oui, dans Kubernetes, il existe le concept de volumes persistants, et vous pouvez essayer de faire fonctionner des syst\u00e8mes de gestion de bases de donn\u00e9es comme Mongo ou MySQL, mais c'est une t\u00e2che assez laborieuse. Cela s'explique par le fait que les syst\u00e8mes de gestion de bases de donn\u00e9es ne prennent pas enti\u00e8rement en charge l'interaction avec un environnement dynamique. La plupart des bases de donn\u00e9es n\u00e9cessitent des ajustements importants, y compris la configuration manuelle du cluster, n'aiment pas l'autoscaling et d'autres choses semblables. <br \/>\nPar cons\u00e9quent, il n'est pas n\u00e9cessaire de compliquer votre vie en essayant de faire fonctionner un stockage de donn\u00e9es dans Kubernetes. Organisez leur fonctionnement de mani\u00e8re traditionnelle avec des services familiers et laissez simplement Kubernetes les utiliser.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/129e8d403f42b7aa6fb022b386955e9e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour conclure ce sujet, je voudrais vous pr\u00e9senter la plateforme Cloud RTI bas\u00e9e sur Kubernetes, sur laquelle travaille mon \u00e9quipe. Elle offre une gestion centralis\u00e9e des journaux, un monitoring des applications et des clusters, et poss\u00e8de de nombreuses autres fonctionnalit\u00e9s utiles dont vous aurez besoin. Elle utilise divers outils open-source, tels que Grafana pour l'affichage de la surveillance.<\/p>\n<p><img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/a0e79033dbc0a2683e3567934c9ba014.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DEVOXX UK. Kubernetes en production : d\u00e9ploiement Blue\/Green, mise \u00e0 l&#039;\u00e9chelle automatique et automatisation du d\u00e9ploiement. Partie 2\" src=\"\/wp-content\/uploads\/2020\/06\/2b1b7ba139053fc492c7ad25e96f362f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa question a \u00e9t\u00e9 pos\u00e9e sur l'utilit\u00e9 d'un \u00e9quilibreur de charge ha-proxy avec Kubernetes. C'est une bonne question, car il existe actuellement 2 niveaux d'\u00e9quilibrage de charge. Les services Kubernetes fonctionnent encore sur des adresses IP virtuelles. Vous ne pouvez pas les utiliser pour les ports des machines h\u00f4tes externes, car si Amazon surcharge son h\u00f4te cloud, l'adresse changera. C'est pourquoi nous pla\u00e7ons ha-proxy devant les services \u2014 pour cr\u00e9er une structure plus statique pour un flux de trafic ininterrompu avec Kubernetes. <\/p>\n<p>Une autre bonne question \u2013 comment g\u00e9rer les modifications de sch\u00e9ma de base de donn\u00e9es lors d'un d\u00e9ploiement blue\/green ? En effet, quel que soit l'utilisation de Kubernetes, modifier un sch\u00e9ma de base de donn\u00e9es est une t\u00e2che complexe. Vous devez garantir la compatibilit\u00e9 entre l'ancien et le nouveau sch\u00e9ma, apr\u00e8s quoi vous pourrez mettre \u00e0 jour la base de donn\u00e9es et ensuite les applications elles-m\u00eames. Vous pouvez effectuer un \u00ab \u00e9change \u00e0 chaud \u00bb de la base de donn\u00e9es, puis mettre \u00e0 jour les applications. Je connais des personnes qui ont charg\u00e9 un tout nouveau cluster de base de donn\u00e9es avec un nouveau sch\u00e9ma, c'est une option si vous avez une base de donn\u00e9es sans sch\u00e9ma comme Mongo, mais dans tous les cas, ce n'est pas une t\u00e2che simple. S'il n'y a plus de questions, merci de votre attention !<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"-Ci4vd4rh4M\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/-Ci4vd4rh4M\/hqdefault.jpg\" alt=\"Lire la vid\u00e9o\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Un peu de publicit\u00e9 \ud83d\ude42<\/h3>\n<p>\nMerci de rester avec nous. Aimez-vous nos articles ? Voulez-vous voir plus de contenu int\u00e9ressant ? Soutenez-nous en passants une commande ou en nous recommandant \u00e0 des amis, <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">VPS cloud pour d\u00e9veloppeurs \u00e0 partir de 4,99 $<\/a><\/noindex>, <b>un \u00e9quivalent unique des serveurs d'entr\u00e9e de gamme, con\u00e7u pour vous :<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Toute la v\u00e9rit\u00e9 sur le VPS (KVM) E5-2697 v3 (6 c\u0153urs) 10 Go DDR4 480 Go SSD 1 Gbps \u00e0 partir de 19 $ ou comment bien diviser un serveur ?<\/a><\/noindex> (options disponibles avec RAID1 et RAID10, jusqu'\u00e0 24 c\u0153urs et jusqu'\u00e0 40 Go DDR4).<\/p>\n<p><b>Dell R730xd deux fois moins cher dans le data center Equinix Tier IV \u00e0 Amsterdam ?<\/b> Uniquement chez nous <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64Go DDR4 4x960Go SSD 1Gbps 100 To \u00e0 partir de 199 $<\/a><\/noindex> aux Pays-Bas ! <b>Dell R420 \u2014 2x E5-2430 2.2GHz 6C 128Go DDR3 2x960Go SSD 1Gbps 100To \u2014 \u00e0 partir de 99 $ !<\/b><\/b> Lisez sur <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Comment construire une infrastructure de classe entreprise avec des serveurs Dell R730xd E5-2650 v4 co\u00fbtant 9000 euros pour des clopinettes ?<\/a><\/noindex><br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/504672\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438. \u041f\u0440\u0438 \u0447\u0430\u0441\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u0432 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u043c\u044b \u043d\u0443\u0436\u0434\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c Blue\/Green deployment, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0435\u0432 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 SSL. \u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83788,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-06-03T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-06-03T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DEVOXX UK. Kubernetes en production : d\u00e9ploiement blue\/green, auto-scaling et automatisation du d\u00e9ploiement. Partie 2 | ProHoster","description":"Kubernetes est un excellent outil pour ex\u00e9cuter des conteneurs Docker dans un environnement de production clusteris\u00e9. Cependant, il existe des t\u00e2ches que Kubernetes ne peut pas r\u00e9soudre.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DEVOXX UK. Kubernetes \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435: Blue\/Green deployment, \u0430\u0432\u0442\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f. \u0427\u0430\u0441\u0442\u044c 2 | ProHoster","og:description":"Kubernetes \u2014 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 Docker \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0437\u0430\u0434\u0430\u0447\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 Kubernetes \u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/devoxx-uk-kubernetes-v-prodakshene-blue-green-deployment-avtomasshtabirovanie-i-avtomatizacziya-razvertyvaniya-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-06-03T05:42:26+00:00","article:modified_time":"2020-06-03T05:42:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83787","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:11:01","updated":"2022-09-28 11:45:41","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/83787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=83787"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/83787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/83788"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=83787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=83787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=83787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}