{"id":90699,"date":"2020-08-05T01:42:12","date_gmt":"2020-08-04T23:42:12","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio"},"modified":"2020-08-05T01:42:12","modified_gmt":"2020-08-04T23:42:12","slug":"canary-deployment-v-kubernetes-3-istio","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio","title":{"rendered":"D\u00e9ploiement Canary dans Kubernetes #3 : Istio","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3 id=\"ispolzovanie-istiokiali-dlya-zapuska-i-vizualizacii-canary-deploya\">Utilisation d'Istio+Kiali pour le d\u00e9ploiement et la visualisation des d\u00e9ploiements Canary<\/h3>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/2eeaaaeaa565700d7a8f6f72c5638d4e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4 id=\"stati-etogo-cikla\">Articles de ce cycle<\/h4>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/512766\/\">D\u00e9ploiement Canary dans Kubernetes #1 : Gitlab CI<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/513118\/\">D\u00e9ploiement Canary dans Kubernetes #2 : Argo Rollouts<\/a><\/noindex><\/li>\n<li>(cet article)<\/li>\n<li>D\u00e9ploiement Canary utilisant Jenkins-X Istio Flagger<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"canary-deployment\">D\u00e9ploiement Canary<\/h3>\n<p><\/p>\n<p>Nous esp\u00e9rons que vous avez lu <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/512766\/\">la premi\u00e8re partie<\/a><\/noindex>, o\u00f9 nous expliquions bri\u00e8vement ce qu'est le d\u00e9ploiement Canary et montrions comment le r\u00e9aliser \u00e0 l'aide des ressources standard de Kubernetes.<\/p>\n<p><\/p>\n<h3 id=\"istio\">Istio<\/h3>\n<p><\/p>\n<p>Et nous supposons qu'en lisant cet article, vous savez d\u00e9j\u00e0 ce qu'est Istio. Sinon, vous pouvez lire \u00e0 son sujet <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-istio-simply-visually-explained-58a7d158b83f?source=friends_link&amp;sk=378ed718d2d6cfd09e6d23c7616cba81\">ici<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"prilozhenie-dlya-testov\">Application pour les tests<\/h3>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/4c1e7d1644411cecaf52433b98219bb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Chaque pod contient deux conteneurs : notre application et istio-proxy.<\/p>\n<p><\/p>\n<p>Nous utiliserons une simple application de test avec des pods frontend-nginx et backend en python. Le pod avec nginx redirigera simplement chaque requ\u00eate vers le pod avec le backend et fonctionnera comme un proxy. Les d\u00e9tails peuvent \u00eatre consult\u00e9s plus en d\u00e9tail dans les yamls suivants :<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/i\/k8s\/frontend.yaml\">frontend.yaml<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/i\/k8s\/backend.yaml\">backend.yaml<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/i\/k8s\/istio.yaml\">istio.yaml<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<h4 id=\"zapusk-testovogo-prilozheniya-samostoyatelno\">Lancement de l'application de test par soi-m\u00eame<\/h4>\n<p><\/p>\n<p>Si vous souhaitez suivre mon exemple et utiliser cette application de test par vous-m\u00eame, voir <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/README.md\">le readme du projet<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"nachalnyy-deployment\">D\u00e9ployment initial<\/h3>\n<p><\/p>\n<p>Lors du lancement du premier d\u00e9ploiement, nous voyons que les pods de notre application ont seulement 2 conteneurs, c'est-\u00e0-dire qu'Istio sidecar est encore en phase d'int\u00e9gration :<\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/5e1340c271845973cf932cc291d98972.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Et nous voyons \u00e9galement le Loadbalancer Istio Gateway dans le namespace <code>istio-system<\/code>:<\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/24549496f038bd61d1288b122c66e6ea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4 id=\"sozdanie-trafika\">Cr\u00e9ation de trafic<\/h4>\n<p><\/p>\n<p>Nous allons utiliser l'IP suivante pour g\u00e9n\u00e9rer du trafic, qui sera accept\u00e9 par les pods frontend et redirig\u00e9 vers les pods backend :<\/p>\n<p><\/p>\n<p><code>while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done<\/code><\/p>\n<p><\/p>\n<p>Nous ajouterons \u00e9galement <code>frontend.istio-test<\/code> dans notre fichier hosts.<\/p>\n<p><\/p>\n<h4 id=\"prosmotr-mesh-cherez-kiali\">Visualisation du Mesh via Kiali<\/h4>\n<p><\/p>\n<p>Nous avons install\u00e9 l'application de test et Istio avec Tracing, Grafana, Prometheus et Kiali (voir plus en d\u00e9tail <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/README.md\">le readme du projet<\/a><\/noindex>). Par cons\u00e9quent, nous pouvons utiliser Kiali via :<\/p>\n<p><\/p>\n<p><code>istioctl dashboard kiali # admin:admin<\/code><\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/3e925a977aedcde3912d46dcc1f47713.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kiali visualise le trafic actuel \u00e0 travers le Mesh<\/p>\n<p><\/p>\n<p>Comme nous le voyons, 100 % du trafic parvient au service frontend, puis au pod du frontend avec l'\u00e9tiquette v1, car nous utilisons un proxy nginx simple qui redirige les requ\u00eates vers le service backend, qui \u00e0 son tour les redirige vers les pods backend avec l'\u00e9tiquette v1.<\/p>\n<p><\/p>\n<p>Kiali fonctionne parfaitement avec Istio et offre une solution pr\u00eate \u00e0 l'emploi pour visualiser le Mesh. C'est vraiment fantastique.<\/p>\n<p><\/p>\n<h3 id=\"canary-deployment-1\">D\u00e9ploiement Canary<\/h3>\n<p><\/p>\n<p>Notre backend a d\u00e9j\u00e0 deux d\u00e9ploiements k8s, un pour v1 et un pour v2. Maintenant, il nous suffit de dire \u00e0 Istio de rediriger un certain pourcentage des requ\u00eates vers v2. <\/p>\n<p><\/p>\n<h3 id=\"shag-1-10\">\u00c9tape 1 : 10%<\/h3>\n<p><\/p>\n<p>Et tout ce que nous devons faire est d'ajuster le poids du VirtualService dans <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/i\/k8s\/istio.yaml\">istio.yaml<\/a><\/noindex>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.istio.io\/v1alpha3\nkind: VirtualService\nmetadata:\n  name: backend\n  namespace: default\nspec:\n  gateways: []\n  hosts:\n  - \"backend.default.svc.cluster.local\"\n  http:\n  - match:\n    - {}\n    route:\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v1\n        port:\n          number: 80\n      weight: 90\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v2\n        port:\n          number: 80\n      weight: 10<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/5cf97856676873f5f3cba08b15964c18.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Nous voyons que 10% des demandes sont redirig\u00e9es vers v2.<\/p>\n<p><\/p>\n<h4 id=\"shag-2-50\">\u00c9tape 2 : 50%<\/h4>\n<p><\/p>\n<p>Et maintenant, il suffit d'augmenter \u00e0 50 % :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.istio.io\/v1alpha3\nkind: VirtualService\nmetadata:\n  name: backend\n  namespace: default\nspec:\n...\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v1\n        port:\n          number: 80\n      weight: 50\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v2\n        port:\n          number: 80\n      weight: 50<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/c6b425b935e756a8b7ed72051db78763.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3 id=\"shag-3-100\">\u00c9tape 3 : 100%<\/h3>\n<p><\/p>\n<p>Le d\u00e9ploiement Canary peut maintenant \u00eatre consid\u00e9r\u00e9 comme termin\u00e9 et tout le trafic est redirig\u00e9 vers v2 :<\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/bb028dc47f0799dc9371ce89ae64f805.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3 id=\"testirovanie-canary-vruchnuyu\">Test manuel du Canary<\/h3>\n<p><\/p>\n<p>Supposons qu'actuellement nous envoyons 10 % de toutes les demandes vers le backend v2. Que faire si nous souhaitons tester manuellement v2 pour nous assurer que tout fonctionne comme pr\u00e9vu ?<\/p>\n<p><\/p>\n<p>Nous pouvons ajouter une r\u00e8gle correspondante sp\u00e9ciale, bas\u00e9e sur les en-t\u00eates HTTP :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.istio.io\/v1alpha3\nkind: VirtualService\nmetadata:\n  name: backend\n  namespace: default\nspec:\n  gateways: []\n  hosts:\n  - \"backend.default.svc.cluster.local\"\n  http:\n  - match:\n    - headers:\n        canary:\n          exact: \"canary-tester\"\n    route:\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v2\n        port:\n          number: 80\n      weight: 100\n  - match:\n    - {}\n    route:\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v1\n        port:\n          number: 80\n      weight: 90\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v2\n        port:\n          number: 80\n      weight: 10<\/code><\/pre>\n<p><\/p>\n<p>Nous pouvons maintenant forcer la demande vers v2 en envoyant l'en-t\u00eate avec curl :<\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/eaf26cae21c403944110b5d7705e1ebc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Les demandes sans en-t\u00eate seront toujours g\u00e9r\u00e9es avec un ratio de 1\/10 :<\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/8cb0cf5832dd935ba5c4649856ac9005.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4 id=\"canary-dlya-dvuh-zavisimyh-versiy\">Canary pour deux versions d\u00e9pendantes<\/h4>\n<p><\/p>\n<p>Consid\u00e9rons maintenant un cas o\u00f9 nous avons une version v2 pour le frontend et le backend. Pour les deux, nous avons sp\u00e9cifi\u00e9 que 10 % du trafic doit aller vers v2 :<\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/4b5de3f82cb960102164034b7b6b100a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Nous constatons que les frontends v1 et v2 redirigent tous deux le trafic dans un ratio de 1\/10 vers les backends v1 et v2.<\/p>\n<p><\/p>\n<p>Que faire si nous devions rediriger le trafic de frontend-v2 uniquement vers backend-v2, car il n'est pas compatible avec v1 ? Pour cela, nous \u00e9tablirons un ratio de 1\/10 pour le frontend, qui contr\u00f4le quel trafic va vers backend-v2 en utilisant des correspondances par <code>sourceLabels<\/code> :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: networking.istio.io\/v1alpha3\nkind: VirtualService\nmetadata:\n  name: backend\n  namespace: default\nspec:\n  gateways: []\n  hosts:\n  - \"backend.default.svc.cluster.local\"\n  http:\n...\n  - match:\n    - sourceLabels:\n        app: frontend\n        version: v2\n    route:\n    - destination:\n        host: backend.default.svc.cluster.local\n        subset: v2\n        port:\n          number: 80\n      weight: 100<\/code><\/pre>\n<p><\/p>\n<p>Nous obtenons donc ce dont nous avons besoin :<\/p>\n<p>\n<img decoding=\"async\" alt=\"D\u00e9ploiement Canary dans Kubernetes #3 : Istio\" src=\"\/wp-content\/uploads\/2020\/08\/43739627279a9af11885e602a3e96390.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3 id=\"otlichiya-ot-ruchnogo-canary-podhoda\">Diff\u00e9rences par rapport \u00e0 l'approche manuelle de Canary<\/h3>\n<p><\/p>\n<p>Dans <em>de la premi\u00e8re partie<\/em> Nous avons r\u00e9alis\u00e9 le d\u00e9ploiement Canary manuellement, en utilisant \u00e9galement deux d\u00e9ploiements k8s. Nous g\u00e9rions le ratio de requ\u00eates en modifiant le nombre de r\u00e9plications. Cette approche fonctionne, mais pr\u00e9sente des inconv\u00e9nients majeurs.<\/p>\n<p><\/p>\n<p>Istio permet de d\u00e9finir le ratio de requ\u00eates ind\u00e9pendamment du nombre de r\u00e9plications. Cela signifie, par exemple, que nous pouvons utiliser des HPAs (Horizontal Pod Autoscalers \u2014 mise \u00e0 l'\u00e9chelle horizontale des pods) sans avoir \u00e0 les configurer en fonction de l'\u00e9tat actuel du d\u00e9ploiement Canary.<\/p>\n<p><\/p>\n<h3 id=\"itog\">Conclusion<\/h3>\n<p><\/p>\n<p>Istio fonctionne tr\u00e8s bien et en l'utilisant avec Kiali, nous obtenons une combinaison tr\u00e8s puissante. La prochaine chose qui m'int\u00e9resse est la combinaison de Spinnaker avec Istio pour l'automatisation et l'analyse Canary.<\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/513578\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Istio+Kiali \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Canary \u0434\u0435\u043f\u043b\u043e\u044f \u0421\u0442\u0430\u0442\u044c\u0438 \u044d\u0442\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 Canary Deployment \u0432 Kubernetes #1: Gitlab CI Canary Deployment \u0432 Kubernetes #2: Argo Rollouts (\u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f) Canary Deployment \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f Jenkins-X Istio Flagger Canary Deployment \u041d\u0430\u0434\u0435\u0435\u043c\u0441\u044f, \u0447\u0442\u043e \u0432\u044b \u0447\u0438\u0442\u0430\u043b\u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u0433\u0434\u0435 \u043c\u044b \u043a\u0440\u0430\u0442\u043a\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u043b\u0438 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Canary deployments \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043a\u0430\u043a \u0435\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":90700,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-90699","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=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Istio+Kiali \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Canary \u0434\u0435\u043f\u043b\u043e\u044f\" \/>\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\/canary-deployment-v-kubernetes-3-istio\" \/>\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\udd47Canary Deployment \u0432 Kubernetes #3: Istio | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Istio+Kiali \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Canary \u0434\u0435\u043f\u043b\u043e\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio\" \/>\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-08-04T23:42:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-04T23:42:12+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\udd47D\u00e9ploiement Canary dans Kubernetes #3 : Istio | ProHoster","description":"Utilisation d'Istio+Kiali pour le d\u00e9ploiement et la visualisation des d\u00e9ploiements Canary","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio","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\udd47Canary Deployment \u0432 Kubernetes #3: Istio | ProHoster","og:description":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Istio+Kiali \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 Canary \u0434\u0435\u043f\u043b\u043e\u044f","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio","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-08-04T23:42:12+00:00","article:modified_time":"2020-08-04T23:42:12+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"90699","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 12:44:41","updated":"2022-09-28 14:34:54","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\/90699","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=90699"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/90699\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/90700"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=90699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=90699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=90699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}