{"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\/ro\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","title":{"rendered":"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Not\u0103 de traducere:<\/b> Acest material de revizuire de la Weaveworks introduce cele mai populare strategii de desf\u0103\u0219urare a aplica\u021biilor \u0219i discut\u0103 despre posibilitatea implement\u0103rii celor mai avansate dintre ele cu ajutorul operatorului Kubernetes Flagger. Este scris \u00eentr-un limbaj simplu \u0219i con\u021bine diagrame vizuale, care ajut\u0103 chiar \u0219i inginerii \u00eencep\u0103tori s\u0103 \u00een\u021beleag\u0103 subiectul.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" src=\"\/wp-content\/uploads\/2019\/11\/8d32d63c9986e9f5b35ccca74a546d42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Diagrama este preluat\u0103 din <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">o alt\u0103 revizuire<\/a><\/noindex> a strategiilor de desf\u0103\u0219urare realizat\u0103 de Container Solutions<\/i><\/p>\n<p>Una dintre cele mai mari provoc\u0103ri \u00een dezvoltarea aplica\u021biilor cloud-native de ast\u0103zi este accelerarea desf\u0103\u0219ur\u0103rii. Utiliz\u00e2nd abordarea microservicii, dezvoltatorii lucreaz\u0103 deja cu aplica\u021bii complet modulare \u0219i le proiecteaz\u0103 astfel \u00eenc\u00e2t diferite echipe s\u0103 poat\u0103 scrie cod \u0219i s\u0103 fac\u0103 modific\u0103ri \u00een aplica\u021bie simultan.<\/p>\n<p>Desf\u0103\u0219ur\u0103rile mai scurte \u0219i mai frecvente au urm\u0103toarele avantaje:<\/p>\n<ul>\n<li> Timpul de intrare pe pia\u021b\u0103 se reduce.<\/li>\n<li> Noile func\u021bionalit\u0103\u021bi ajung mai repede la utilizatori.<\/li>\n<li> Feedback-ul utilizatorilor ajunge mai repede la echipa de dezvoltare. Aceasta \u00eenseamn\u0103 c\u0103 echipa poate ad\u0103uga func\u021bii \u0219i corecta problemele mai rapid.<\/li>\n<li> Moralul dezvoltatorilor cre\u0219te: cu mai multe func\u021bionalit\u0103\u021bi \u00een dezvoltare, este mai interesant s\u0103 lucrezi.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDar, pe m\u0103sur\u0103 ce frecven\u021ba lans\u0103rilor cre\u0219te, de asemenea, cresc \u0219ansele de a afecta negativ fiabilitatea aplica\u021biei sau experien\u021ba utilizatorului. De aceea, echipelor de operare \u0219i DevOps le este important s\u0103 construiasc\u0103 procese \u0219i s\u0103 gestioneze strategiile de desf\u0103\u0219urare astfel \u00eenc\u00e2t s\u0103 minimizeze riscurile pentru produs \u0219i utilizatori. (Afl\u0103 mai multe despre automatizarea pipeline-ului CI\/CD <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/assets\/images\/blta8084030436bce24\/CICD_eBook_Web.pdf\">aici<\/a><\/noindex>.)<\/p>\n<p>\u00cen aceast\u0103 publica\u021bie, vom discuta despre diferite strategii de desf\u0103\u0219urare \u00een Kubernetes, inclusiv desf\u0103\u0219ur\u0103rile rolling \u0219i metode mai avansate, cum ar fi desf\u0103\u0219ur\u0103rile canary \u0219i variantele acestora.<\/p>\n<h2>Strategii de deployment<\/h2>\n<p>\nExist\u0103 mai multe tipuri diferite de strategii de desf\u0103\u0219urare pe care le pute\u021bi utiliza \u00een func\u021bie de obiectiv. De exemplu, poate fi necesar s\u0103 face\u021bi modific\u0103ri \u00eentr-un anumit mediu pentru teste ulterioare, sau pentru un subset de utilizatori\/clien\u021bi, sau poate fi nevoie s\u0103 efectua\u021bi teste limitate pe utilizatori \u00eenainte de a face o func\u021bionalitate <i>public\u0103<\/i>.<\/p>\n<h3>Rolling (desf\u0103\u0219urare gradual\u0103, \u201ecircular\u0103\u201d)<\/h3>\n<p>\nAceasta este strategia standard de desf\u0103\u0219urare \u00een Kubernetes. Ea \u00eenlocuie\u0219te treptat, c\u00e2te unul, pod-urile cu o versiune veche a aplica\u021biei cu pod-uri cu o versiune nou\u0103 \u2014 f\u0103r\u0103 a provoca timp de nefunc\u021bionare pentru cluster.<\/p>\n<p><img decoding=\"async\" alt=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" src=\"\/wp-content\/uploads\/2019\/11\/cbd490f1ef8311ff4c242726e947248c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKubernetes a\u0219teapt\u0103 ca noile pod-uri s\u0103 devin\u0103 func\u021bionale (verific\u00e2ndu-le cu ajutorul <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">teste de disponibilitate<\/a><\/noindex>), \u00eenainte de a \u00eencepe s\u0103 \u00eenchid\u0103 vechile. Dac\u0103 apare o problem\u0103, o actualizare de tip rolling poate fi oprit\u0103 f\u0103r\u0103 a opri \u00eentregul cluster. \u00cen fi\u0219ierul YAML care descrie tipul de desf\u0103\u0219urare, noua imagine \u00eel \u00eenlocuie\u0219te pe cea veche:<\/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>\nParametrii actualiz\u0103rii rulante pot fi clarifica\u021bi \u00een fi\u0219ierul manifest:<\/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 (recrea\u021bie)<\/h3>\n<p>\n\u00cen acest tip simplu de desf\u0103\u0219urare, vechile pod-uri sunt distruse toate deodat\u0103 \u0219i \u00eenlocuite cu altele noi:<\/p>\n<p><img decoding=\"async\" alt=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" src=\"\/wp-content\/uploads\/2019\/11\/46168e36b7f44c76bcea40ab3a1a2cad.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nManifestul corespunz\u0103tor arat\u0103 aproximativ astfel:<\/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 (implement\u0103ri albastre\/verde)<\/h3>\n<p>\nStrategia de implementare albastr\u0103-verde (uneori numit\u0103 \u0219i ro\u0219ie\/neagr\u0103) prevede implementarea simultan\u0103 a versiunii vechi (verzi) \u0219i a versiunii noi (albastre) a aplica\u021biei. Dup\u0103 ce ambele versiuni sunt disponibile, utilizatorii obi\u0219nui\u021bi au acces la cea verde, \u00een timp ce versiunea albastr\u0103 este disponibil\u0103 echipei QA pentru testare automat\u0103 printr-un serviciu separat sau prin redirec\u021bionare direct\u0103 a porturilor:<\/p>\n<p><img decoding=\"async\" alt=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" 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>\nDup\u0103 ce versiunea albastr\u0103 (nou\u0103) a fost testat\u0103 \u0219i lansarea sa a fost aprobat\u0103, serviciul este comutat pe ea, iar versiunea verde (veche) este dezactivat\u0103:<\/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 (implement\u0103ri canar)<\/h3>\n<p>\nImplement\u0103rile canar sunt asem\u0103n\u0103toare cu cele albastre\/verzi, dar sunt gestionate mai bine \u0219i utilizeaz\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">o abordare progresiv\u0103<\/a><\/noindex> pas cu pas. Acest tip include mai multe strategii diferite, inclusiv lans\u0103ri \u201eascunse\u201d \u0219i teste A\/B.<\/p>\n<p>Aceast\u0103 strategie se aplic\u0103 atunci c\u00e2nd este necesar s\u0103 se testeze o anumit\u0103 func\u021bionalitate nou\u0103, de obicei, \u00een backend-ul aplica\u021biei. Esen\u021ba abord\u0103rii const\u0103 \u00een a crea dou\u0103 servere practic identice: unul care serve\u0219te aproape to\u021bi utilizatorii, iar cel\u0103lalt, cu func\u021bionalit\u0103\u021bi noi, care serve\u0219te doar un mic subgroup de utilizatori, dup\u0103 care rezultatele func\u021bion\u0103rii lor sunt comparate. Dac\u0103 totul decurge f\u0103r\u0103 erori, noua versiune este implementat\u0103 treptat \u00een \u00eentreaga infrastructur\u0103.<\/p>\n<p>De\u0219i aceast\u0103 strategie poate fi implementat\u0103 exclusiv prin intermediul Kubernetes, \u00eenlocuind vechile pod-uri cu altele noi, este mult mai convenabil \u0219i simplu s\u0103 folose\u0219ti un service mesh precum Istio.<\/p>\n<p>De exemplu, s-ar putea s\u0103 ave\u021bi dou\u0103 manifesturi diferite \u00een Git: unul obi\u0219nuit cu eticheta 0.1.0 \u0219i unul \"canary\" cu eticheta 0.2.0. Schimb\u00e2nd greut\u0103\u021bile \u00een manifestul gateway-ului virtual Istio, pute\u021bi controla distribu\u021bia traficului \u00eentre aceste dou\u0103 desf\u0103\u0219ur\u0103ri:<\/p>\n<p><img decoding=\"async\" alt=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" src=\"\/wp-content\/uploads\/2019\/11\/d75dc34fea187c4e67879d0f64f9251c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn ghid pas cu pas pentru implementarea deployment-urilor canar cu Istio poate fi g\u0103sit \u00een materialul <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-workflows-for-istio-canary-deployments\">GitOps Workflows with Istio<\/a><\/noindex>. <i>(<b>Nota traduc\u0103torului.<\/b>: De asemenea, am tradus materialul despre deployment-urile canar \u00een Istio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">aici<\/a><\/noindex>.)<\/i><\/p>\n<h4>Deployment-uri canar cu Weaveworks Flagger<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> permite gestionarea u\u0219oar\u0103 \u0219i eficient\u0103 a deployment-urilor canar.<\/p>\n<p>Flagger automatizeaz\u0103 gestionarea acestora. Folose\u0219te Istio sau AWS App Mesh pentru rutare \u0219i comutare a traficului, precum \u0219i metrici Prometheus pentru analizarea rezultatelor. \u00cen plus, analiza deployment-urilor canar poate fi completat\u0103 cu webhook-uri pentru desf\u0103\u0219urarea testelor de acceptare, teste de \u00eenc\u0103rcare \u0219i orice alte tipuri de verific\u0103ri.<\/p>\n<p>Pe baza desf\u0103\u0219ur\u0103rii Kubernetes \u0219i, dac\u0103 este necesar, a scal\u0103rii orizontale a pod-urilor (HPA), Flagger creeaz\u0103 seturi de obiecte (desf\u0103\u0219ur\u0103ri Kubernetes, servicii ClusterIP \u0219i servicii virtuale Istio sau App Mesh) pentru a efectua analize \u0219i a implementa desf\u0103\u0219ur\u0103ri canary:<\/p>\n<p><img decoding=\"async\" alt=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" src=\"\/wp-content\/uploads\/2019\/11\/99aa426bbcf59edcb70d5637e32d8ff7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nImplement\u00e2nd un ciclu de control <i>(control loop)<\/i>, Flagger comut\u0103 treptat traficul c\u0103tre serverul canary, \u00een timp ce m\u0103soar\u0103 indicatorii de performan\u021b\u0103, cum ar fi rata cererilor HTTP reu\u0219ite, durata medie a cererilor \u0219i s\u0103n\u0103tatea pod-urilor. Pe baza analizei KPI (indicatorilor cheie de performan\u021b\u0103), partea canary fie cre\u0219te, fie se \u00eenchide, iar rezultatele analizei sunt publicate \u00een Slack. O descriere \u0219i o demonstra\u021bie a acestui proces pot fi g\u0103site \u00een 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=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" src=\"\/wp-content\/uploads\/2019\/11\/f9fa1ba66edecc2b3e971952a318ea40.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>\u00centrebare (ascunse) sau desf\u0103\u0219ur\u0103ri A\/B<\/h3>\n<p>\nDesf\u0103\u0219urarea ascuns\u0103 este o alt\u0103 varia\u021bie a strategiei canar \u0219i, de altfel, Flagger poate func\u021biona \u0219i cu aceasta. Diferen\u021ba dintre desf\u0103\u0219ur\u0103rile ascunse \u0219i cele canar const\u0103 \u00een faptul c\u0103 desf\u0103\u0219ur\u0103rile ascunse se ocup\u0103 de front-end, nu de back-end, ca \u00een cazul celor canar.<\/p>\n<p>Un alt nume pentru aceste desf\u0103\u0219ur\u0103ri este testarea A\/B. \u00cen loc s\u0103 fac\u0103 o nou\u0103 func\u021bie disponibil\u0103 tuturor utilizatorilor, aceasta este oferit\u0103 doar unei p\u0103r\u021bi restr\u00e2nse dintre ace\u0219tia. De obicei, ace\u0219ti utilizatori nu \u0219tiu c\u0103 sunt testeri pionieri (de aici \u0219i termenul \u201edesf\u0103\u0219urare ascuns\u0103\u201d).<\/p>\n<p>Cu ajutorul comutatoarelor de func\u021bionalitate <i>(feature toggles)<\/i> \u0219i a altor instrumente, se poate observa cum interac\u021bioneaz\u0103 utilizatorii cu noua func\u021bie, dac\u0103 aceasta \u00eei atrage sau dac\u0103 consider\u0103 c\u0103 noul interfa\u021b\u0103 utilizator este confuz\u0103, \u0219i alte tipuri de metrici.<\/p>\n<p><img decoding=\"async\" alt=\"Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B-testing)\" src=\"\/wp-content\/uploads\/2019\/11\/037b5ccca2e1d99ac142d2ce734f954d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Flagger \u0219i desf\u0103\u0219ur\u0103rile A\/B<\/h4>\n<p>\n\u00cen afar\u0103 de rutarea pe baza greut\u0103\u021bii, Flagger poate \u00eendrepta, de asemenea, traficul c\u0103tre serverul canar \u00een func\u021bie de parametrii HTTP. \u00cen cadrul test\u0103rii A\/B, se pot folosi anteturi HTTP sau cookie-uri pentru a redirec\u021biona un segment specific de utilizatori. Acest lucru este deosebit de eficient \u00een cazul aplica\u021biilor front-end care necesit\u0103 afinitate de sesiune cu serverul <i>(session affinity)<\/i>. Mai multe informa\u021bii pot fi g\u0103site \u00een documenta\u021bia Flagger.<\/p>\n<p><i>Autorul \u00ee\u0219i exprim\u0103 recuno\u0219tin\u021ba <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefan Prodan<\/a><\/noindex>, inginer la Weaveworks (\u0219i creatorul Flagger), pentru toate aceste scheme uimitoare de desf\u0103\u0219urare.<\/i><\/p>\n<h2>P.S. de la traduc\u0103tor<\/h2>\n<p>\nCiti\u021bi \u0219i \u00een blogul nostru:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">Prezentare general\u0103 \u0219i compara\u021bie a controlerelor Ingress pentru Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 our tool for CI\/CD in Kubernetes (overview and presentation video)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Compilarea \u0219i implementarea microserviciilor asem\u0103n\u0103toare cu werf \u0219i GitLab CI<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">Ce este GitOps?<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Sursa: <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\/ro\/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=\"ro_RO\" \/>\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\/ro\/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\udd47Strategii de desf\u0103\u0219urare \u00een Kubernetes: rolling, recreate, blue\/green, canary, dark (testare A\/B) | ProHoster","description":"Not\u0103.","canonical_url":"https:\/\/prohoster.info\/ro\/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":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/52688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=52688"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/52688\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=52688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=52688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=52688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}