{"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\/sq\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","title":{"rendered":"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Sh\u00ebnim: p\u00ebrkthimi:<\/b> Ky material p\u00ebrmbledh\u00ebs nga Weaveworks prezanton strategjit\u00eb m\u00eb t\u00eb njohura t\u00eb shp\u00ebrndarjes s\u00eb aplikacioneve dhe tregon mund\u00ebsin\u00eb e implementimit t\u00eb strategjive m\u00eb t\u00eb avancuara me ndihm\u00ebn e operatorit Kubernetes Flagger. Ai \u00ebsht\u00eb shkruar n\u00eb nj\u00eb gjuh\u00eb t\u00eb thjesht\u00eb dhe p\u00ebrmban skemat e qarta, q\u00eb e lejojn\u00eb t\u00eb kuptohet \u00e7\u00ebshtja edhe nga inxhinier\u00ebt fillestar\u00eb.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" src=\"\/wp-content\/uploads\/2019\/11\/8d32d63c9986e9f5b35ccca74a546d42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Skema \u00ebsht\u00eb marr\u00eb nga <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">nj\u00eb rishikim tjet\u00ebr<\/a><\/noindex> i strategjive t\u00eb shp\u00ebrndarjes, t\u00eb b\u00ebr\u00eb n\u00eb Container Solutions<\/i><\/p>\n<p>Nj\u00eb nga problemet m\u00eb t\u00eb m\u00ebdha n\u00eb zhvillimin e aplikacioneve cloud native sot \u00ebsht\u00eb p\u00ebrshpejtimi i shp\u00ebrndarjes. Me qasjen mikrosh\u00ebrbimore, zhvilluesit tashm\u00eb punojn\u00eb me aplikacione plot\u00ebsisht modulare dhe i projektojn\u00eb ato, duke lejuar ekipe t\u00eb ndryshme t\u00eb shkruajn\u00eb kodin dhe t\u00eb b\u00ebjn\u00eb ndryshime n\u00eb aplikacion nj\u00ebkoh\u00ebsisht.<\/p>\n<p>Shp\u00ebrndarjet m\u00eb t\u00eb shkurtra dhe m\u00eb t\u00eb shpeshta kan\u00eb k\u00ebto p\u00ebrpar\u00ebsi:<\/p>\n<ul>\n<li> Koha p\u00ebr t\u00eb hyr\u00eb n\u00eb treg reduktohet.<\/li>\n<li> Funksionet e reja arrijn\u00eb m\u00eb shpejt te p\u00ebrdoruesit.<\/li>\n<li> Komentet e p\u00ebrdoruesve mb\u00ebrrijn\u00eb m\u00eb shpejt te ekipi i zhvilluesve. Kjo do t\u00eb thot\u00eb se ekipi mund t\u00eb shtoj\u00eb funksionalitete dhe t\u00eb rregulloj\u00eb problemet m\u00eb shpejt.<\/li>\n<li> Morali i zhvilluesve rritet: me m\u00eb shum\u00eb funksione n\u00eb zhvillim, \u00ebsht\u00eb m\u00eb emocionuese t\u00eb punosh.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPor me rritjen e frekuenc\u00ebs s\u00eb shp\u00ebrndarjeve, rriten gjithashtu shanset p\u00ebr t\u00eb ndikuar negativisht n\u00eb besueshm\u00ebrin\u00eb e aplikacionit ose p\u00ebrvoj\u00ebn e p\u00ebrdoruesve. Pik\u00ebrisht p\u00ebr k\u00ebt\u00eb arsye, ekipet e operacioneve dhe DevOps-it \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb nd\u00ebrtojn\u00eb procese dhe t\u00eb menaxhojn\u00eb strategjit\u00eb e shp\u00ebrndarjes n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb minimizojn\u00eb rrezikun p\u00ebr produktin dhe p\u00ebrdoruesit. (M\u00ebsoni m\u00eb shum\u00eb rreth automatizimit t\u00eb pipeline-\u00ebve CI\/CD) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/assets\/images\/blta8084030436bce24\/CICD_eBook_Web.pdf\">k\u00ebtu<\/a><\/noindex>.)<\/p>\n<p>N\u00eb k\u00ebt\u00eb botim do t\u00eb diskutojm\u00eb strategjit\u00eb e ndryshme t\u00eb shp\u00ebrndarjes n\u00eb Kubernetes, duke p\u00ebrfshir\u00eb shp\u00ebrndarjet rolling dhe metodat m\u00eb t\u00eb avancuara, si\u00e7 jan\u00eb shp\u00ebrndarjet canary dhe llojet e tyre.<\/p>\n<h2>Strategjit\u00eb e shp\u00ebrndarjes<\/h2>\n<p>\nEkzistojn\u00eb disa lloje t\u00eb ndryshme strategjish shp\u00ebrndarjeje q\u00eb mund t\u00eb shfryt\u00ebzohen, n\u00eb var\u00ebsi t\u00eb q\u00ebllimit. P\u00ebr shembull, ndoshta do t'ju nevojitet t\u00eb b\u00ebni ndryshime n\u00eb nj\u00eb ambient p\u00ebr testim t\u00eb m\u00ebtejsh\u00ebm, ose n\u00eb nj\u00eb n\u00ebngrup p\u00ebrdoruesish\/konsumator\u00ebsh, ose ndoshta do t\u00eb duhet t\u00eb realizoni nj\u00eb testim t\u00eb kufizuar te p\u00ebrdoruesit para se t\u00eb b\u00ebni nj\u00eb funksion <i>publik<\/i>.<\/p>\n<h3>Rolling (shp\u00ebrndarje ngadal\u00ebsisht e realizuar)<\/h3>\n<p>\nKjo \u00ebsht\u00eb strategjia standarde e shp\u00ebrndarjes n\u00eb Kubernetes. Ajo z\u00ebvend\u00ebson gradualisht, nj\u00eb nga nj\u00eb, pod-et me versionin e vjet\u00ebr t\u00eb aplikacionit me pod-et me versionin e ri \u2014 pa ndales\u00eb t\u00eb klasterit.<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" src=\"\/wp-content\/uploads\/2019\/11\/cbd490f1ef8311ff4c242726e947248c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes pret q\u00eb pod-et e reja t\u00eb jen\u00eb gati p\u00ebr pun\u00eb (duke i kontrolluar me an\u00eb t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">testet e gatishm\u00ebris\u00eb<\/a><\/noindex>), p\u00ebrpara se t\u00eb filloj\u00eb t\u00eb mbyll\u00eb ato t\u00eb vjetrat. N\u00ebse ndodhin probleme, ky lloj t\u00ebrheqjeje mund t\u00eb nd\u00ebrpritet pa ndaluar t\u00ebr\u00eb klasterin. N\u00eb skedarin YAML q\u00eb p\u00ebrshkruan llojin e shp\u00ebrndarjes, imazhi i ri z\u00ebvend\u00ebson imazhin e vjet\u00ebr:<\/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>\nOpsionet e azhurnimit t\u00eb rolling mund t\u00eb sakt\u00ebsohen n\u00eb skedarin e manifestit:<\/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 (ri krijimi)<\/h3>\n<p>\nN\u00eb k\u00ebt\u00eb tip t\u00eb thjesht\u00eb shp\u00ebrndarjeje, pod-et e vjetra vriten t\u00eb gjitha nj\u00ebkoh\u00ebsisht dhe z\u00ebvend\u00ebsohen me t\u00eb reja:<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" src=\"\/wp-content\/uploads\/2019\/11\/46168e36b7f44c76bcea40ab3a1a2cad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nManifesti p\u00ebrkat\u00ebs duket di\u00e7ka si kjo:<\/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 (shp\u00ebrndarje blu\/gjelb\u00ebr)<\/h3>\n<p>\nStrategjia e shp\u00ebrndarjes blu\/gjelb\u00ebr (ndonj\u00ebher\u00eb e quajtur gjithashtu red\/black, dmth. e kuqe\/zeshk\u00eb) parashikon shp\u00ebrndarjen simultane t\u00eb versioneve t\u00eb vjetra (gjelb\u00ebr) dhe t\u00eb reja (blu) t\u00eb aplikacionit. Pas vendosjes s\u00eb t\u00eb dy versioneve, p\u00ebrdoruesit normal\u00eb kan\u00eb akses n\u00eb versionin gjelb\u00ebr, nd\u00ebrsa versione blu \u00ebsht\u00eb n\u00eb dispozicion p\u00ebr ekipin QA p\u00ebr automatizimin e testeve p\u00ebrmes nj\u00eb sh\u00ebrbimi t\u00eb ve\u00e7ant\u00eb ose p\u00ebrmes p\u00ebr\u00e7imit t\u00eb portave:<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" 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>\nPasi q\u00eb versioni blu (i ri) \u00ebsht\u00eb testuar dhe \u00ebsht\u00eb miratuar l\u00ebshimi i tij, sh\u00ebrbimi kalon n\u00eb t\u00eb, nd\u00ebrsa ai gjelb\u00ebr (i vjet\u00ebr) t\u00ebrhiqet:<\/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 (shp\u00ebrndarje kanarie)<\/h3>\n<p>\nShp\u00ebrndarjet kanarie jan\u00eb t\u00eb ngjashme me shp\u00ebrndarjet blu\/gjelb\u00ebr, por menaxhohen m\u00eb mir\u00eb dhe p\u00ebrdorin <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">q\u00ebndrueshm\u00ebri<\/a><\/noindex> n\u00eb m\u00ebnyr\u00ebn e sakt\u00eb. Ky tip p\u00ebrfshin disa strategji t\u00eb ndryshme, duke p\u00ebrfshir\u00eb lan\u00e7ime \"t\u00eb fshehta\" dhe testim A\/B.<\/p>\n<p>Kjo strategji aplikohet kur \u00ebsht\u00eb e nevojshme t\u00eb testoni nj\u00eb funksionalitet t\u00eb ri, zakonisht n\u00eb backend t\u00eb aplikacionit. Thelbi i qasjes \u00ebsht\u00eb t\u00eb krijoni dy servera praktikisht identik\u00eb: nj\u00ebri sh\u00ebrben pothuajse t\u00eb gjith\u00eb p\u00ebrdoruesit, nd\u00ebrsa tjetri, me funksionalitete t\u00eb reja, sh\u00ebrben vet\u00ebm nj\u00eb grup t\u00eb vog\u00ebl p\u00ebrdoruesish, pas s\u00eb cil\u00ebs rezultatet e pun\u00ebs s\u00eb tyre krahason. N\u00ebse gjith\u00e7ka shkon pa gabime, versioni i ri gradualisht implementohet n\u00eb t\u00eb gjith\u00eb infrastruktur\u00ebn.<\/p>\n<p>Megjith\u00ebse kjo strategji mund t\u00eb realizohet ekskluzivisht me mjetet e Kubernetes, z\u00ebvend\u00ebsimi i pod-eve t\u00eb vjetra me t\u00eb reja \u00ebsht\u00eb shum\u00eb m\u00eb e leht\u00eb dhe m\u00eb e p\u00ebrshtatshme duke p\u00ebrdorur nj\u00eb mesh sh\u00ebrbimi si Istio.<\/p>\n<p>P\u00ebr shembull, mund t\u00eb keni dy manifestime t\u00eb ndryshme n\u00eb Git: nj\u00eb t\u00eb zakonsh\u00ebm me tag 0.1.0 dhe nj\u00eb \"kanarin\u00eb\" me tag 0.2.0. Duke ndryshuar peshat n\u00eb manifestin e port\u00ebs virtuale Istio, mund t\u00eb menaxhoni shp\u00ebrndarjen e trafikut midis k\u00ebtyre dy shp\u00ebrndarjeve:<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" src=\"\/wp-content\/uploads\/2019\/11\/d75dc34fea187c4e67879d0f64f9251c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNj\u00eb udh\u00ebzues hap pas hapi p\u00ebr implementimin e kanareve me Istio mund t\u00eb gjendet n\u00eb materialin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-workflows-for-istio-canary-deployments\">GitOps Workflows with Istio<\/a><\/noindex>. <i>(<b>Sh\u00ebn. p\u00ebrkth.<\/b>: Ne gjithashtu p\u00ebrkthyem materialin n\u00eb lidhje me shp\u00ebrndarjet kanar n\u00eb Istio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">k\u00ebtu<\/a><\/noindex>.)<\/i><\/p>\n<h4>Shp\u00ebrndarjet kanar me Weaveworks Flagger<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> lejon menaxhimin e leht\u00eb dhe efektiv t\u00eb kanareve.<\/p>\n<p>Flagger automatizon pun\u00ebn me to. Ai p\u00ebrdor Istio ose AWS App Mesh p\u00ebr t\u00eb drejtuar dhe nd\u00ebrruar trafikun, si dhe metrikat Prometheus p\u00ebr t\u00eb analizuar rezultatet. P\u00ebrve\u00e7 k\u00ebsaj, analiza e shp\u00ebrndarjeve kanar mund t\u00eb plot\u00ebsohet me webhook p\u00ebr kryerjen e testeve t\u00eb pranimit (acceptance), testeve n\u00ebn ngarkes\u00eb dhe \u00e7do lloj kontrolli tjet\u00ebr.<\/p>\n<p>Baze n\u00eb shp\u00ebrndarjen e Kubernetes dhe, n\u00ebse \u00ebsht\u00eb e nevojshme, shkall\u00ebzimin horizontal t\u00eb pod-eve (HPA), Flagger krijon grupe objektesh (shp\u00ebrndarje Kubernetes, sh\u00ebrbime ClusterIP dhe sh\u00ebrbime virtuale Istio ose App Mesh) p\u00ebr t\u00eb kryer analiza dhe realizimin e shp\u00ebrndarjeve kanarin\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" src=\"\/wp-content\/uploads\/2019\/11\/99aa426bbcf59edcb70d5637e32d8ff7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuke realizuar konturin e menaxhimit <i>(control loop)<\/i>, Flagger gradualisht kalon trafikun n\u00eb serverin kanarin\u00eb, duke matur nj\u00ebkoh\u00ebsisht treguesit kryesor\u00eb t\u00eb performanc\u00ebs, si\u00e7 jan\u00eb norma e k\u00ebrkesave HTTP t\u00eb suksesshme, koha mesatare e k\u00ebrkes\u00ebs dhe sh\u00ebndeti i pod-eve. Bazuar n\u00eb analiz\u00ebn e KPI-ve (treguesve kryesor\u00eb t\u00eb performanc\u00ebs), pjesa kanarin\u00eb rritet ose zvog\u00eblohet, dhe rezultatet e analiz\u00ebs publikohen n\u00eb Slack. P\u00ebrshkrimi dhe demonstri i k\u00ebtij procesi mund t\u00eb gjenden n\u00eb material <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=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" src=\"\/wp-content\/uploads\/2019\/11\/f9fa1ba66edecc2b3e971952a318ea40.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Dark (fshehura) ose A\/B-deployments<\/h3>\n<p>\nDeployimi i fshehur \u00ebsht\u00eb nj\u00eb tjet\u00ebr variacion i strategjis\u00eb kanarin (me t\u00eb, Flagger gjithashtu mund t\u00eb punoj\u00eb). Diferenca midis deployimeve t\u00eb fshehura dhe atyre kanarin \u00ebsht\u00eb q\u00eb deployimet e fshehura trajtojn\u00eb frontend-in, jo backend-in, si\u00e7 b\u00ebjn\u00eb deployimet kanarin.<\/p>\n<p>Nj\u00eb em\u00ebr tjet\u00ebr p\u00ebr k\u00ebto deployime \u00ebsht\u00eb A\/B-testimi. N\u00eb vend q\u00eb t\u00eb hapet akses p\u00ebr nj\u00eb ve\u00e7ori t\u00eb re p\u00ebr t\u00eb gjith\u00eb p\u00ebrdoruesit, ajo ofrohet vet\u00ebm p\u00ebr nj\u00eb pjes\u00eb t\u00eb kufizuar t\u00eb tyre. Zakonisht k\u00ebta p\u00ebrdorues nuk e din\u00eb se po veprojn\u00eb si testues pionier\u00eb (k\u00ebtu vjen edhe termi 'deployim i fshehur').<\/p>\n<p>Me ndihm\u00ebn e aktivizuesve t\u00eb funksionalitetit <i>(feature toggles)<\/i> dhe mjeteve t\u00eb tjera \u00ebsht\u00eb e mundur t\u00eb ndiqni se si p\u00ebrdoruesit lidhen me ve\u00e7orin\u00eb e re, a i ngacmon ata, apo e konsiderojn\u00eb nd\u00ebrfaqen e re p\u00ebrdoruesi si t\u00eb nd\u00ebrlikuar, dhe lloje t\u00eb tjera metrikash.<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e shp\u00ebrndarjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (Testimi A\/B)\" src=\"\/wp-content\/uploads\/2019\/11\/037b5ccca2e1d99ac142d2ce734f954d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Flagger dhe A\/B-deployments<\/h4>\n<p>\nP\u00ebrve\u00e7 ruteve t\u00eb bazuara n\u00eb pesh\u00eb, Flagger gjithashtu mund t\u00eb drejtoj\u00eb trafik n\u00eb serverin kanarin n\u00eb var\u00ebsi t\u00eb parametrave HTTP. N\u00eb testimin A\/B, mund t\u00eb p\u00ebrdoren kokat HTTP ose cookie p\u00ebr t\u00eb ridrejtuar nj\u00eb segment t\u00eb caktuar p\u00ebrdoruesish. Kjo \u00ebsht\u00eb ve\u00e7an\u00ebrisht efektive n\u00eb rastet e aplikacioneve frontend q\u00eb k\u00ebrkojn\u00eb lidhjen e sesionit me serverin <i>(session affinity)<\/i>. Informacione t\u00eb tjera mund t\u00eb gjenden n\u00eb dokumentacionin Flagger.<\/p>\n<p><i>Autori shpreh mir\u00ebnjohje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefan Prodan<\/a><\/noindex>, inxhinierit t\u00eb Weaveworks (dhe krijuesit t\u00eb Flagger), p\u00ebr t\u00eb gjith\u00eb k\u00ebto skema t\u00eb mahnitshme t\u00eb deployimit.<\/i><\/p>\n<h2>P.S. nga p\u00ebrkthyesi<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">P\u00ebrmbledhje dhe krahasim i kontrollor\u00ebve Ingress p\u00ebr Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf - mjeti yn\u00eb p\u00ebr CI\/CD n\u00eb Kubernetes (shqyrtim dhe video prezantimi)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Nd\u00ebrtesa dhe deployimi i mikrosh\u00ebrbimeve t\u00eb ngjashme me werf dhe GitLab CI<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">\u00c7far\u00eb \u00ebsht\u00eb GitOps?<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Burimi: <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.1.1 - 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\/sq\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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\udd47Strategjit\u00eb e deployimit n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testimi) | ProHoster","description":"Sh\u00ebn.","canonical_url":"https:\/\/prohoster.info\/sq\/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":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/52688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=52688"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/52688\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=52688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=52688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=52688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}