Estrategias de despliegue de Kubernetes: elegir el enfoque adecuado para sus aplicaciones

Personas en computadoras

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Estrategias de despliegue de Kubernetes

La estrategia de despliegue que elijan las organizaciones puede crear o eliminar los despliegues de aplicaciones de software. En entornos de Kubernetes, esta decisión afecta directamente a la disponibilidad de la aplicación, la velocidad de desarrollo y los costos operativos.

La diferencia entre un despliegue fluido y un despliegue desastroso a menudo se reduce a seleccionar el enfoque adecuado para las necesidades específicas de las aplicaciones y la tolerancia al riesgo.

Con la adopción de Kubernetes para crecer, las opciones de implementación estratégica se volvieron cada vez más importantes tanto para los equipos de DevOps como para los resultados comerciales.

Una encuesta de Cloud Native Computing Foundation (CNCF) reveló que el 93 % de las organizaciones utilizan, prueban o evalúan Kubernetes.1 Cada estrategia de despliegue de Kubernetes ofrece diferentes compensaciones entre velocidad, seguridad y uso de recursos.

¿Qué es un despliegue de Kubernetes?

Un despliegue de Kubernetes es un recurso de alto nivel que gestiona el ciclo de vida de las aplicaciones sin estado en un clúster de Kubernetes. Proporciona una forma declarativa de definir el estado previsto de la aplicación, incluido el número de réplicas, las imágenes de contenedor y el control de actualizaciones.

En lugar de gestionar contenedores o pods individuales, los despliegues brindan a los equipos una capa de gestión que maneja la compleja orquestación necesaria para mantener las aplicaciones funcionando de manera confiable.

Las últimas noticias tecnológicas, respaldadas por los insights de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes de la industria sobre IA, automatización, datos y más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Ya está suscrito.

Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

Descripción general de Kubernetes

Kubernetes, la plataforma de orquestación de contenedores de código abierto de facto, cambió fundamentalmente la forma en que las organizaciones piensan sobre el despliegue. A medida que las empresas pasan de una aplicación simple y monolítica a arquitecturas complejas y distribuidas durante la migración a la nube, el despliegue tradicional se volvió poco práctico y costoso.

Desarrollado inicialmente por Google y donado al CNCF en 2015, Kubernetes proporciona la infraestructura de TI esencial para las empresas de Fortune 500. Kubernetes automatiza el despliegue, el escalado y la gestión en clústeres de máquinas, lo que permite a los equipos actualizar las aplicaciones varias veces al día en lugar de tratar los despliegues como eventos poco frecuentes y de alto riesgo.

Antes de Kubernetes, las aplicaciones generalmente se ejecutaban en servidores dedicados o máquinas virtuales (VM), lo que hacía que el escalado fuera costoso y lento. Mientras Docker popularizó los contenedores, Kubernetes proporcionó la capa de orquestación de contenedores para gestionar estos contenedores a escala, organizándolos en contenedores, las unidades desplegables más pequeñas.

Estos pods se ejecutan en nodos dentro de clústeres, mientras que un plano de control coordina todas las operaciones.

Esta arquitectura nativa de la nube permite las sofisticadas estrategias de despliegue que requieren las aplicaciones modernas en contenedores basadas en la nube. Desde implementaciones graduales hasta conmutación instantánea de tráfico con equilibrio de carga, cada enfoque maneja diferentes perfiles de riesgo y requisitos operativos. Kubernetes Services proporciona identidades de red estables y descubrimiento basado en DNS para grupos de pods, lo que permite patrones de comunicación confiables incluso cuando se actualizan o reemplazan instancias individuales.

OpenShift 

Vea cómo se ejecutan los contenedores en la nube con OpenShift

Los contenedores facilitan la creación, ejecución y movimiento de aplicaciones entre diferentes entornos. Este video muestra cómo OpenShift on IBM Cloud ayuda a los equipos a gestionar aplicaciones en contenedores de manera eficiente, haciendo que el desarrollo en la nube sea más rápido y confiable.

¿Cómo funcionan los despliegues de Kubernetes?

