{"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\/lv\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio","title":{"rendered":"Canary Deployment Kubernetes #3: Istio","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3 id=\"ispolzovanie-istiokiali-dlya-zapuska-i-vizualizacii-canary-deploya\">Istio+Kiali izmanto\u0161ana kan\u0101ru izvieto\u0161anas palai\u0161anai un vizualiz\u0113\u0161anai<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment 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\">\u0160\u012b cikla raksti<\/h4>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/512766\/\">Canary Deployment Kubernetes #1: Gitlab CI<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/513118\/\">Kan\u0101ru izvieto\u0161ana Kubernetes #2: Argo Rollouts<\/a><\/noindex><\/li>\n<li>(\u0161is raksts)<\/li>\n<li>Kan\u0101ru izvieto\u0161ana, izmantojot Jenkins-X Istio Flagger<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"canary-deployment\">Kan\u0101ru izvieto\u0161ana<\/h3>\n<p><\/p>\n<p>Ceram, ka j\u016bs las\u012bj\u0101t <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/512766\/\">pirmo da\u013cu<\/a><\/noindex>, kur\u0101 m\u0113s \u012bsi izskaidroj\u0101m, kas ir kan\u0101ru izvietojumi un par\u0101d\u012bj\u0101m, k\u0101 to \u012bstenot ar standarta Kubernetes resursiem.<\/p>\n<p><\/p>\n<h3 id=\"istio\">Istio<\/h3>\n<p><\/p>\n<p>Un m\u0113s pie\u0146emam, ka, lasot \u0161o rakstu, j\u016bs jau zin\u0101t, kas ir Istio. Ja n\u0113, varat par to izlas\u012bt <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-istio-simply-visually-explained-58a7d158b83f?source=friends_link&amp;sk=378ed718d2d6cfd09e6d23c7616cba81\">\u0161eit<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"prilozhenie-dlya-testov\">Test\u0113\u0161anas lietotne<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kubernetes #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/4c1e7d1644411cecaf52433b98219bb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Katrs pods satur divus konteinerus: m\u016bsu lietotne un istio-proxy.<\/p>\n<p><\/p>\n<p>M\u0113s izmantosim vienk\u0101r\u0161u test\u0113\u0161anas lietotni ar pods frontend-nginx un backend uz python. Pods ar nginx vienk\u0101r\u0161i p\u0101radres\u0113s katru piepras\u012bjumu uz podu ar backend un darbosies k\u0101 proxy. S\u012bk\u0101ku inform\u0101ciju varat skat\u012bt n\u0101kamajos yaml failos:<\/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\">Test\u0113\u0161anas lietotnes palai\u0161ana patst\u0101v\u012bgi<\/h4>\n<p><\/p>\n<p>Ja v\u0113laties sekot manam piem\u0113ram un izmantot \u0161o test\u0113\u0161anas lietotni patst\u0101v\u012bgi, skatiet <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/README.md\">projekta las\u0101mviela<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"nachalnyy-deployment\">S\u0101kotn\u0113j\u0101 izvieto\u0161ana<\/h3>\n<p><\/p>\n<p>Palai\u017eot pirmo izvieto\u0161anu, m\u0113s redzam, ka m\u016bsu lietotnes podiem ir tikai 2 konteineri, t\u0101tad Istio sidecar v\u0113l tikai tiek iek\u013cauts:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kubernetes #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/5e1340c271845973cf932cc291d98972.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Un m\u0113s ar\u012b redzam Istio Gateway Loadbalancer telp\u0101 <code>istio-system<\/code>:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kubernetes #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/24549496f038bd61d1288b122c66e6ea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4 id=\"sozdanie-trafika\">Satiksmes izveide<\/h4>\n<p><\/p>\n<p>M\u0113s izmantosim n\u0101kamo IP, lai \u0123ener\u0113tu satiksmi, kuru frontend podi pie\u0146ems un novirz\u012bs uz backend podiem:<\/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>M\u0113s ar\u012b pievienosim <code>frontend.istio-test<\/code> m\u016bsu hosts failam.<\/p>\n<p><\/p>\n<h4 id=\"prosmotr-mesh-cherez-kiali\">Mre\u017ea skat\u012b\u0161ana caur Kiali<\/h4>\n<p><\/p>\n<p>M\u0113s esam uzst\u0101d\u012bju\u0161i test\u0113\u0161anas lietotni un Istio kop\u0101 ar Tracing, Grafana, Prometheus un Kiali (s\u012bk\u0101k skat. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/README.md\">projekta las\u0101mviela<\/a><\/noindex>). T\u0101p\u0113c m\u0113s varam izmantot Kiali caur:<\/p>\n<p><\/p>\n<p><code>istioctl dashboard kiali # admin:admin<\/code><\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kubernetes #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/3e925a977aedcde3912d46dcc1f47713.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kiali vizualiz\u0113 pa\u0161reiz\u0113jo satiksmi caur Mre\u017eu<\/p>\n<p><\/p>\n<p>K\u0101 redzam, 100% satiksmes non\u0101k frontend pakalpojum\u0101, p\u0113c tam uz frontend podu ar etiket\u0113m v1, jo m\u0113s izmantojam vienk\u0101r\u0161u nginx proxy, kas novirza piepras\u012bjumus uz backend pakalpojumu, kas savuk\u0101rt novirza tos uz backend podiem ar etiket\u0113m v1.<\/p>\n<p><\/p>\n<p>Kiali lieliski darbojas kop\u0101 ar Istio un nodro\u0161ina \u0101rk\u0101rt\u012bgi labu risin\u0101jumu Mre\u017eas vizualiz\u0113\u0161anai. Vienk\u0101r\u0161i lieliski.<\/p>\n<p><\/p>\n<h3 id=\"canary-deployment-1\">Kan\u0101ru izvieto\u0161ana<\/h3>\n<p><\/p>\n<p>M\u016bsu backend jau satur divus k8s izvietojumus, vienu v1 un vienu v2. Tagad mums vienk\u0101r\u0161i j\u0101saka Istio novirz\u012bt noteiktu procentu piepras\u012bjumu uz v2. <\/p>\n<p><\/p>\n<h3 id=\"shag-1-10\">Sol\u012bjums 1: 10%<\/h3>\n<p><\/p>\n<p>Un viss, kas mums j\u0101dara, ir piel\u0101got VirtualService svarus. <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=\"Canary Deployment Kubernetes #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/5cf97856676873f5f3cba08b15964c18.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Redzam, ka 10% piepras\u012bjumu tiek novirz\u012bti uz v2.<\/p>\n<p><\/p>\n<h4 id=\"shag-2-50\">2. solis: 50%<\/h4>\n<p><\/p>\n<p>Un tagad pietiekami vienk\u0101r\u0161i palielin\u0101t to l\u012bdz 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=\"Canary Deployment 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\">3. solis: 100%<\/h3>\n<p><\/p>\n<p>Tagad Canary izvietojums var tikt uzskat\u012bts par pabeigtu un viss satiksme tiek novirz\u012bta uz v2:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment 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\">Canary test\u0113\u0161ana manu\u0101li<\/h3>\n<p><\/p>\n<p>Pie\u0146emsim, ka m\u0113s tagad uz aizmuguri v2 nos\u016bt\u0101m 10% no visiem piepras\u012bjumiem. Ko dar\u012bt, ja v\u0113lamies manu\u0101li p\u0101rbaud\u012bt v2, lai p\u0101rliecin\u0101tos, ka viss darbojas k\u0101 gaid\u012bts?<\/p>\n<p><\/p>\n<p>M\u0113s varam pievienot \u012bpa\u0161u atbilsto\u0161u noteikumu, kas balst\u012bts uz HTTP virsrakstiem:<\/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>Tagad, izmantojot curl, m\u0113s varam piespiest piepras\u012bt v2, nos\u016btot virsrakstu:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kubernetes #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/eaf26cae21c403944110b5d7705e1ebc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Piepras\u012bjumi bez virsraksta joproj\u0101m tiks p\u0101rvald\u012bti ar attiec\u012bbu 1\/10:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment 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 div\u0101m atkar\u012bg\u0101m versij\u0101m<\/h4>\n<p><\/p>\n<p>Tagad m\u0113s apl\u016bkosim gad\u012bjumu, kad mums ir versija v2 gan priek\u0161\u0113jai, gan aizmugures da\u013cai. Abiem m\u0113s nor\u0101d\u012bj\u0101m, ka 10% satiksmes j\u0101iet v2:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kubernetes #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/4b5de3f82cb960102164034b7b6b100a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Redzam, ka priek\u0161\u0113j\u0101 versija v1 un v2 abi p\u0101rs\u016bta satiksmi attiec\u012bb\u0101 1\/10 uz aizmugur\u0113jo v1 un v2.<\/p>\n<p><\/p>\n<p>Un ko dar\u012bt, ja mums vajadz\u0113tu p\u0101rs\u016bt\u012bt satiksmi no frontend-v2 tikai uz backend-v2, jo tas nav savietojams ar v1? T\u0101d\u0113\u013c m\u0113s iestat\u012bsim attiec\u012bbu 1\/10 priek\u0161\u0113jai da\u013cai, kas kontrol\u0113, k\u0101da satiksme non\u0101k backend-v2, izmantojot saska\u0146o\u0161anu p\u0113c <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>Rezult\u0101t\u0101 m\u0113s ieg\u016bstam to, kas nepiecie\u0161ams:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment 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\">At\u0161\u0137ir\u012bbas no manu\u0101l\u0101 Canary pieejas<\/h3>\n<p><\/p>\n<p>No <em>pirmaj\u0101 da\u013c\u0101<\/em> m\u0113s manu\u0101li veic\u0101m Canary izvietojumu, izmantojot divas k8s izvietojumus. Tur m\u0113s p\u0101rvald\u012bj\u0101m piepras\u012bjumu attiec\u012bbu, mainot repliku skaitu. \u0160\u012b pieeja darbojas, ta\u010du tai ir nopietnas tr\u016bkumus.<\/p>\n<p><\/p>\n<p>Istio \u013cauj noteikt piepras\u012bjumu attiec\u012bbu neatkar\u012bgi no repliku skaita. Tas noz\u012bm\u0113, piem\u0113ram, ka m\u0113s varam izmantot HPA (Horizontal Pod Autoscalers \u2014 horizont\u0101lo podu autom\u0101tisko m\u0113rogo\u0161anu) un to nav nepiecie\u0161ams konfigur\u0113t atbilsto\u0161i pa\u0161reiz\u0113jai Canary izvietojuma st\u0101voklim.<\/p>\n<p><\/p>\n<h3 id=\"itog\">Rezult\u0101ts<\/h3>\n<p><\/p>\n<p>Istio darbojas lieliski, un, izmantojot to kop\u0101 ar Kiali, ieg\u016bstam \u013coti jaud\u012bgu kombin\u0101ciju. N\u0101kamais man\u0101 intere\u0161u sarakst\u0101 ir kombin\u0101cija Spinnaker ar Istio automatiz\u0101cijas un Canary anal\u012bzei.<\/p>\n<p>Avots: <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.4 - 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\/lv\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\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\/lv\/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\udd47Canary Deployment Kubernetes #3: Istio | ProHoster","description":"Istio+Kiali izmanto\u0161ana kan\u0101ru izvieto\u0161anas palai\u0161anai un vizualiz\u0113\u0161anai","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/90699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=90699"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/90699\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/90700"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=90699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=90699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=90699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}