{"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\/pt\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","title":{"rendered":"Estrat\u00e9gias de implanta\u00e7\u00e3o no Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B testing)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota de tradu\u00e7\u00e3o:<\/b> Este material de revis\u00e3o da Weaveworks apresenta as estrat\u00e9gias de lan\u00e7amento de aplicativos mais populares e discute a possibilidade de implementar as mais avan\u00e7adas delas usando o operador Kubernetes Flagger. Ele \u00e9 escrito de forma simples e cont\u00e9m diagramas ilustrativos que ajudam at\u00e9 mesmo os engenheiros iniciantes a entenderem o assunto.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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>O diagrama foi retirado de <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">outra revis\u00e3o<\/a><\/noindex> das estrat\u00e9gias de lan\u00e7amento, feita na Container Solutions<\/i><\/p>\n<p>Um dos maiores desafios no desenvolvimento de aplicativos cloud native hoje \u00e9 acelerar a implanta\u00e7\u00e3o. Com a abordagem de microsservi\u00e7os, os desenvolvedores j\u00e1 trabalham com aplicativos totalmente modulares e os projetam, permitindo que diferentes equipes escrevam c\u00f3digo e fa\u00e7am altera\u00e7\u00f5es no aplicativo simultaneamente.<\/p>\n<p>Implanta\u00e7\u00f5es mais curtas e frequentes t\u00eam as seguintes vantagens:<\/p>\n<ul>\n<li> O tempo de lan\u00e7amento no mercado \u00e9 reduzido.<\/li>\n<li> Novas funcionalidades chegam mais r\u00e1pido aos usu\u00e1rios.<\/li>\n<li> O feedback dos usu\u00e1rios chega mais rapidamente \u00e0 equipe de desenvolvimento. Isso significa que a equipe pode adicionar funcionalidades e corrigir problemas de forma mais \u00e1gil.<\/li>\n<li> O moral dos desenvolvedores aumenta: trabalhar com mais funcionalidades em desenvolvimento torna o trabalho mais interessante.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMas, com o aumento da frequ\u00eancia de lan\u00e7amentos, tamb\u00e9m crescem as chances de impactar negativamente a confiabilidade do aplicativo ou a experi\u00eancia do usu\u00e1rio. Por isso, \u00e9 importante que as equipes de opera\u00e7\u00f5es e DevOps construam processos e gerenciem estrat\u00e9gias de implanta\u00e7\u00e3o de maneira a minimizar os riscos para o produto e os usu\u00e1rios. (Saiba mais sobre a automa\u00e7\u00e3o do pipeline CI\/CD) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/assets\/images\/blta8084030436bce24\/CICD_eBook_Web.pdf\">aqui<\/a><\/noindex>.)<\/p>\n<p>Neste artigo, discutiremos diversas estrat\u00e9gias de implanta\u00e7\u00e3o no Kubernetes, incluindo implanta\u00e7\u00f5es rolling e m\u00e9todos mais avan\u00e7ados, como implanta\u00e7\u00f5es can\u00e1rias e suas variantes.<\/p>\n<h2>Estrat\u00e9gias de deploy<\/h2>\n<p>\nExistem v\u00e1rios tipos diferentes de estrat\u00e9gias de implanta\u00e7\u00e3o que podem ser utilizadas, dependendo do objetivo. Por exemplo, voc\u00ea pode precisar fazer altera\u00e7\u00f5es em um determinado ambiente para testes, ou em um subconjunto de usu\u00e1rios\/clientes, ou pode ser necess\u00e1rio realizar testes limitados com os usu\u00e1rios antes de tornar uma funcionalidade <i>p\u00fablica<\/i>.<\/p>\n<h3>Rolling (implanta\u00e7\u00e3o gradual)<\/h3>\n<p>\nEsta \u00e9 uma estrat\u00e9gia padr\u00e3o de implanta\u00e7\u00e3o no Kubernetes. Ela substitui gradualmente, uma a uma, as pods com a vers\u00e3o antiga do aplicativo por pods com a nova vers\u00e3o \u2014 sem causar downtime no cluster.<\/p>\n<p><img decoding=\"async\" alt=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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 \/>\nO Kubernetes aguarda a prontid\u00e3o das novas pods para opera\u00e7\u00e3o (verificando-as com <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">testes de prontid\u00e3o<\/a><\/noindex>), antes de come\u00e7ar a desativar as antigas. Se um problema ocorrer, essa atualiza\u00e7\u00e3o roll-out pode ser interrompida sem parar todo o cluster. No arquivo YAML que descreve o tipo de deployment, a nova imagem substitui a antiga:<\/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>\nOs par\u00e2metros da atualiza\u00e7\u00e3o em camadas podem ser definidos no arquivo de manifesto:<\/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 (recria\u00e7\u00e3o)<\/h3>\n<p>\nNeste tipo mais simples de implanta\u00e7\u00e3o, as pods antigas s\u00e3o encerradas todas de uma vez e substitu\u00eddas por novas:<\/p>\n<p><img decoding=\"async\" alt=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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 \/>\nO manifesto correspondente se parece com isto:<\/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 (implanta\u00e7\u00e3o azul\/vermelha)<\/h3>\n<p>\nA estrat\u00e9gia de implanta\u00e7\u00e3o azul\/verde (\u00e0s vezes tamb\u00e9m chamada de vermelho\/preto) prev\u00ea a implanta\u00e7\u00e3o simult\u00e2nea das vers\u00f5es antiga (verde) e nova (azul) do aplicativo. Ap\u00f3s o deploy de ambas as vers\u00f5es, os usu\u00e1rios comuns t\u00eam acesso \u00e0 vers\u00e3o verde, enquanto a azul est\u00e1 dispon\u00edvel para a equipe de QA para automa\u00e7\u00e3o de testes atrav\u00e9s de um servi\u00e7o separado ou encaminhamento direto de portas:<\/p>\n<p><img decoding=\"async\" alt=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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>\nDepois que a vers\u00e3o azul (nova) foi testada e seu lan\u00e7amento foi aprovado, o servi\u00e7o \u00e9 alternado para ela, e a verde (antiga) \u00e9 desativada:<\/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 (implanta\u00e7\u00e3o can\u00e1rio)<\/h3>\n<p>\nImplanta\u00e7\u00f5es can\u00e1rias s\u00e3o semelhantes \u00e0s azul\/verdes, mas s\u00e3o melhor gerenciadas e utilizam <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">uma abordagem progressiva<\/a><\/noindex> fases. Este tipo abrange v\u00e1rias estrat\u00e9gias diferentes, incluindo lan\u00e7amentos \"escondidos\" e testes A\/B.<\/p>\n<p>Esta estrat\u00e9gia \u00e9 aplicada quando \u00e9 necess\u00e1rio testar uma nova funcionalidade, geralmente no backend da aplica\u00e7\u00e3o. A ess\u00eancia da abordagem \u00e9 criar dois servidores praticamente id\u00eanticos: um atende quase todos os usu\u00e1rios, enquanto o outro, com novas funcionalidades, atende apenas um pequeno subgrupo de usu\u00e1rios, ap\u00f3s o que os resultados de seu desempenho s\u00e3o comparados. Se tudo ocorrer sem erros, a nova vers\u00e3o \u00e9 gradualmente implantada em toda a infraestrutura.<\/p>\n<p>Embora essa estrat\u00e9gia possa ser implementada exclusivamente com os recursos do Kubernetes, substituindo as pods antigas por novas, \u00e9 muito mais conveniente e simples usar uma service mesh como o Istio.<\/p>\n<p>Por exemplo, voc\u00ea pode ter dois manifestos diferentes no Git: um normal com a tag 0.1.0 e um \"can\u00e1rio\" com a tag 0.2.0. Alterando os pesos no manifesto do gateway virtual do Istio, \u00e9 poss\u00edvel gerenciar a distribui\u00e7\u00e3o do tr\u00e1fego entre essas duas implanta\u00e7\u00f5es:<\/p>\n<p><img decoding=\"async\" alt=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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 \/>\nUm guia passo a passo para implementar deployments can\u00e1rios com o Istio pode ser encontrado no material <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 do tradutor.<\/b>: Tamb\u00e9m traduzimos o material sobre implanta\u00e7\u00f5es can\u00e1rias no Istio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">aqui<\/a><\/noindex>.)<\/i><\/p>\n<h4>Implanta\u00e7\u00f5es can\u00e1rias com Weaveworks Flagger<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> permite gerenciar implanta\u00e7\u00f5es can\u00e1rias de forma f\u00e1cil e eficaz.<\/p>\n<p>O Flagger automatiza o trabalho com eles. Ele usa o Istio ou o AWS App Mesh para roteamento e altern\u00e2ncia de tr\u00e1fego, assim como m\u00e9tricas do Prometheus para an\u00e1lise de resultados. Al\u00e9m disso, a an\u00e1lise das implanta\u00e7\u00f5es can\u00e1rias pode ser complementada com webhooks para realizar testes de aceita\u00e7\u00e3o, testes de carga e quaisquer outros tipos de verifica\u00e7\u00f5es.<\/p>\n<p>Com base no deployment do Kubernetes e, se necess\u00e1rio, na escalabilidade horizontal das pods (HPA), o Flagger cria conjuntos de objetos (deployments do Kubernetes, servi\u00e7os ClusterIP e servi\u00e7os virtuais do Istio ou App Mesh) para realizar a an\u00e1lise e implementar implanta\u00e7\u00f5es can\u00e1rias:<\/p>\n<p><img decoding=\"async\" alt=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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 \/>\nImplementando o contorno de controle <i>(control loop)<\/i>, o Flagger gradualmente redireciona o tr\u00e1fego para o servidor can\u00e1rio, enquanto mede m\u00e9tricas-chave de desempenho, como a taxa de solicita\u00e7\u00f5es HTTP bem-sucedidas, o tempo m\u00e9dio de resposta e a sa\u00fade das pods. Com base na an\u00e1lise de KPI (indicadores-chave de desempenho), a parte can\u00e1ria ou aumenta ou diminui, e os resultados da an\u00e1lise s\u00e3o publicados no Slack. A descri\u00e7\u00e3o e a demonstra\u00e7\u00e3o desse processo podem ser encontradas no 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=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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>Dark (ocultos) ou implanta\u00e7\u00f5es A\/B<\/h3>\n<p>\nA implanta\u00e7\u00e3o oculta \u00e9 mais uma varia\u00e7\u00e3o da estrat\u00e9gia can\u00e1ria (com a qual, a prop\u00f3sito, o Flagger tamb\u00e9m pode trabalhar). A diferen\u00e7a entre implanta\u00e7\u00f5es ocultas e can\u00e1rias \u00e9 que as implanta\u00e7\u00f5es ocultas lidam com o front-end, e n\u00e3o com o back-end, como as can\u00e1rias.<\/p>\n<p>Outro nome para essas implanta\u00e7\u00f5es \u00e9 A\/B testing. Em vez de abrir o acesso a uma nova funcionalidade para todos os usu\u00e1rios, ela \u00e9 oferecida apenas a uma parte limitada deles. Normalmente, esses usu\u00e1rios n\u00e3o sabem que est\u00e3o atuando como testadores pioneiros (da\u00ed o termo \"implanta\u00e7\u00f5es ocultas\").<\/p>\n<p>Com o uso de switches de funcionalidade <i>(feature toggles)<\/i> e outras ferramentas, \u00e9 poss\u00edvel monitorar como os usu\u00e1rios interagem com a nova funcionalidade, se ela os atrai ou se consideram a nova interface confusa, al\u00e9m de outros tipos de m\u00e9tricas.<\/p>\n<p><img decoding=\"async\" alt=\"Estrat\u00e9gias de implanta\u00e7\u00e3o no 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 e implanta\u00e7\u00f5es A\/B<\/h4>\n<p>\nAl\u00e9m da rotea\u00e7\u00e3o ponderada, o Flagger tamb\u00e9m pode direcionar o tr\u00e1fego para um servidor can\u00e1rio com base em par\u00e2metros HTTP. Em testes A\/B, \u00e9 poss\u00edvel usar cabe\u00e7alhos HTTP ou cookies para redirecionar um segmento espec\u00edfico de usu\u00e1rios. Isso \u00e9 especialmente eficaz em aplica\u00e7\u00f5es front-end que requerem afinidade de sess\u00e3o com o servidor <i>(session affinity)<\/i>. Mais informa\u00e7\u00f5es podem ser encontradas na documenta\u00e7\u00e3o do Flagger.<\/p>\n<p><i>O autor agradece <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefan Prodan<\/a><\/noindex>, engenheiro da Weaveworks (e criador do Flagger), por todos esses incr\u00edveis diagramas de implanta\u00e7\u00e3o.<\/i><\/p>\n<h2>P.S. do tradutor<\/h2>\n<p>\nConfira tamb\u00e9m em nosso blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">Revis\u00e3o e compara\u00e7\u00e3o de controladores Ingress para Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/460351\/\">werf \u2014 nossa ferramenta para CI\/CD no Kubernetes (vis\u00e3o geral e v\u00eddeo da apresenta\u00e7\u00e3o)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Constru\u00e7\u00e3o e implanta\u00e7\u00e3o de microsservi\u00e7os semelhantes com werf e GitLab CI<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">O que \u00e9 GitOps?<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fonte: <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.3 - 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\/pt\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Estrat\u00e9gias de implanta\u00e7\u00e3o no Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B testing) | ProHoster","description":"Nota.","canonical_url":"https:\/\/prohoster.info\/pt\/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":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/52688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=52688"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/52688\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=52688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=52688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=52688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}