Los despliegues de Kubernetes gestionan automáticamente los ciclos de vida de las aplicaciones manteniendo el número previsto de pods, gestionando las actualizaciones y reemplazando contenedores a través de capacidades de autocorrección.

Al actualizar una aplicación, los equipos definen cómo debe ser la nueva versión en un archivo YAML. Luego, Kubernetes maneja la compleja orquestación necesaria para lograr su estado previsto en todo el clúster, creando nuevos pods mientras gestiona la transición desde la versión anterior.

Los equipos interactúan con los despliegues a través de kubectl, la interfaz de línea de comandos para los clústeres de Kubernetes. Aplican archivos de configuración YAML (por ejemplo, deployment.yaml) que especifican la versión de la API del despliegue, los metadatos y el estado definido en la sección de especificaciones.

 Estos archivos de configuración declarativos permiten el control de versiones y los despliegues repetibles en diferentes entornos. El controlador de despliegue supervisa y gestiona continuamente el ciclo de vida del despliegue en función de estas especificaciones.

Cinco componentes esenciales de despliegue de Kubernetes

El proceso automatizado de Kubernetes se basa en cinco componentes esenciales que trabajan juntos, con la red de Kubernetes que permite la comunicación entre pods:

  1. Especificación de la plantilla de pod: la especificación de la plantilla de pod define el proyecto técnico para crear pods, incluidas las imágenes de contenedor, los requisitos de recursos, las variables de entorno, los montajes de volumen, los puertos de contenedor y la configuración de red. Esta plantilla garantiza la coherencia en todas las instancias de la aplicación.

  2. Recuento de réplicas: el recuento de réplicas especifica cuántas instancias deben ejecutarse simultáneamente. Los usuarios pueden ajustar esta configuración de forma manual o automática a través de escaladores automáticos horizontales de pod basados en métricas de monitoreo de Kubernetes, como el uso de CPU, el consumo de memoria o las métricas comerciales personalizadas. Los equipos pueden monitorear el estado de despliegue a través de los comandos de despliegue de kubectl o kubectl get para verificar el estado de despliegue y asegurarse de que se esté ejecutando la cantidad correcta de pods durante las actualizaciones.

  3. Etiquetas de selector: las etiquetas de selector establecen conexiones entre los despliegues y sus pods a través de la coincidencia basada en etiquetas. Estos selectores garantizan que los despliegues gestionen los pods de los que son responsables, evitando conflictos de configuración en entornos complejos.

  4. Configuración de la estrategia de actualización: la configuración de la estrategia de actualización controla cómo se implementan las nuevas versiones de una aplicación. Incluye configuraciones para el máximo de pods no disponibles durante las actualizaciones, capacidad de aumento para escenarios azul-verde y activadores de reversión para la recuperación automática de fallas.

  5. Configuración de gestión de recursos: la configuración de gestión de recursos define las solicitudes de CPU y memoria y los límites para los contenedores, lo que garantiza una asignación óptima de recursos en todo el clúster y evita la contención de recursos, algo crítico en entornos multiinquilino.

Casos de uso para despliegues de Kubernetes

Las organizaciones utilizan despliegues de Kubernetes en muchos contextos diferentes, cada uno de los cuales se beneficia de la gestión automatizada del ciclo de vida y de las estrategias de actualización flexibles:

  • Aplicaciones web y API
  • microservicios
  • Cargas de trabajo de procesamiento por lotes
  • Flujos de trabajo multientorno
  • Canalizaciones de CI/CD

Aplicaciones web y API

Las aplicaciones web y las API mantienen la disponibilidad durante las actualizaciones mientras se escalan con las demandas de tráfico. Las plataformas de comercio electrónico y los sistemas de gestión de contenidos se benefician especialmente de la capacidad de actualizar las funciones sin interrumpir al usuario.

Los servicios de backend que manejan el procesamiento de datos o la lógica de negocios pueden implementar independientemente de la aplicación front-end, con controladores Kubernetes Ingress que gestionan el enrutamiento del tráfico y el equilibrio de carga entre instancias de servicio.

Microservicios

Las arquitecturas de microservicios coordinan actualizaciones en cientos de servicios independientes sin afectar a todo el sistema. Esta capacidad permite a los equipos desplegar componentes individuales en diferentes horarios mientras mantienen la estabilidad general del sistema.

