Skip to main content

Deployments

image.png

Un deployment en Kubernetes es un recurso que gestiona y mantiene el ciclo de vida de un conjunto de réplicas de un pod de manera declarativa. Es uno de los objetos más utilizados en Kubernetes, ya que te permite:

  1. Desplegar una aplicación: Define qué imagen de contenedor se debe usar, cuántas réplicas deben ejecutarse y cómo deben exponerse.

  2. Actualizar la aplicación sin tiempo de inactividad: Permite hacer rolling updates (actualizaciones progresivas) de los pods, minimizando la posibilidad de interrupciones.

  3. Gestionar el estado deseado: Kubernetes se asegura de que siempre haya el número de réplicas especificadas corriendo; si un pod falla, automáticamente se crea uno nuevo.

  4. Rollback: Puedes revertir a una versión anterior si una actualización falla.

Estructura básica de un Deployment

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: httpd:latest
          ports:
            - containerPort: 80

Conceptos clave:

  • replicas: número de instancias de un pod.

  • selector: cómo Kubernetes identifica los pods que pertenecen a este deployment.

  • template: especifica la plantilla de los pods (contenedores, puertos, variables de entorno, etc.).

  • strategy: (opcional) puedes definir estrategias de despliegue como RollingUpdate o Recreate.

 

# Aplica los cambios
kubectl apply -f myapp.yml

# comprueba
kubectl get all

# Escala el despliegue
kubectl scale --replicas 2 deployment/myapp