0Pricing
DevOps Bootcamp · Lección

Actualizaciones progresivas y reversiones

Implemente actualizaciones de aplicaciones sin tiempo de inactividad y vuelva a versiones anteriores si surgen problemas.

Actualizaciones progresivas y reversiones es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.

Actualizaciones sin tiempo de inactividad: ¿por qué?

Imagine que actualiza una aplicación en funcionamiento. Sin una planificación cuidadosa, los usuarios podrían experimentar interrupciones o errores. ¡Aquí es donde destacan las actualizaciones progresivas de Kubernetes!

Las actualizaciones progresivas permiten actualizar su aplicación a una nueva versión sin interrumpir el servicio. Las nuevas versiones se implementan gradualmente para garantizar que la aplicación siga disponible.

Cómo gestionan las actualizaciones los Deployments

Cuando actualiza la plantilla de Pods de un Deployment (por ejemplo, al cambiar la imagen del contenedor), Kubernetes no apaga todo para reiniciarlo. En su lugar, utiliza de forma predeterminada una estrategia RollingUpdate.

  • Crea nuevos Pods con la configuración actualizada.
  • Termina gradualmente los Pods antiguos cuando los nuevos están listos.
  • Este proceso garantiza una transición fluida con un tiempo de inactividad mínimo o nulo.

Control de la velocidad del despliegue

Puede ajustar con precisión el comportamiento de las actualizaciones progresivas mediante dos parámetros clave en la sección .spec.strategy.rollingUpdate de su Deployment:

  • maxUnavailable: El número máximo de Pods que pueden no estar disponibles durante la actualización. Puede ser un número absoluto o un porcentaje.
  • maxSurge: El número máximo de Pods que se pueden crear por encima del número deseado de Pods. También puede ser un número absoluto o un porcentaje.

De forma predeterminada, ambos están establecidos en el 25 %.

Nuestro Deployment inicial

Comencemos con un Deployment sencillo de Nginx. Este YAML define nuestra aplicación inicial, que ejecuta 3 réplicas de nginx:1.14.2.

Lo utilizaremos como base para realizar una actualización progresiva en el siguiente paso.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Realización de una actualización progresiva

Ahora actualicemos la versión de Nginx de 1.14.2 a 1.15.0. Solo tenemos que cambiar la imagen en el YAML y aplicarlo.

Kubernetes detectará el cambio e iniciará automáticamente una actualización progresiva. Observe el campo image siguiente:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.0
        ports:
        - containerPort: 80

Supervisión del estado del despliegue

Después de aplicar el YAML actualizado, puede supervisar el progreso de la actualización progresiva mediante el comando kubectl rollout status:

kubectl rollout status deployment/my-nginx

Verá mensajes que indican la creación de nuevos Pods y la terminación de los antiguos hasta que finalice la actualización. También puede utilizar kubectl get rs para ver los ReplicaSets antiguo y nuevo.

Comprobación del historial del despliegue

Kubernetes conserva un historial de las revisiones de sus Deployments. Esto resulta muy útil para comprender los cambios y realizar posibles reversiones.

Para consultar el historial, utilice el comando:

kubectl rollout history deployment/my-nginx

Verá una lista de revisiones, cada una de las cuales representa un estado distinto de su Deployment. CHANGE-CAUSE suele reflejar el comando o el cambio realizado en el YAML.

Cuándo es necesaria una reversión

Incluso con pruebas cuidadosas, a veces una nueva versión de la aplicación introduce errores o problemas de rendimiento que no se detectaron. En estas situaciones críticas, necesita una forma rápida de volver a un estado estable conocido.

Para eso sirven las reversiones. Permiten deshacer una actualización problemática y devolver el Deployment a una versión anterior y funcional de su historial.

Ejecución de una reversión

Para volver a la revisión inmediatamente anterior, utilice:

kubectl rollout undo deployment/my-nginx

Si desea volver a una revisión específica (por ejemplo, la revisión 1), puede indicarla:

kubectl rollout undo deployment/my-nginx --to-revision=1

Kubernetes realizará otra actualización progresiva para devolver los Pods a la configuración histórica especificada.

Comprobación de la estrategia de despliegue

¿Cuál de los siguientes parámetros puede utilizarse para controlar el comportamiento de la estrategia RollingUpdate de un Deployment de Kubernetes?

Repaso: actualizaciones fluidas y redes de seguridad

Hemos analizado cómo los Deployments de Kubernetes permiten realizar actualizaciones progresivas sin tiempo de inactividad y pasar gradualmente sus aplicaciones a nuevas versiones. Ha aprendido lo siguiente:

  • Los Deployments utilizan RollingUpdate de forma predeterminada.
  • maxUnavailable y maxSurge controlan la velocidad de actualización.
  • kubectl rollout status supervisa el progreso.
  • kubectl rollout history realiza un seguimiento de las revisiones.
  • kubectl rollout undo permite realizar reversiones rápidas a versiones estables.

¡Estas funciones son fundamentales para mantener una alta disponibilidad y fiabilidad en sus aplicaciones!

Preguntas frecuentes

¿La lección «Actualizaciones progresivas y reversiones» es gratis?

Sí — el texto completo de «Actualizaciones progresivas y reversiones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.

¿Qué aprenderé en «Actualizaciones progresivas y reversiones»?

Implemente actualizaciones de aplicaciones sin tiempo de inactividad y vuelva a versiones anteriores si surgen problemas. Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar DevOps Bootcamp?

No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Actualizaciones progresivas y reversiones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?

Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Comprender los Deployments
  2. Escalado de aplicaciones con ReplicaSets
  3. Actualizaciones progresivas y reversiones
  4. Estrategias de despliegue: blue-green y canary
← Volver a DevOps Bootcamp