Los gráficos de Helm simplifican la gestión del despliegue de microservicios complejos con configuraciones estandarizadas y gestión de dependencias.

Cargas de trabajo de procesamiento por lotes

Las cargas de trabajo de procesamiento por lotes garantizan una asignación de recursos constante y capacidades de reinicio automático para las tareas de procesamiento de datos. La abstracción del despliegue simplifica la gestión de pipelines de procesamiento complejos que necesitan manejar las fallas correctamente.

Flujos de trabajo multientorno

Los flujos de trabajo multientorno mantienen la coherencia entre el desarrollo, la puesta en escena y la producción, al tiempo que aplican configuraciones específicas del entorno. Los equipos pueden usar las mismas definiciones de despliegue en entornos con diferentes recuentos de réplicas, límites de recursos o indicadores de características, organizando aplicaciones dentro de espacios de nombres para proporcionar separación lógica y aislamiento de recursos.

Pipelines de CI/CD

Los pipelines de CI/CD utilizan despliegue para automatizar todo el proceso de entrega de software, desde la confirmación del código hasta el lanzamiento en producción y el despliegue continuo.

Los despliegues se integran perfectamente con herramientas y plataformas de integración continua como GitHub, lo que permite realizar pruebas, compilaciones y despliegues automatizados basados en cambios de código, solicitudes de extracción o lanzamientos programados.

Tipos de estrategias de despliegue de Kubernetes

Las estrategias de despliegue consisten fundamentalmente en gestionar el riesgo al actualizar el software. En el pasado, los métodos tradicionales implicaban programar ventanas de mantenimiento y desconectar los sistemas, lo cual era seguro pero lento. Kubernetes permite actualizar las aplicaciones sin tiempo de inactividad, desplegarlas con mayor frecuencia y reducir la carga de coordinación.

Las diferentes estrategias de despliegue de Kubernetes manejan el riesgo de actualización de manera distinta. La elección depende de lo que hace la aplicación, lo que el equipo puede gestionar y lo que necesita la empresa.

Los tipos de estrategias de despliegue de Kubernetes incluyen estos ejemplos:

  • Despliegue recreado
  • Despliegue de actualizaciones continuas
  • Despliegue azul-verde
  • Despliegue Canary
  • Despliegue en la sombra
  • Despliegue de pruebas A/B

Despliegue recreado

Los despliegues recreados cierran todas las instancias existentes antes de iniciar otras nuevas. Esta capacidad crea un breve tiempo de inactividad, pero evita problemas de compatibilidad de versiones y conflictos de recursos.

Este enfoque funciona bien para sistemas de procesamiento por lotes, aplicaciones heredadas y entornos de desarrollo donde la simplicidad operativa importa más que el tiempo de actividad. Los equipos eligen recrear despliegues cuando pueden aceptar un tiempo de inactividad breve a cambio de un comportamiento predecible.

Despliegue de actualizaciones continuas

Las actualizaciones continuas reemplazan las instancias gradualmente mientras mantienen la aplicación disponible. Este enfoque es la estrategia predeterminada de Kubernetes porque equilibra la velocidad, el uso de recursos y el riesgo.

Los CMS suelen utilizar actualizaciones continuas para permitir la entrega continua de características sin interrumpir al usuario. Sin embargo, las aplicaciones deben diseñarse para manejar entornos de versiones mixtas; si las diferentes versiones no pueden ejecutarse juntas simultáneamente, las actualizaciones continuas se vuelven problemáticas.

Kubernetes reemplaza los pods antiguos por nuevas instancias de manera gradual, lo que permite que la versión anterior se elimine poco a poco. Los equipos pueden iniciar este proceso a través de comandos de kubectl.

Despliegue azul-verde

Los despliegues azul-verde mantienen dos entornos de producción completos y cambian todo el tráfico instantáneamente entre ellos. Esta estrategia permite una reversión instantánea, pero también duplica los costos de infraestructura durante los despliegues.

