{"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\/et\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio","title":{"rendered":"Canary Deployment Kuberneteses #3: Istio","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3 id=\"ispolzovanie-istiokiali-dlya-zapuska-i-vizualizacii-canary-deploya\">Istio+Kiali kasutamine Canary deployde k\u00e4ivitamiseks ja visualiseerimiseks<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #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\">Selle ts\u00fckli artiklid<\/h4>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/512766\/\">Canary Deployment Kubernetes'is #1: Gitlab CI<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/513118\/\">Canary Deployment Kuberneteses #2: Argo Rollouts<\/a><\/noindex><\/li>\n<li>(see artikkel)<\/li>\n<li>Canary deployment Jenkins-X Istio Flaggeriga<\/li>\n<\/ol>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"canary-deployment\">Canary deploy<\/h3>\n<p><\/p>\n<p>Loodame, et olete lugenud <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/nixys\/blog\/512766\/\">esimest osa<\/a><\/noindex>, kus selgitasime l\u00fchidalt, mis on Canary deployd ja n\u00e4itasime, kuidas seda rakendada Kubernetes'i standardsete ressursside abil.<\/p>\n<p><\/p>\n<h3 id=\"istio\">Istio<\/h3>\n<p><\/p>\n<p>Ja me eeldame, et lugedes seda artiklit, te juba teate, mis on Istio. Kui ei, siis v\u00f5ite sellest lugeda <noindex><a rel=\"nofollow\" href=\"https:\/\/itnext.io\/kubernetes-istio-simply-visually-explained-58a7d158b83f?source=friends_link&amp;sk=378ed718d2d6cfd09e6d23c7616cba81\">siin<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"prilozhenie-dlya-testov\">Testimisrakendus<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/4c1e7d1644411cecaf52433b98219bb4.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Iga pod sisaldab kahte konteinerit: meie rakenduse ja istio-proxy.<\/p>\n<p><\/p>\n<p>Kasutame lihtsat testimisrakendust podidega frontend-nginx ja backend Pythonis. Nginxiga pod suunab iga p\u00e4ringu backend podile ja t\u00f6\u00f6tab kui proxy. \u00dcksikasjadega saab tutvuda j\u00e4rgmistes YAML-failides:<\/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\">Testimisrakenduse k\u00e4ivitamine iseseisvalt<\/h4>\n<p><\/p>\n<p>Kui soovite j\u00e4rgida minu n\u00e4idet ja kasutada seda testimisrakendust iseseisvalt, vaadake <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/README.md\">projekti readme<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h3 id=\"nachalnyy-deployment\">Esialgne Deployment<\/h3>\n<p><\/p>\n<p>Esimese Deployment'i k\u00e4ivitamisel n\u00e4eme, et meie rakenduse podid sisaldavad vaid kahte konteinerit, st Istio sidecar on alles juurutamisel:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/5e1340c271845973cf932cc291d98972.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Ja samuti n\u00e4eme Istio Gateway Loadbalancerit namespacis <code>istio-system<\/code>:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/24549496f038bd61d1288b122c66e6ea.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h4 id=\"sozdanie-trafika\">Liiklus genereerimine<\/h4>\n<p><\/p>\n<p>Kasutame j\u00e4rgmist IP-d, et genereerida liiklust, mis hakkab saabuma frontend podidesse ja suunatakse backend podidesse:<\/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>Lisame samuti <code>frontend.istio-test<\/code> meie hosts faili.<\/p>\n<p><\/p>\n<h4 id=\"prosmotr-mesh-cherez-kiali\">Mesh'i vaatamine Kiali kaudu<\/h4>\n<p><\/p>\n<p>Oleme installinud testimisrakenduse ja Istio koos Tracing, Grafana, Prometheus ja Kiali'ga (lisainfo vaata <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/wuestkamp\/k8s-deployment-example-istio-canary-infrastructure\/blob\/master\/README.md\">projekti readme<\/a><\/noindex>). Seega saame kasutada Kiali't aadressil:<\/p>\n<p><\/p>\n<p><code>istioctl dashboard kiali # admin:admin<\/code><\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/3e925a977aedcde3912d46dcc1f47713.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kiali visualiseerib praegust liiklust l\u00e4bi Mesh'i<\/p>\n<p><\/p>\n<p>Nagu n\u00e4eme, suunatakse 100% liiklusest frontend teenusele, seej\u00e4rel podi frontendiga, millel on label v1, kuna kasutame lihtsat nginx proxy't, mis suunab p\u00e4ringud backend teenusele, mis omakorda suunab need backend podidesse, millel on label v1.<\/p>\n<p><\/p>\n<p>Kiali t\u00f6\u00f6tab suurep\u00e4raselt koos Istio'ga ja pakub lahendust Mesh'i visualiseerimiseks. Lihtsalt suurep\u00e4rane.<\/p>\n<p><\/p>\n<h3 id=\"canary-deployment-1\">Canary deploy<\/h3>\n<p><\/p>\n<p>Meie backend'il on juba kaks k8s deployment'i, \u00fcks v1 jaoks ja \u00fcks v2 jaoks. N\u00fc\u00fcd peame lihtsalt \u00fctlema Istio'le, et suunata teatud protsent p\u00e4ringutest v2 peale. <\/p>\n<p><\/p>\n<h3 id=\"shag-1-10\">Samm 1: 10%<\/h3>\n<p><\/p>\n<p>Ja k\u00f5ik, mida peame tegema, on reguleerida VirtualService'i kaalu <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 Kuberneteses #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/5cf97856676873f5f3cba08b15964c18.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>N\u00e4eme, et 10% p\u00e4ringutest suunatakse v2-le.<\/p>\n<p><\/p>\n<h4 id=\"shag-2-50\">Samm 2: 50%<\/h4>\n<p><\/p>\n<p>Ja n\u00fc\u00fcd on lihtsalt vaja suurendada see 50%-ni:<\/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 Kuberneteses #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\">Samm 3: 100%<\/h3>\n<p><\/p>\n<p>N\u00fc\u00fcd v\u00f5ib Canary deploymendi pidada l\u00f5puleviiduks ja kogu liiklus suunatakse v2-le:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #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 testimine k\u00e4sitsi<\/h3>\n<p><\/p>\n<p>Oletame, et praegu suuname backend v2-le 10% k\u00f5igist p\u00e4ringutest. Mis siis, kui me tahame k\u00e4sitsi testida v2, et veenduda, et k\u00f5ik t\u00f6\u00f6tab nagu ootame?<\/p>\n<p><\/p>\n<p>Saame lisada spetsiaalse vastavusreegli, mis p\u00f5hineb HTTP pealkirjadel:<\/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>N\u00fc\u00fcd saame curliga sunniviisiliselt k\u00fcsida v2, saates pealkirja:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/eaf26cae21c403944110b5d7705e1ebc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>Pealkirjata p\u00e4ringud suunatakse endiselt suhtega 1\/10:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #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 kahe s\u00f5ltuva versiooni jaoks<\/h4>\n<p><\/p>\n<p>N\u00fc\u00fcd vaatame olukorda, kus meil on versioon v2 nii frontendis kui backendis. Kummalegi oleme m\u00e4\u00e4ranud, et 10% liiklusest peaks minema v2-le:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #3: Istio\" src=\"\/wp-content\/uploads\/2020\/08\/4b5de3f82cb960102164034b7b6b100a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<p>N\u00e4eme, et frontend v1 ja v2 suunavad m\u00f5lemad liiklust suhtega 1\/10 backend v1 ja v2-le.<\/p>\n<p><\/p>\n<p>Aga mis siis, kui peame suunama liikluse frontend-v2-lt ainult backend-v2-le, sest see ei ole \u00fchilduv v1-ga? Selleks m\u00e4\u00e4rame 1\/10 suhte frontendile, mis kontrollib, milline liiklus j\u00f5uab backend-v2-le, kasutades vastavust <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>Saame tulemuse, mida vajame:<\/p>\n<p>\n<img decoding=\"async\" alt=\"Canary Deployment Kuberneteses #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\">Erinevused k\u00e4sitsi Canary l\u00e4henemisest<\/h3>\n<p><\/p>\n<p>Uues <em>esimeses osas<\/em> me tegime k\u00e4sitsi Canary juurutamist, kasutades kaht k8s juurutust. Seal me juhtisime p\u00e4ringute suhet, muutes replikate arvu. See l\u00e4henemine toimib, kuid on t\u00f5siseid puudusi.<\/p>\n<p><\/p>\n<p>Istio v\u00f5imaldab m\u00e4\u00e4rata p\u00e4ringute suhet s\u00f5ltumata replikate arvust. See t\u00e4hendab n\u00e4iteks, et me saame kasutada HPAd (Horizontal Pod Autoscalers \u2014 horisontaalne podide skaleerimine) ja seda ei pea seadistama vastavalt praegusele Canary juurutuse olekule.<\/p>\n<p><\/p>\n<h3 id=\"itog\">Kokkuv\u00f5te<\/h3>\n<p><\/p>\n<p>Istio t\u00f6\u00f6tab suurep\u00e4raselt ning selle koos Kiali kasutamine annab v\u00e4ga v\u00f5imsa kombinatsiooni. J\u00e4rgmine asi, mis mind huvitab, on Spinnakeri ja Istio kombinatsioon automatiseerimise ja Canary-anal\u00fc\u00fctika jaoks.<\/p>\n<p>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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 Kuberneteses #3: Istio | ProHoster","description":"Istio+Kiali kasutamine Canary deployde k\u00e4ivitamiseks ja visualiseerimiseks","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/canary-deployment-v-kubernetes-3-istio","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/90699","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=90699"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/90699\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/90700"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=90699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=90699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=90699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}