{"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 vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Sh\u00ebnim:<\/b> Ky material rreth p\u00ebrmbledhjes nga Weaveworks njihet me strategjit\u00eb m\u00eb t\u00eb njohura t\u00eb shp\u00ebrndarjes s\u00eb aplikacioneve dhe p\u00ebrshkruan mund\u00ebsin\u00eb e implementimit t\u00eb disa prej tyre 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 skema visive q\u00eb e lejojn\u00eb t\u00eb kuptohet edhe nga inxhinier\u00ebt fillestar\u00eb.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" src=\"\/wp-content\/uploads\/2019\/11\/8d32d63c9986e9f5b35ccca74a546d42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Schema \u00ebsht\u00eb marr\u00eb nga <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">nj\u00eb p\u00ebrmbledhje tjet\u00ebr<\/a><\/noindex> e strategjive t\u00eb shp\u00ebrndarjes, e 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 deploy-it. Me qasjen mikrosh\u00ebrbimesh, zhvilluesit tashm\u00eb punojn\u00eb me aplikacione krejt\u00ebsisht modulare dhe i projektuan ato, duke lejuar q\u00eb ekipe t\u00eb ndryshme t\u00eb shkruajn\u00eb kod dhe t\u00eb b\u00ebjn\u00eb ndryshime n\u00eb aplikacion nj\u00ebkoh\u00ebsisht.<\/p>\n<p>Deploy-et 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> Reagimet e p\u00ebrdoruesve arrijn\u00eb m\u00eb shpejt te ekipi i zhvilluesve. Kjo do t\u00eb thot\u00eb se ekipi mund t\u00eb shtoj\u00eb funksione dhe t\u00eb rregulloj\u00eb problemet m\u00eb shpejt.<\/li>\n<li> Moralit\u00eb e zhvilluesve rriten: me m\u00eb shum\u00eb funksionalitete, \u00ebsht\u00eb m\u00eb interesante t\u00eb punosh n\u00eb zhvillim.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPor me rritjen e frekuenc\u00ebs s\u00eb l\u00ebshimeve, rriten gjithashtu shanset q\u00eb t\u00eb ndikoj\u00eb negativisht n\u00eb besueshm\u00ebrin\u00eb e aplikacionit ose n\u00eb p\u00ebrvoj\u00ebn e p\u00ebrdoruesit. Pik\u00ebrisht p\u00ebr k\u00ebt\u00eb arsye, ekipet e operacioneve dhe DevOps \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 CI\/CD pipeline) <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 publikim ne do t\u00eb diskutojm\u00eb strategjit\u00eb e ndryshme t\u00eb shp\u00ebrndarjes n\u00eb Kubernetes, duke p\u00ebrfshir\u00eb shp\u00ebrndarjet e rolling dhe metoda m\u00eb t\u00eb avancuara si\u00e7 jan\u00eb l\u00ebshimet canary dhe variacionet e tyre.<\/p>\n<h2>Strategjit\u00eb e shp\u00ebrndarjes<\/h2>\n<p>\nKa disa lloje t\u00eb ndryshme strategjish t\u00eb shp\u00ebrndarjes q\u00eb mund t\u00eb p\u00ebrdoren n\u00eb var\u00ebsi t\u00eb q\u00ebllimit. P\u00ebr shembull, mund t\u00eb keni nevoj\u00eb t\u00eb b\u00ebni ndryshime n\u00eb nj\u00eb ambient p\u00ebr testim t\u00eb m\u00ebtejsh\u00ebm, ose p\u00ebr nj\u00eb n\u00ebnmbledhje p\u00ebrdoruesish\/klient\u00ebsh, ose mund t\u00eb ket\u00eb nevoj\u00eb p\u00ebr t\u00eb kryer nj\u00eb testim t\u00eb kufizuar n\u00eb p\u00ebrdorues para se t\u00eb b\u00ebni nj\u00eb ve\u00e7ori <i>publike<\/i>.<\/p>\n<h3>Rolling (derdh\u00ebn\u00ebs, \"n\u00eb rritje\")<\/h3>\n<p>\nKjo \u00ebsht\u00eb nj\u00eb strategji standarde e implementimit n\u00eb Kubernetes. Ajo me ngadal\u00eb, nj\u00eb p\u00ebr nj\u00eb, z\u00ebvend\u00ebson pod-et me versionin e vjet\u00ebr t\u00eb aplikacionit me pod-et q\u00eb kan\u00eb versionin e ri - pa ndalimin e grumbullit.<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" 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 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">teste t\u00eb gatishm\u00ebris\u00eb<\/a><\/noindex>), para se t\u00eb filloj\u00eb procesin e mbylljes s\u00eb t\u00eb vjetrave. N\u00ebse ndodh nj\u00eb problem, nj\u00eb p\u00ebrdit\u00ebsim i till\u00eb i implementuar mund t\u00eb nd\u00ebrpritet pa ndaluar t\u00ebr\u00eb grumbullin. N\u00eb skedarin YAML p\u00ebr t\u00eb p\u00ebrshkruar tipin e implementimit, 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>\nParametrat e p\u00ebrdit\u00ebsimit t\u00eb rritjes mund t\u00eb sakt\u00ebsohen n\u00eb skedarin e manifest\u00ebs:<\/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 (rikrijim)<\/h3>\n<p>\nN\u00eb k\u00ebt\u00eb tip m\u00eb t\u00eb thjesht\u00eb t\u00eb implementimit, pod-et e vjet\u00ebr vriten t\u00eb gjitha nj\u00ebher\u00ebsh dhe z\u00ebvend\u00ebsohen me t\u00eb reja:<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" src=\"\/wp-content\/uploads\/2019\/11\/46168e36b7f44c76bcea40ab3a1a2cad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nManifesti p\u00ebrkat\u00ebs duket k\u00ebshtu:<\/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 (implementime blu\/jeshile)<\/h3>\n<p>\nStrategjia e shp\u00ebrndarjes blu-jeshile (e njohur ndonj\u00ebher\u00eb si e kuqe\/e zez\u00eb) parashikon shp\u00ebrndarjen e p\u00ebrbashk\u00ebt t\u00eb versioneve t\u00eb vjetra (jeshile) dhe t\u00eb reja (blu) t\u00eb aplikacionit. Pasi t\u00eb dy versionet t\u00eb jen\u00eb vendosur, p\u00ebrdoruesit e zakonsh\u00ebm kan\u00eb qasje n\u00eb versionin jeshil, nd\u00ebrsa versioni blu \u00ebsht\u00eb n\u00eb dispozicion p\u00ebr ekipin e QA p\u00ebr automatizimin e testeve p\u00ebrmes nj\u00eb sh\u00ebrbimi t\u00eb ve\u00e7ant\u00eb ose nj\u00eb kalimi t\u00eb drejtp\u00ebrdrejt\u00eb t\u00eb porteve:<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" 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 versioni blu (i ri) t\u00eb jet\u00eb testuar dhe t\u00eb jet\u00eb miratuar p\u00ebr publikim, sh\u00ebrbimi kalon n\u00eb t\u00eb, nd\u00ebrsa versioni jeshil (i vjet\u00ebr) nd\u00ebrpritet:<\/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\u00ebrndarjet kanarie)<\/h3>\n<p>\nShp\u00ebrndarjet kanarie jan\u00eb t\u00eb ngjashme me ato blu-jeshile, por menaxhohen m\u00eb mir\u00eb dhe p\u00ebrdorin <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">qasjen progresive<\/a><\/noindex> me faza. Ky tip p\u00ebrfshin disa strategji t\u00eb ndryshme, p\u00ebrfshir\u00eb lansimet \"e fshehta\" dhe testimin A\/B.<\/p>\n<p>Kjo strategji aplikohet kur \u00ebsht\u00eb e nevojshme t\u00eb provoni ndonj\u00eb funksionalitet t\u00eb ri, zakonisht n\u00eb backend-in e aplikacionit. Thelbi i qasjes \u00ebsht\u00eb t\u00eb krijoni dy server\u00eb praktikisht identik\u00eb: nj\u00ebri sh\u00ebrben p\u00ebr pothuajse t\u00eb gjith\u00eb p\u00ebrdoruesit, nd\u00ebrsa tjetri, me funksionalitete t\u00eb reja, sh\u00ebrben vet\u00ebm nj\u00eb n\u00ebn-grup t\u00eb vog\u00ebl p\u00ebrdoruesish, pas s\u00eb cil\u00ebs rezultatet e pun\u00ebsit krahasohen. N\u00ebse gjith\u00e7ka shkon pa probleme, versioni i ri ngadal\u00eb lancohet n\u00eb t\u00eb gjith\u00eb infrastruktur\u00ebn.<\/p>\n<p>Nd\u00ebrsa kjo strategji mund t\u00eb realizohet ekskluzivisht me mjetet e Kubernetes, \u00ebsht\u00eb shum\u00eb m\u00eb e leht\u00eb dhe m\u00eb e p\u00ebrshtatshme t\u00eb p\u00ebrdoret nj\u00eb rrjet sh\u00ebrbimesh si Istio.<\/p>\n<p>P\u00ebr shembull, mund t\u00eb keni dy manifeste t\u00eb ndryshme n\u00eb Git: nj\u00eb t\u00eb zakonsh\u00ebm me etiket\u00ebn 0.1.0 dhe nj\u00eb \"kanarin\u00eb\" me etiket\u00ebn 0.2.0. Duke nd\u00ebrruar pesat n\u00eb manifestin e port\u00ebs virtuale Istio, mund t\u00eb menaxhoni shp\u00ebrndarjen e trafikut midis k\u00ebtyre dy implementimeve:<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" 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 realizimin e kanar\u00ebve me an\u00eb t\u00eb 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\u00ebrk.<\/b>: Ne gjithashtu kemi p\u00ebrkthyer materialin n\u00eb lidhje me lancimet 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>Kanar\u00eb t\u00eb lancimeve me Weaveworks Flagger<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> lejon q\u00eb lejon menaxhimin e leht\u00eb dhe efikas t\u00eb lan\u00e7imeve kanariesh.<\/p>\n<p>Flagger automatizon pun\u00ebn me k\u00ebto. Ai p\u00ebrdor Istio ose AWS App Mesh p\u00ebr t\u00eb dirigjuar dhe anashkaluar trafikun, si dhe metrikat Prometheus p\u00ebr t\u00eb analizuar rezultatet. P\u00ebr m\u00eb tep\u00ebr, analiza e lan\u00e7imeve kanariet mund t\u00eb plot\u00ebsohet me webhooks p\u00ebr t\u00eb kryer testet e pranimit, teste ngarkese dhe \u00e7do lloj kontrolli tjet\u00ebr.<\/p>\n<p>Bazuar n\u00eb implementimin e Kubernetes dhe, n\u00ebse \u00ebsht\u00eb e nevojshme, n\u00eb skalimin horizontal t\u00eb pod-eve (HPA), Flagger krijon grupe objektesh (implementimet e Kubernetes, sh\u00ebrbimet ClusterIP dhe sh\u00ebrbimet virtuale Istio ose App Mesh) p\u00ebr t\u00eb kryer analiza dhe p\u00ebr t\u00eb realizuar implementimet kanar.<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" src=\"\/wp-content\/uploads\/2019\/11\/99aa426bbcf59edcb70d5637e32d8ff7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDuke realizuar konturin e menaxhimit <i>(grupi i kontrollit)<\/i>, Flagger gradualisht kalon trafikun n\u00eb serverin kanar, duke matur gjithashtu metricat kryesore t\u00eb performanc\u00ebs, si shkalla 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 (metricave ky\u00e7e t\u00eb performanc\u00ebs), pjesa kanar rritet ose zvog\u00eblohet dhe rezultatet e analiz\u00ebs publikohen n\u00eb Slack. P\u00ebrshkrimi dhe demonstrimi i k\u00ebtij procesi mund t\u00eb gjenden n\u00eb materialin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/progressive-delivery-for-aws-app-mesh\">D\u00ebrgimi Progresiv p\u00ebr App Mesh<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" src=\"\/wp-content\/uploads\/2019\/11\/f9fa1ba66edecc2b3e971952a318ea40.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Er\u00eb (t\u00eb fshehta) ose A\/B-distribuime<\/h3>\n<p>\nDistribuimi i fsheht\u00eb \u00ebsht\u00eb nj\u00eb variacion tjet\u00ebr i strategjis\u00eb kanarin. Ndryshimi midis nj\u00eb distribucimi t\u00eb fsheht\u00eb dhe nj\u00eb kanarine \u00ebsht\u00eb se distribuitet e fshehta merret me frontend-in dhe jo me backend-in, si\u00e7 jan\u00eb ato kanarin.<\/p>\n<p>Nj\u00eb em\u00ebr tjet\u00ebr p\u00ebr k\u00ebto distribucione \u00ebsht\u00eb testimi A\/B. N\u00eb vend q\u00eb t\u00eb ofrohet nj\u00eb ve\u00e7ori e re p\u00ebr t\u00eb gjith\u00eb p\u00ebrdoruesit, ajo ofrohet vet\u00ebm p\u00ebr nj\u00eb grup t\u00eb kufizuar. Zakonisht, k\u00ebta p\u00ebrdorues nuk e din\u00eb se jan\u00eb testues t\u00eb hersh\u00ebm (prandaj termi 'distribuim i fsheht\u00eb').<\/p>\n<p>Me an\u00eb t\u00eb nd\u00ebrruesve t\u00eb funksionalitetit <i>(feature toggles)<\/i> dhe mjeteve t\u00eb tjera mund t\u00eb ndjekim se si p\u00ebrdoruesit nd\u00ebrveprojn\u00eb me ve\u00e7orin\u00eb e re, n\u00ebse ajo i angazhon ata apo n\u00ebse ata e konsiderojn\u00eb nd\u00ebrfaqen e re t\u00eb p\u00ebrdoruesit si t\u00eb komplikuar, dhe metrika t\u00eb tjera.<\/p>\n<p><img decoding=\"async\" alt=\"Strategjit\u00eb e vendosjes n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testim)\" src=\"\/wp-content\/uploads\/2019\/11\/037b5ccca2e1d99ac142d2ce734f954d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Flagger dhe A\/B-distribuime<\/h4>\n<p>\nP\u00ebrve\u00e7 rutes s\u00eb pesho\u00adrave, Flagger mund t\u00eb drejtoj\u00eb gjithashtu trafik n\u00eb serverin kanarin\u00eb n\u00eb var\u00ebsi t\u00eb parametrave HTTP. Gjat\u00eb testimit A\/B, mund t\u00eb p\u00ebrdoren headers HTTP ose cookie p\u00ebr t\u00eb redirigjuar nj\u00eb segment t\u00eb caktuar t\u00eb p\u00ebrdoruesve. Kjo \u00ebsht\u00eb ve\u00e7an\u00ebrisht efektive n\u00eb rastet e aplikacioneve frontend q\u00eb k\u00ebrkojn\u00eb afinitet seance me serverin <i>(afiniteti me seanc\u00ebn)<\/i>. Informacione t\u00eb m\u00ebtejshme mund t\u00eb gjenden n\u00eb dokumentacionin e Flagger.<\/p>\n<p><i>Autori shpreh fal\u00ebnderim <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefan Prodan<\/a><\/noindex>, inxhinier i Weaveworks (dhe krijuesi i Flagger), p\u00ebr t\u00eb gjitha k\u00ebto skema t\u00eb mrekullueshme t\u00eb implementimit.<\/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\/\">Pasqyr\u00eb dhe krahasim i kontrolluesve 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 \u2014 mjeti yn\u00eb p\u00ebr CI\/CD n\u00eb Kubernetes (p\u00ebrmbledhje dhe video k\u00ebrkese)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Nd\u00ebrtimi dhe implementimi i mikrosherbimeve 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.0.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.0.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 implementimit n\u00eb Kubernetes: rolling, recreate, blue\/green, canary, dark (testimi A\/B) | ProHoster","description":"Sh\u00ebnim.","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}]}}