Los sistemas de procesamiento de pagos, las bases de datos de clientes, los servicios de autenticación y las aplicaciones de cumplimiento normativo utilizan despliegues azul-verde cuando los costos de infraestructura son manejables en comparación con el riesgo de interrupción del servicio. Los equipos pueden ejecutar una validación completa en el nuevo entorno antes de cambiar el tráfico.

Despliegue Canary

Los despliegues Canary enrutan una pequeña parte del tráfico a la nueva versión mientras monitorean el rendimiento y las tasas de error. Los equipos aumentan gradualmente el tráfico hasta que todos usan la última versión.

Esta estrategia permite a los equipos identificar problemas con una base de usuarios limitada, en lugar de afectar a todos los usuarios. Al dirigir un subconjunto del tráfico a la nueva versión, los despliegues controlados ayudan a reducir el riesgo de implementación. Las plataformas SaaS que validan las mejoras de rendimiento y los sitios de comercio electrónico que prueban las modificaciones de pago confían en este despliegue de estrategia.

Despliegue en la sombra

Los despliegues en la sombra duplican el tráfico de producción tanto a la versión actual (que atiende a los usuarios) como a la nueva versión (que procesa las solicitudes de forma silenciosa para realizar pruebas). Los usuarios no están expuestos a la versión oculta, pero los equipos obtienen una validación completa del rendimiento frente a cargas de trabajo reales.

Los despliegues en la sombra permiten que los sistemas prueben nuevas características en condiciones reales sin afectar a los usuarios. Los motores de búsqueda los utilizan para probar algoritmos de clasificación, los sistemas de recomendación se basan en ellos para validar los modelos de machine learning (ML) y los sistemas de detección de fraude los utilizan para evaluar reglas actualizadas.

Despliegue de pruebas A/B

Los despliegues de pruebas A/B enrutan diferentes segmentos de usuarios a diferentes configuraciones de aplicaciones para medir las métricas comerciales y el comportamiento de los usuarios. A diferencia de los despliegues controlados centrados en métricas técnicas, las pruebas A/B evalúan la eficacia de las características y la experiencia del usuario.

Los equipos de productos también utilizan despliegues de pruebas A/B para validar nuevas interfaces de usuario, probar modelos de precios o evaluar algoritmos de recomendación.

Despliegues de Kubernetes frente pods: StatefulSets y ReplicaSets

Comprender cómo encajan los despliegues con otros recursos de Kubernetes ayuda a aclarar cuándo utilizar cada enfoque.

Despliegues de Kubernetes frente a pods

Los pods son instancias de aplicaciones individuales, pero gestionarlos directamente se complica rápidamente. Los despliegues de Kubernetes manejan la capa de gestión, lo que permite a los equipos centrarse en la lógica de la aplicación en lugar de en la orquestación de contenedores.

Despliegues de Kubernetes frente a ReplicaSets

ReplicaSets son objetos de Kubernetes que garantizan que se esté ejecutando el número correcto de instancias. Los despliegues de Kubernetes agregan gestión de cambios, incluidas capacidades de control de versiones, actualizaciones y reversión que facilitan las actualizaciones de aplicaciones.

Despliegues de Kubernetes frente a StatefulSets

StatefulSets son objetos de Kubernetes que mantienen identidades persistentes y operaciones ordenadas para los pods. Los despliegues de Kubernetes son más adecuados para aplicaciones sin estado donde los pods pueden tratarse como unidades idénticas y reemplazables, mientras que StatefulSets manejan aplicaciones con estado que requieren identidades estables y escalado secuencial.

Mejores prácticas y consideraciones

Las estrategias de despliegue exitosas de Kubernetes requieren prácticas operativas sólidas que respalden despliegues confiables y repetibles en diferentes entornos y tipos de aplicaciones:

  • Seguimiento y observabilidad
  • Comprobaciones de estado y sondeos de preparación
  • Integración de pruebas automatizadas
  • Planificación y ejecución de reversiones

Seguimiento y observabilidad

La supervisión de Kubernetes proporciona a los equipos visibilidad del rendimiento de las aplicaciones, las métricas empresariales, las tasas de error y la experiencia del usuario para que puedan tomar decisiones informadas durante los despliegues y detectar problemas a tiempo.

