{"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\/es\/blog\/administrirovanie\/strategii-deploya-v-kubernetes-rolling-recreate-blue-green-canary-dark-a-b-testirovanie","title":{"rendered":"Estrategias de despliegue en Kubernetes: rolling, recreate, blue\/green, canary, dark (A\/B testing)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota del traductor:<\/b> Este material de revisi\u00f3n de Weaveworks presenta las estrategias de despliegue de aplicaciones m\u00e1s populares y explica c\u00f3mo implementar las m\u00e1s avanzadas utilizando el operador de Kubernetes Flagger. Est\u00e1 redactado en un lenguaje sencillo y contiene diagramas claros que permiten entender el tema incluso a ingenieros principiantes.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Estrategias de despliegue en 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>El esquema fue tomado de <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.container-solutions.com\/kubernetes-deployment-strategies\">otra revisi\u00f3n<\/a><\/noindex> de estrategias de despliegue, realizada en Container Solutions<\/i><\/p>\n<p>Uno de los mayores problemas en el desarrollo de aplicaciones nativas de la nube hoy en d\u00eda es acelerar el despliegue. Con un enfoque de microservicios, los desarrolladores ya trabajan con aplicaciones completamente modulares y las dise\u00f1an para permitir que diferentes equipos escriban c\u00f3digo y realicen cambios en la aplicaci\u00f3n simult\u00e1neamente.<\/p>\n<p>Los despliegues m\u00e1s cortos y frecuentes tienen las siguientes ventajas:<\/p>\n<ul>\n<li> Se reduce el tiempo de lanzamiento al mercado.<\/li>\n<li> Las nuevas funciones llegan m\u00e1s r\u00e1pidamente a los usuarios.<\/li>\n<li> Las respuestas de los usuarios llegan m\u00e1s r\u00e1pido al equipo de desarrollo. Esto significa que el equipo puede agregar funciones y solucionar problemas de manera m\u00e1s \u00e1gil.<\/li>\n<li> Aumenta la moral de los desarrolladores: trabajar con una mayor cantidad de funciones en desarrollo es m\u00e1s interesante.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nPero con el aumento de la frecuencia de los lanzamientos tambi\u00e9n aumentan las probabilidades de afectar negativamente la confiabilidad de la aplicaci\u00f3n o la experiencia del usuario. Por esta raz\u00f3n, es importante que los equipos de operaciones y DevOps construyan procesos y gestionen estrategias de despliegue de manera que minimicen el riesgo para el producto y los usuarios. (Descubre m\u00e1s sobre la automatizaci\u00f3n de la canalizaci\u00f3n CI\/CD) <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/assets\/images\/blta8084030436bce24\/CICD_eBook_Web.pdf\">aqu\u00ed<\/a><\/noindex>.)<\/p>\n<p>En esta publicaci\u00f3n discutiremos diversas estrategias de despliegue en Kubernetes, incluyendo despliegues rolling y m\u00e9todos m\u00e1s avanzados, tales como los despliegues canario y sus variaciones.<\/p>\n<h2>Estrategias de despliegue.<\/h2>\n<p>\nExisten varios tipos de estrategias de despliegue que se pueden utilizar dependiendo del objetivo. Por ejemplo, puede ser necesario realizar cambios en un entorno para pruebas posteriores, en un subconjunto de usuarios\/clientes, o puede ser necesario realizar pruebas limitadas en usuarios antes de hacer una funci\u00f3n <i>p\u00fablica<\/i>.<\/p>\n<h3>Rolling (despliegue gradual)<\/h3>\n<p>\nEsta es la estrategia de implementaci\u00f3n est\u00e1ndar en Kubernetes. Reemplaza gradualmente, una por una, las pod con la versi\u00f3n anterior de la aplicaci\u00f3n por las pod con la nueva versi\u00f3n, sin tiempo de inactividad en el cl\u00faster.<\/p>\n<p><img decoding=\"async\" alt=\"Estrategias de despliegue en 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 espera a que las nuevas pod est\u00e9n listas para funcionar (verific\u00e1ndolas con <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/resilient-apps-with-liveness-and-readiness-probes-in-kubernetes\">pruebas de readiness<\/a><\/noindex>), antes de proceder a desmantelar las antiguas. Si surge un problema, esta actualizaci\u00f3n controlada se puede interrumpir sin detener todo el cl\u00faster. En el archivo YAML que describe el tipo de implementaci\u00f3n, la nueva imagen reemplaza a la antigua:<\/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>\nLos par\u00e1metros de la actualizaci\u00f3n gradual se pueden especificar en el archivo de manifiesto:<\/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 (recreaci\u00f3n)<\/h3>\n<p>\nEn este tipo m\u00e1s b\u00e1sico de implementaci\u00f3n, las pod antiguas se eliminan todas de una vez y se reemplazan por nuevas:<\/p>\n<p><img decoding=\"async\" alt=\"Estrategias de despliegue en 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 \/>\nEl manifiesto correspondiente se ve aproximadamente as\u00ed:<\/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 (despliegues azul\/verdes)<\/h3>\n<p>\nLa estrategia de despliegue azul\/verde (a veces tambi\u00e9n llamada roja\/negra) implica el despliegue simult\u00e1neo de la versi\u00f3n antigua (verde) y la nueva (azul) de la aplicaci\u00f3n. Despu\u00e9s de desplegar ambas versiones, los usuarios comunes tienen acceso a la verde, mientras que la azul est\u00e1 disponible para el equipo de QA para la automatizaci\u00f3n de pruebas a trav\u00e9s de un servicio separado o mediante redirecci\u00f3n de puertos:<\/p>\n<p><img decoding=\"async\" alt=\"Estrategias de despliegue en 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>\nUna vez que la versi\u00f3n azul (nueva) ha sido probada y se ha aprobado su lanzamiento, el servicio se dirige hacia ella, mientras que la verde (antigua) se desmantela:<\/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 (despliegues canarios)<\/h3>\n<p>\nLos despliegues canarios son similares a los azul\/verdes, pero se gestionan mejor y utilizan un enfoque <noindex><a rel=\"nofollow\" href=\"https:\/\/redmonk.com\/jgovernor\/2018\/08\/06\/towards-progressive-delivery\/\">progresivo<\/a><\/noindex> por etapas. Este tipo incluye varias estrategias diferentes, incluidas las 'lanzamientos ocultos' y la prueba A\/B.<\/p>\n<p>Esta estrategia se aplica cuando es necesario probar alguna nueva funcionalidad, generalmente en el backend de la aplicaci\u00f3n. La esencia del enfoque es crear dos servidores pr\u00e1cticamente id\u00e9nticos: uno atiende a casi todos los usuarios, mientras que el otro, con las nuevas funciones, atiende solo a un peque\u00f1o subgrupo de usuarios, tras lo cual se comparan los resultados de su funcionamiento. Si todo transcurre sin errores, la nueva versi\u00f3n se despliega gradualmente en toda la infraestructura.<\/p>\n<p>Aunque esta estrategia se puede implementar exclusivamente con herramientas de Kubernetes, es mucho m\u00e1s conveniente y f\u00e1cil utilizar una malla de servicios como Istio.<\/p>\n<p>Por ejemplo, puede tener dos manifiestos diferentes en Git: uno normal con la etiqueta 0.1.0 y uno \"canario\" con la etiqueta 0.2.0. Al modificar los pesos en el manifiesto del gateway virtual de Istio, puede gestionar la distribuci\u00f3n del tr\u00e1fico entre estas dos implementaciones:<\/p>\n<p><img decoding=\"async\" alt=\"Estrategias de despliegue en 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 \/>\nUna gu\u00eda paso a paso para implementar deployments canarios con Istio se puede encontrar en el 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 de traducci\u00f3n.<\/b>: Tambi\u00e9n hemos traducido un material sobre releases canarios en Istio <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440378\/\">aqu\u00ed<\/a><\/noindex>.)<\/i><\/p>\n<h4>Despliegues canarios con Weaveworks Flagger<\/h4>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/docs.flagger.app\/\">Weaveworks Flagger<\/a><\/noindex> permite gestionar de manera f\u00e1cil y eficaz los despliegues canarios.<\/p>\n<p>Flagger automatiza el trabajo con ellos. Utiliza Istio o AWS App Mesh para enrutar y cambiar el tr\u00e1fico, as\u00ed como m\u00e9tricas de Prometheus para analizar los resultados. Adem\u00e1s, el an\u00e1lisis de los despliegues canarios se puede complementar con webhooks para realizar pruebas de aceptaci\u00f3n, de carga y cualquier otro tipo de verificaci\u00f3n.<\/p>\n<p>Basado en la implementaci\u00f3n de Kubernetes y, si es necesario, la escalabilidad horizontal de las pod (HPA), Flagger crea conjuntos de objetos (implementaciones de Kubernetes, servicios ClusterIP y servicios virtuales de Istio o App Mesh) para realizar an\u00e1lisis e implementaciones canarias:<\/p>\n<p><img decoding=\"async\" alt=\"Estrategias de despliegue en 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 el bucle de control <i>(control loop)<\/i>, Flagger dirige gradualmente el tr\u00e1fico hacia el servidor canario, mientras mide indicadores clave de rendimiento, como la tasa de solicitudes HTTP exitosas, la duraci\u00f3n media de las solicitudes y la salud de las pod. Seg\u00fan el an\u00e1lisis de los KPI (indicadores clave de rendimiento), la parte canaria puede aumentar o disminuir, y los resultados del an\u00e1lisis se publican en Slack. La descripci\u00f3n y demostraci\u00f3n de este proceso se pueden encontrar en el 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=\"Estrategias de despliegue en 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>Despliegues oscuros (escondidos) o A\/B<\/h3>\n<p>\nEl despliegue oculto es otra variaci\u00f3n de la estrategia canaria (con la que, por cierto, Flagger tambi\u00e9n puede trabajar). La diferencia entre un despliegue oculto y uno canario es que los despliegues ocultos manejan el frontend, mientras que los canarios se ocupan del backend.<\/p>\n<p>Otra denominaci\u00f3n para estos despliegues es A\/B testing. En lugar de abrir el acceso a una nueva funci\u00f3n para todos los usuarios, se ofrece solo a una parte limitada de ellos. Normalmente, estos usuarios no saben que act\u00faan como testers pioneros (de ah\u00ed el t\u00e9rmino 'despliegue oculto').<\/p>\n<p>Con los interruptores de funcionalidad <i>(feature toggles)<\/i> y otras herramientas, se puede supervisar c\u00f3mo los usuarios interact\u00faan con la nueva funci\u00f3n, si les atrae o si consideran que la nueva interfaz de usuario es confusa, as\u00ed como otros tipos de m\u00e9tricas.<\/p>\n<p><img decoding=\"async\" alt=\"Estrategias de despliegue en 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 y los despliegues A\/B<\/h4>\n<p>\nAdem\u00e1s de laruta basada en pesos, Flagger tambi\u00e9n puede dirigir el tr\u00e1fico al servidor canario seg\u00fan par\u00e1metros HTTP. En A\/B testing, se pueden utilizar cabeceras HTTP o cookies para redirigir un segmento espec\u00edfico de usuarios. Esto es especialmente eficaz en aplicaciones frontend que requieren afinidad de sesi\u00f3n con el servidor <i>(session affinity)<\/i>. Para m\u00e1s informaci\u00f3n, se puede consultar la documentaci\u00f3n de Flagger.<\/p>\n<p><i>El autor agradece a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stefanprodan\">Stefan Prodan<\/a><\/noindex>, ingeniero de Weaveworks (y creador de Flagger), por todos estos impresionantes esquemas de despliegue.<\/i><\/p>\n<h2>P.D. del traductor<\/h2>\n<p>\nTambi\u00e9n puedes leer en nuestro blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/447180\/\">Revisi\u00f3n y comparaci\u00f3n 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: nuestra herramienta para CI\/CD en Kubernetes (rese\u00f1a y video de la presentaci\u00f3n)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/469541\/\">Construcci\u00f3n y despliegue de microservicios similares con werf y GitLab CI<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/458878\/\">\u00bfQu\u00e9 es GitOps?<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Fuente: <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.2 - 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\/es\/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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Estrategias de despliegue en Kubernetes: rolling, recreate, blue\/green, canario, oscuro (A\/B testing) | ProHoster","description":"Ej.","canonical_url":"https:\/\/prohoster.info\/es\/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":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/52688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=52688"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/52688\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=52688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=52688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=52688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}