1. MAD · NOV 23-24 · 2018
Esos contenedores… ¡a
producción!
Eduard Tomàs
Compulsive Developer @ Plain Concepts
@eiximenis
MAD · NOV 23-24 · 2018
2. MAD · NOV 23-24 · 2018
¿Quien soy?
■ ... ¡el de rojo!
■ Cervecero aficionado
■ Padre orgulloso
■ Speaker donde me dejen
■ Empecé a programar en una
Odissey… ¡y hasta ahora!
■ Microsoft MVP desde 2012
3. MAD · NOV 23-24 · 2018
¿De qué vamos a hablar hoy?
De donde desplegar contenedores en producción
De como desplegarlos
Y vamos a centrarnos en orquestadores y dentro de esos en Kubernetes
4. MAD · NOV 23-24 · 2018
¿Por qué un orquestador?
■ Un orquestador se encarga de manejar el ciclo de vida de los
contenedores y de ofrecer servicios adicionales para la aplicación.
■ Aprovisionamiento y ejecución de contenedores
■ Auto escalado
■ Monitorización
■ Load balancing, redundancia y discovery
■ Exposición de contenedores al exterior
■ Manejo de recursos adicionales
5. MAD · NOV 23-24 · 2018
Adopción de orquestadores
6. MAD · NOV 23-24 · 2018
¿Por qué Kubernetes?
■ Kubernetes es el líder actual en el
mercado de oquestadores
■ Múltiples offerings en cloud (GKE, EKS,
AKS)
■ Productos derivados (Open Shift, Rancher)
7. MAD · NOV 23-24 · 2018
Falsos mitos sobre Kubernetes
■ Mito: Kubernetes es solo para Docker
■ Realidad: Kubernetes se integra nativamente con Docker y rkt, pero puede
integrarse, via CRI, con cualquier motor de contenedores.
■ Mito: Kubernetes es de Google
■ Realidad: Kubernetes empezó siendo un proyecto de Google. Pero ahora
pertenece a la CNCF.
8. MAD · NOV 23-24 · 2018
Falsos mitos sobre Kubernetes
■ Mito: Kubernetes es solo para cloud
■ Realidad: Kubernetes es cloud native pero puede instalarse onprem.
■ Mito: Kubernetes es un producto finalizado
■ Realidad: No es solo un producto y está en constante evolución
■ Mito: Kubernetes es fácil de instalar y poner en marcha
■ Realidad: Un k8s multi-nodo con HA es complejo de crear y mantener. De
ahí que el uso de k8s “manejados” esté ganando popularidad.
9. MAD · NOV 23-24 · 2018
Falsos mitos sobre Kubernetes
■ Mito: Kubernetes define como arquitecturar tu app
■ Realidad: Kubernetes define un modelo de ejecución muy flexible, pero
deja de lado el como arquitecturar tu app
■ Mito: Kubernetes hace que tus contenedores sean seguros
■ Realidad: Kubernetes ofrece herramientas para securizar, pero usarlas no
es sencillo
10. MAD · NOV 23-24 · 2018
Node 2Node 1
Pod 4Pod 3
http://A
Ingress myapi rule
::1 ::1
http://cluster/myapi
11. MAD · NOV 23-24 · 2018
Kubernetes’ Hello World
12. MAD · NOV 23-24 · 2018
Healthchecks
■ Usa healthchecks para monitorizar el estado de un contenedor
■ Liveness probes
∘ Si fallan el pod se reinicia
■ Readiness probes
∘ Si fallan no se manda tráfico al pod
14. MAD · NOV 23-24 · 2018
Buenas prácticas docker & k8s
■ Usar multi-stage builds siempre que sea posible
■ Usar stdout/stderr para log
■ Monitor, monitor, monitor
■ No usar nunca el tag latest
■ Evitar el uso de ssh (usar kubectl exec)
■ Usar sí o sí RBAC
■ Usar secretos de k8s para contraseñas
15. MAD · NOV 23-24 · 2018
Buenas prácticas docker & k8s
■ Usa sidecars para proxies, watchers, etc,…
■ Usar init containers para inicialización
■ Usar Readiness/liveness probes
■ Establece límites de recursos
■ No uses servicios LoadBalancer
■ Usa Helm
■ Crea pipelines de CI/CD
16. MAD · NOV 23-24 · 2018
Actualizaciones
■ Kubernetes ofrece multiples estrategias para actualizar/redesplegar
nuestra aplicación
■ Recreate (ideal para dev): Se destruye la version actual y se sustituye
■ Ramped: Se crea un nuevo replicaset con la nueva version y se transfieren
replicas de uno a otro:
17. MAD · NOV 23-24 · 2018
Actualizaciones
■ Blue/Green: Ambas versiones se despliegan a la vez. Cuando la nueva
(green) version está probada, se actualiza el servicio y se pasa a usar de
forma predeterminada esa nueva version.
18. MAD · NOV 23-24 · 2018
Actualizaciones
■ Canary: Un grupo de usuarios usan la nueva versión (green) mientras el
resto usa la antigua. Cuando se quiera pasar a la nueva versión se
aumentan las replicas del deployment nuevo y se elimina el antiguo.