Las plataformas avanzadas de observabilidad adoptan este enfoque un poc más al integrar el despliegue de seguimiento con el monitoreo del rendimiento, lo que permite a los equipos correlacionar los eventos de despliegue con el comportamiento del sistema y el impacto del usuario.

Comprobaciones de estado y sondeos de preparación

Las verificaciones de estado configuradas correctamente garantizan que las nuevas instancias de aplicación sean completamente funcionales antes de recibir tráfico. Este mecanismo evita que los despliegues fallidos afecten a los usuarios y permite la reversión automática cuando se detectan problemas.

Los sondeos de preparación de Kubernetes deben validar no solo que la aplicación se está ejecutando, sino que está lista para manejar el tráfico de producción, incluidas las conexiones de bases de datos, las dependencias de servicios externos y cualquier proceso de inicialización requerido.

Integración de pruebas automatizadas

Las pruebas automatizadas requieren implementación en múltiples etapas, incluidas pruebas unitarias, pruebas de integración, validación de extremo a extremo y pruebas de rendimiento. Este enfoque integral ayuda a descubrir problemas de manera temprana y reduce el riesgo de problemas de producción.

Los pipelines de despliegue modernos integran las pruebas con las estrategias de despliegue, promoviendo automáticamente las compilaciones a través de entornos basados en los resultados de las pruebas y las métricas de rendimiento en lugar de los procesos manuales de aprobación.

Planificación y ejecución de reversiones

Las estrategias eficaces de reversión requieren una preparación y pruebas cuidadosas antes de que surjan problemas de despliegue. Los equipos deben comprender cómo revertir los despliegues rápidamente, anticipar posibles desafíos de coherencia de datos y establecer protocolos de comunicación claros para garantizar una recuperación rápida cuando se produzcan problemas.

Integración de estrategias de despliegue de Kubernetes

En lugar de ver las estrategias de despliegue como opciones mutuamente excluyentes, muchas organizaciones encuentran un valor significativo en usar múltiples enfoques juntos. Este enfoque híbrido aprovecha las fortalezas de cada estrategia, al tiempo que aborda sus limitaciones.

Los equipos de plataforma a menudo estandarizan las actualizaciones continuas como predeterminadas. Los despliegues azul-verde están disponibles para aplicaciones críticas, mientras que los despliegues Canary se utilizan para características de alta visibilidad.

Las grandes organizaciones implementan diferentes estrategias en todos los niveles de aplicación: azul-verde para servicios orientados al usuario, actualizaciones continuas para API internas y microservicios y recreación de despliegues para componentes de procesamiento por lotes.

Las organizaciones a menudo combinan estrategias dentro de pipelines de implementación únicos: despliegues en la sombra para la validación del rendimiento, seguidos de despliegues controlados para la exposición gradual del usuario, con capacidades azul-verde disponibles para una reversión instantánea cuando surgen problemas.

Conclusión

Las opciones de despliegue estratégico determinan si los equipos entregan con confianza o gestionan constantemente las crisis. Las organizaciones que se destacan en múltiples enfoques cambian fundamentalmente sus capacidades de entrega, logrando ciclos más rápidos y una mayor confiabilidad. Al adaptar el enfoque para que se ajuste a cada escenario único en el desarrollo de aplicaciones modernas, esta estrategia fomenta una mayor confianza operativa.

Soluciones relacionadas
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.

Conozca Red Hat OpenShift
Soluciones de contenedores

Las soluciones de contenedores ejecutan y amplían cargas de trabajo en contenedores con seguridad, innovación de código abierto y despliegue rápido.

Explorar contenedores
Servicios de consultoría en la nube 

Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de IBM de asesoramiento sobre la nube. Descubra cómo crear conjuntamente soluciones, acelerar la transformación digital y optimizar el rendimiento a través de estrategias de nube híbrida y asociaciones de expertos.

Servicios en la nube
Dé el siguiente paso

Modernice su infraestructura con las soluciones de contenedores de IBM. Ejecute, escale y gestione cargas de trabajo en contenedores en todos los entornos con flexibilidad, seguridad y eficiencia mediante el uso de la plataforma integral de contenedores de IBM.

Explore las soluciones de contenedores Cree su cuenta gratuita de IBM Cloud
Notas de pie de página