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.