MAD · NOV 23-24 · 2018
Esos contenedores… ¡a
producción!
Eduard Tomàs
Compulsive Developer @ Plain Concepts
@eiximenis
MAD · NOV 23-24 · 2018
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
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
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
MAD · NOV 23-24 · 2018
Adopción de orquestadores
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)
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.
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.
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
MAD · NOV 23-24 · 2018
Node 2Node 1
Pod 4Pod 3
http://A
Ingress myapi rule
::1 ::1
http://cluster/myapi
MAD · NOV 23-24 · 2018
Kubernetes’ Hello World
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
MAD · NOV 23-24 · 2018
Kubernetes’ probes
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
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
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:
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.
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.
MAD · NOV 23-24 · 2018
Actualizaciones
MAD · NOV 23-24 · 2018
Q&A
¡Gracias!
Eduard Tomàs
Compulsive Developer @ Plain Concepts
@eiximenis
MAD · NOV 23-24 · 2018

Esos contenedores, ¡a producción! (Commit Conf 2018)

  • 1.
    MAD · NOV23-24 · 2018 Esos contenedores… ¡a producción! Eduard Tomàs Compulsive Developer @ Plain Concepts @eiximenis MAD · NOV 23-24 · 2018
  • 2.
    MAD · NOV23-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 · NOV23-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 · NOV23-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 · NOV23-24 · 2018 Adopción de orquestadores
  • 6.
    MAD · NOV23-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 · NOV23-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 · NOV23-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 · NOV23-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 · NOV23-24 · 2018 Node 2Node 1 Pod 4Pod 3 http://A Ingress myapi rule ::1 ::1 http://cluster/myapi
  • 11.
    MAD · NOV23-24 · 2018 Kubernetes’ Hello World
  • 12.
    MAD · NOV23-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
  • 13.
    MAD · NOV23-24 · 2018 Kubernetes’ probes
  • 14.
    MAD · NOV23-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 · NOV23-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 · NOV23-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 · NOV23-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 · NOV23-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.
  • 19.
    MAD · NOV23-24 · 2018 Actualizaciones
  • 20.
    MAD · NOV23-24 · 2018 Q&A ¡Gracias! Eduard Tomàs Compulsive Developer @ Plain Concepts @eiximenis MAD · NOV 23-24 · 2018

Notas del editor