{"id":52688,"date":"2019-11-14T00:00:00","date_gmt":"2019-11-13T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie"},"modified":"2020-02-18T14:00:29","modified_gmt":"2020-02-18T11:00:29","slug":"strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","title":{"rendered":"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Napomena prevoda:<\/b> Ovaj pregledni materijal iz Weaveworks uvodi u najpopularnije strategije implementacije aplikacija i obja\u0161njava mogu\u0107nost realizacije najnaprednijih od njih uz pomo\u0107 Kubernetes operatora Flagger. Napisan je jednostavnim jezikom i sadr\u017ei ilustrativne dijagrame, \u0161to omogu\u0107ava razumevanje i po\u010detnicima in\u017eenjerima.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/8d32d63c9986e9f5b35ccca74a546d42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Dijagram preuzet iz <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">drugog pregleda<\/a><\/noindex> strategija implementacije, koji je napravljen u Container Solutions<\/i><\/p>\n<p>Jedan od najve\u0107ih problema u razvoju cloud native aplikacija danas je ubrzanje izbacivanja. Uz mikroservisni pristup, programeri ve\u0107 rade s potpuno modularnim aplikacijama i projektuju ih, omogu\u0107avaju\u0107i razli\u010ditim timovima da istovremeno pi\u0161u kod i vr\u0161e izmene u aplikaciji.<\/p>\n<p>Kra\u0107e i \u010de\u0161\u0107e implementacije imaju slede\u0107e prednosti:<\/p>\n<ul>\n<li> Smanjuje se vreme do izlaska na tr\u017ei\u0161te.<\/li>\n<li> Nove funkcije br\u017ee dolaze do korisnika.<\/li>\n<li> Povratne informacije korisnika br\u017ee sti\u017eu do tima programera. To zna\u010di da tim mo\u017ee br\u017ee dodavati funkcionalnosti i ispravljati probleme.<\/li>\n<li> Pove\u0107ava se moral programera: s ve\u0107im brojem funkcija u razvoju, rad je zanimljiviji.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nAli pove\u0107anje u\u010destalosti objavljivanja tako\u0111e pove\u0107ava \u0161anse za negativan uticaj na pouzdanost aplikacije ili korisni\u010dko iskustvo. Stoga je timovima za rad i DevOps va\u017eno da izgrade procese i upravljaju strategijama implementacije na na\u010din da minimiziraju rizik za proizvod i korisnike. (Saznajte vi\u0161e o automatizaciji CI\/CD procesa mo\u017eete <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/assets\/images\/blta8084030436bce24\/CICD_eBook_Web.pdf\">ovdje<\/a><\/noindex>.)<\/p>\n<p>U ovoj publikaciji raspravlja\u0107emo o razli\u010ditim strategijama implementacije u Kubernetes-u, uklju\u010duju\u0107i rolling implementacije i naprednije metode kao \u0161to su kanarinske (canary) implementacije i njihove varijante.<\/p>\n<h2>Strategije implementacije<\/h2>\n<p>\nPostoji nekoliko razli\u010ditih tipova strategija implementacije koje se mogu koristiti u zavisnosti od cilja. Na primer, mo\u017eda \u0107ete \u017eeleti da izvr\u0161ite izmene u odre\u0111enoj okolini za dalja testiranja, ili u podskupini korisnika\/klijenata, ili \u0107e biti potrebno izvr\u0161iti ograni\u010deno testiranje na korisnicima pre nego \u0161to neka funkcionalnost postane <i>javna<\/i>.<\/p>\n<h3>Rolling (postepena, 'nakladna' implementacija)<\/h3>\n<p>\nTo je standardna strategija implementacije u Kubernetesu. Postepeno, jedan po jedan, zamjenjuje pod-ove sa starom verzijom aplikacije pod-ovima sa novom verzijom \u2014 bez zastoja klastera.<\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/cbd490f1ef8311ff4c242726e947248c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes \u010deka da nove pod-ove budu spremne za rad (provjeravaju\u0107i ih pomo\u0107u <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">readiness testova<\/a><\/noindex>), prije nego \u0161to po\u010dne sa ga\u0161enjem starih. Ako se pojavi problem, takvo a\u017euriranje se mo\u017ee prekinuti, a da se cijeli klaster ne zaustavi. U YAML datoteci koja opisuje tip implementacije, nova slika zamjenjuje staru sliku:<\/p>\n<pre><code class=\"plaintext\">apiVersion: apps\/v1beta1\nkind: Deployment\nmetadata:\n  name: awesomeapp\nspec:\n  replicas: 3\n  template:\n    metadata:\n      labels:\n        app: awesomeapp\n    spec:\n      containers:\n        - name: awesomeapp\n          image: imagerepo-user\/awesomeapp:new\n          ports:\n            - containerPort: 8080<\/code><\/pre>\n<p>\nParametre primjene mo\u017eete pojasniti u manifest datoteci:<\/p>\n<pre><code class=\"plaintext\">spec:\n  replicas: 3\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n       maxSurge: 25%\n       maxUnavailable: 25%  \n  template:\n  ...\n<\/code><\/pre>\n<p><\/p>\n<h3>Recreate (ponovno kreiranje)<\/h3>\n<p>\nU ovoj najjednostavnijoj vrsti implementacije, stari pod-ovi se ubijaju svi odjednom i zamjenjuju novim:<\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/46168e36b7f44c76bcea40ab3a1a2cad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOdgovaraju\u0107i manifest izgleda otprilike ovako:<\/p>\n<pre><code class=\"plaintext\">spec:\n  replicas: 3\n  strategy:\n    type: Recreate\n  template:\n  ...<\/code><\/pre>\n<p><\/p>\n<h3>Blue\/Green (plavo-zelene implementacije)<\/h3>\n<p>\nStrategija plavo-zelenog implementiranja (ponekad se jo\u0161 naziva red\/black, tj. crveno\/crno) predvi\u0111a simultano implementiranje stare (zelene) i nove (plave) verzije aplikacije. Nakon postavljanja obje verzije, obi\u010dni korisnici imaju pristup zelenoj, dok je plava dostupna QA timu za automatizaciju testiranja putem posebne usluge ili direktnog propu\u0161tanja portova:<\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/6664b625c99e089acf01c92edce0b45a.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<pre><code class=\"plaintext\">apiVersion: apps\/v1beta1\nkind: Deployment\nmetadata:\n  name: awesomeapp-02\nspec:\n  template:\n    metadata:\n      labels:\n        app: awesomeapp\n        version: \"02\"<\/code><\/pre>\n<p>\nNakon \u0161to je plava (nova) verzija bila testirana i njen izdanje je odobreno, usluga se prebacuje na nju, a zelena (stara) se gasi:<\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Service\nmetadata:\n  name: awesomeapp\nspec:\n  selector:\n    app: awesomeapp\n    version: \"02\"\n...<\/code><\/pre>\n<p><\/p>\n<h3>Canary (kanarinske implementacije)<\/h3>\n<p>\nKanarinske implementacije su sli\u010dne plavo-zelenim, ali se bolje upravljaju i koriste <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">progresivni<\/a><\/noindex> postepeni pristup. Ovom tipu pripada nekoliko razli\u010ditih strategija, uklju\u010duju\u0107i \u201eskrivene\u201c lansiranja i A\/B testiranje.<\/p>\n<p>Ova strategija se primenjuje kada je potrebno isprobati neku novu funkcionalnost, obi\u010dno u pozadini aplikacije. Su\u0161tina pristupa je da se kreiraju dva prakti\u010dno identi\u010dna servera: jedan servisira gotovo sve korisnike, dok drugi, sa novim funkcijama, servisira samo malu podgrupu korisnika, nakon \u010dega se rezultati njihovog rada upore\u0111uju. Ako sve pro\u0111e bez gre\u0161aka, nova verzija se postepeno uvodi u celu infrastrukturu.<\/p>\n<p>Iako se ova strategija mo\u017ee provesti isklju\u010divo putem Kubernetes-a, zamjenjuju\u0107i stare pod-ove novima, mnogo je zgodnije i jednostavnije koristiti servisnu mre\u017eu poput Istio.<\/p>\n<p>Na primjer, mo\u017eete imati dvije razli\u010dite manifestacije u Gitu: obi\u010dan sa oznakom 0.1.0 i \"kanarinski\" sa oznakom 0.2.0. Mijenjaju\u0107i te\u017eine u manifestu virtuelnog gateway-a Istio, mo\u017eete upravljati raspodjelom prometa izme\u0111u ove dvije implementacije:<\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/d75dc34fea187c4e67879d0f64f9251c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKorak po korak vodi\u010d za implementaciju kanarinskih deploy-ovanja uz Istio mo\u017eete prona\u0107i u materijalu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-workflows-for-istio-canary-deployments\">GitOps Workflows with Istio<\/a><\/noindex>. <i>(<b>Napomena za prijevod.<\/b>: Tako\u0111e smo preveli materijal o kanarinskim postavkama u Istio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">ovdje<\/a><\/noindex>.)<\/i><\/p>\n<h4>Kanarinske postavke sa Weaveworks Flagger<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> omogu\u0107ava lako i efikasno upravljanje kanarinskim postavkama.<\/p>\n<p>Flagger automatizuje rad s njima. Koristi Istio ili AWS App Mesh za usmeravanje i prebacivanje saobra\u0107aja, kao i metrike Prometheus za analizu rezultata. Pored toga, analiza kanarinskih postavki mo\u017ee se dopuniti webhook-ovima za izvo\u0111enje prihvatnih (acceptance) testova, testova optere\u0107enja i drugih vrsta provera.<\/p>\n<p>Na osnovu implementacije Kubernetes-a i, ako je potrebno, horizontalnog skaliranja pod-ova (HPA), Flagger stvara skupove objekata (implementacije Kubernetes-a, usluge ClusterIP i virtuelne usluge Istio ili App Mesh) za analizu i provo\u0111enje kanarinskih implementacija:<\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/99aa426bbcf59edcb70d5637e32d8ff7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nImplementiraju\u0107i kontrolni sistem <i>(control loop)<\/i>, Flagger postepeno preusmjerava promet na kanarinski server, istovremeno mjere\u0107i klju\u010dne performanse, kao \u0161to su udio uspje\u0161nih HTTP zahtjeva, prosje\u010dno trajanje zahtjeva i zdravlje pod-ova. Na osnovu analize KPI (klju\u010dnih pokazatelja izvr\u0161avanja), kanarinski dio ili raste ili se smanjuje, a rezultati analize se objavljuju na Slack-u. Opis i demonstracija ovog procesa mogu se na\u0107i u materijalu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/progressive-delivery-for-aws-app-mesh\">Progressive Delivery for App Mesh<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/f9fa1ba66edecc2b3e971952a318ea40.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Tamno (skriveno) ili A\/B raspore\u0111ivanje<\/h3>\n<p>\nSkriveno raspore\u0111ivanje je jo\u0161 jedna varijacija kanarinog pristupa (uz koji, usput, Flagger tako\u0111er mo\u017ee raditi). Razlika izme\u0111u skrivenog i kanarinog raspore\u0111ivanja je u tome \u0161to se skrivena raspore\u0111ivanja bave frontend-om, a ne backend-om, kao kod kanarinog.<\/p>\n<p>Drugo ime za ova raspore\u0111ivanja je A\/B testiranje. Umesto da svim korisnicima otkriju novu funkciju, ona se nudi samo ograni\u010denoj grupi. Obi\u010dno ti korisnici ne znaju da su testeri pioniri (odakle i naziv \"skriveno raspore\u0111ivanje\").<\/p>\n<p>Uz pomo\u0107 prekida\u010da funkcionalnosti <i>(feature toggles)<\/i> i drugih alata mo\u017ee se pratiti kako korisnici interaguju s novom funkcijom, da li ih privla\u010di ili smatraju da je novi korisni\u010dki interfejs zbunjuju\u0107i, i drugim tipovima metrika.<\/p>\n<p><img decoding=\"async\" alt=\"Strategije implementacije u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje)\" src=\"\/wp-content\/uploads\/2019\/11\/037b5ccca2e1d99ac142d2ce734f954d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Flagger i A\/B raspore\u0111ivanja<\/h4>\n<p>\nPored usmjeravanja na osnovu te\u017eine, Flagger tako\u0111er mo\u017ee usmjeriti promet na kanarinski server zavisno od HTTP parametara. Kod A\/B testiranja, mogu se koristiti HTTP zaglavlja ili kola\u010di\u0107i za preusmjeravanje specifi\u010dnog segmenta korisnika. Ovo je posebno efikasno u slu\u010dajevima frontend aplikacija koje zahtevaju vezanost sesije za server <i>(session affinity)<\/i>. Dodatne informacije mo\u017eete prona\u0107i u dokumentaciji Flagger.<\/p>\n<p><i>Autor se zahvaljuje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefanu Prodanu<\/a><\/noindex>, in\u017eenjeru iz Weaveworks (i kreatoru Flaggers), za sve ove fantasti\u010dne sheme raspore\u0111ivanja.<\/i><\/p>\n<h2>P.S. od prevodioca<\/h2>\n<p>\nPro\u010ditajte i na na\u0161em blogu:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">Pregled i usporedba Ingress kontrolera za Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 na\u0161 alat za CI\/CD u Kubernetesu (pregled i video prezentacija)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Gradnja i deploy istovrsnih mikroservisa s werf i GitLab CI<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">\u0160ta je GitOps?<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/471620\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u042d\u0442\u043e\u0442 \u043e\u0431\u0437\u043e\u0440\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0442 Weaveworks \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f\u043c\u0438 \u0432\u044b\u043a\u0430\u0442\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0438\u0437 \u043d\u0438\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Kubernetes-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 Flagger. \u041e\u043d \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0435 \u0441\u0445\u0435\u043c\u044b, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u043e\u043f\u0440\u043e\u0441\u0435 \u0434\u0430\u0436\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c. \u0421\u0445\u0435\u043c\u0430 \u0432\u0437\u044f\u0442\u0430 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439 \u0432\u044b\u043a\u0430\u0442\u0430, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u043e\u0433\u043e \u0432 Container Solutions \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-52688","post","type-post","status-publish","format-standard","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=\"\u041f\u0440\u0438\u043c.\" \/>\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\/hr\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\udd47\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie\" \/>\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=\"2019-11-13T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:29+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\udd47Strategije raspore\u0111ivanja u Kubernetesu: rolling, recreate, blue\/green, canary, dark (A\/B testiranje) | ProHoster","description":"Prim.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\udd47\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0434\u0435\u043f\u043b\u043e\u044f \u0432 Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435) | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","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":"2019-11-13T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52688","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":"2026-01-24 04:27:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:03:32","updated":"2026-01-24 04:27:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/52688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=52688"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/52688\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=52688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=52688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=52688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}