Saltar al contenido principal

Probando un Deployment

Podemos crear un Deployment de forma imperativa utilizando el siguiente comando (se pueden indicar muchos más parámetros de configuración que se pueden consultar en la documentación):

kubectl create deployment nginx --image nginx

Sin embargo, vamos a describir los recursos en un archivo YAML. Para describir un Deployment de nginx, podemos escribir un archivo nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx
labels:
app: nginx
spec:
revisionHistoryLimit: 2
strategy:
type: RollingUpdate
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: contenedor-nginx
ports:
- name: http
containerPort: 80

La creación de un Deployment genera un ReplicaSet y los Pods correspondientes. Por lo tanto, en la definición de un Deployment se define también el ReplicaSet asociado (los parámetros replicas, selector y template). Los atributos relacionados con el Deployment que hemos indicado en la definición son:

  • revisionHistoryLimit: Indica cuántos ReplicaSets antiguos deseamos conservar para poder realizar rollback a estados anteriores. Por defecto, es 10.
  • strategy: Indica el modo en que se realiza una actualización del Deployment. Es decir, cuando modificamos la versión de la imagen del Deployment, se crea un nuevo ReplicaSet y ¿qué hacemos con los Pods?:
    • Recreate: Elimina los Pods antiguos y crea los nuevos.
    • RollingUpdate: Va creando los nuevos Pods, comprueba que funcionan y luego elimina los antiguos; es la opción por defecto.

Además, hemos introducido un nuevo parámetro al definir el contenedor del Pod: con el parámetro ports hemos indicado el puerto que expone el contenedor (containerPort) y le hemos asignado un nombre (name).

Para seguir aprendiendo

  • Para más información acerca de los Deployment, puedes leer la guía de usuario.