Deployment
El Deployment es la unidad de más alto nivel que podemos gestionar en Kubernetes.
-
Crear un Deployment implica la creación de un ReplicaSet que controlará un conjunto de Pods basados en la versión especificada de la imagen.
-
Si desarrollamos una nueva versión de la aplicación y creamos una nueva imagen, podemos actualizar el Deployment con la nueva versión de la imagen. Esto generará un nuevo ReplicaSet que controlará un nuevo conjunto de Pods basados en la nueva versión de la imagen, desplegando así una nueva versión de la aplicación.
-
Un Deployment mantiene un historial de los ReplicaSets creados a medida que se actualiza la versión de la imagen. El ReplicaSet activo en un momento dado será responsable de crear los Pods con la versión actual de la aplicación.
-
Con un historial de ReplicaSets según las distintas versiones de la imagen, podemos fácilmente volver a una versión anterior de la aplicación (Rollback).
Las funciones que nos aporta un Deployment incluyen:
- Control de réplicas
- Escalabilidad de Pods
- Actualizaciones continuas
- Despliegues automáticos
- Rollback a versiones anteriores
Arquitectura de nuestras aplicaciones
Podemos desplegar dos tipos de aplicaciones en un clúster de Kubernetes:
-
Aplicaciones que necesitan varios servicios para ejecutarse: Por ejemplo, una aplicación escrita en PHP servida por un servidor web que necesita un servidor de base de datos para almacenar la información. En este caso, crearemos dos recursos Deployment: uno para desplegar la aplicación PHP y otro para la base de datos. Por cada servicio necesario, crearemos un Deployment correspondiente.
-
Aplicaciones construidas con microservicios: Cada microservicio se puede desplegar de manera autónoma. Por cada microservicio que forma parte de la aplicación, crearemos un recurso Deployment. Por ejemplo, una aplicación con un frontend que ofrece información y que realiza llamadas a un backend que proporciona un servicio web mediante una API RESTful.