SlideShare une entreprise Scribd logo
1  sur  20
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

Contenu connexe

Tendances

Monitorizando con el Stack Elastic Elige tu propia aventura
Monitorizando con el Stack Elastic Elige tu propia aventuraMonitorizando con el Stack Elastic Elige tu propia aventura
Monitorizando con el Stack Elastic Elige tu propia aventuraImma Valls Bernaus
 
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev DayCómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev DayPlain Concepts
 
Consejos de los expertos para actualizar el Stack ELK
Consejos de los expertos para actualizar el Stack ELKConsejos de los expertos para actualizar el Stack ELK
Consejos de los expertos para actualizar el Stack ELKImma Valls Bernaus
 
Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...
Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...
Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...Imma Valls Bernaus
 
Pipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOpsPipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOpsChristian Melendez
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)Ernesto Anaya
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextDomingo Suarez Torres
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talkCarlos Landeras Martínez
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivirDomingo Suarez Torres
 
Arquitectura de microservicios
Arquitectura de microserviciosArquitectura de microservicios
Arquitectura de microserviciosFelix Liberio
 
DevOps Spain 2019. Javier Hijas-Check Point
DevOps Spain 2019. Javier Hijas-Check PointDevOps Spain 2019. Javier Hijas-Check Point
DevOps Spain 2019. Javier Hijas-Check PointatSistemas
 
Azure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanzaAzure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanzaPlain Concepts
 
Serverless application repository
Serverless application repositoryServerless application repository
Serverless application repositoryPaola Velazquez
 
Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps day
 Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps day Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps day
Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps dayPlain Concepts
 
Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?[T]echdencias
 

Tendances (20)

Monitorizando con el Stack Elastic Elige tu propia aventura
Monitorizando con el Stack Elastic Elige tu propia aventuraMonitorizando con el Stack Elastic Elige tu propia aventura
Monitorizando con el Stack Elastic Elige tu propia aventura
 
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev DayCómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
Cómo petarlo con Blockchain en 45' - Plain Concepts Dev Day
 
Consejos de los expertos para actualizar el Stack ELK
Consejos de los expertos para actualizar el Stack ELKConsejos de los expertos para actualizar el Stack ELK
Consejos de los expertos para actualizar el Stack ELK
 
ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...
Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...
Desplegando Elasticsearch y Kibana en Kubernetes con el Operator de Elastic (...
 
Pipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOpsPipelines as Code en Azure DevOps
Pipelines as Code en Azure DevOps
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivir
 
Web Day Devops - Plain Concepts
Web Day Devops - Plain ConceptsWeb Day Devops - Plain Concepts
Web Day Devops - Plain Concepts
 
Introduction to Azure DevOps
Introduction to Azure DevOpsIntroduction to Azure DevOps
Introduction to Azure DevOps
 
Arquitectura de microservicios
Arquitectura de microserviciosArquitectura de microservicios
Arquitectura de microservicios
 
DevOps Spain 2019. Javier Hijas-Check Point
DevOps Spain 2019. Javier Hijas-Check PointDevOps Spain 2019. Javier Hijas-Check Point
DevOps Spain 2019. Javier Hijas-Check Point
 
Azure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanzaAzure bajo control: Claves de una buena gobernanza
Azure bajo control: Claves de una buena gobernanza
 
Serverless application repository
Serverless application repositoryServerless application repository
Serverless application repository
 
Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps day
 Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps day Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps day
Testing de integración en Azure DevOps con Docker - Plain Concepts DevOps day
 
Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?Event Grid, colega que pasa en mi nube?
Event Grid, colega que pasa en mi nube?
 

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

Policy as Code by David Acacio - DevOps BCN - October 2023
Policy as Code by David Acacio - DevOps BCN - October 2023Policy as Code by David Acacio - DevOps BCN - October 2023
Policy as Code by David Acacio - DevOps BCN - October 2023devopsbcnmeetup
 
Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.Moisés Elías Araya
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesDomingo Suarez Torres
 
Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)Edith Puclla
 
Kubernetes Operator 101 - Edith Puclla
Kubernetes Operator 101 - Edith PucllaKubernetes Operator 101 - Edith Puclla
Kubernetes Operator 101 - Edith PucllaEdith Puclla
 
Docker: de principante a pro
Docker: de principante a proDocker: de principante a pro
Docker: de principante a proPlain Concepts
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Micael Gallego
 
Multi hybrid-cloud-fundamentals v4
Multi hybrid-cloud-fundamentals v4Multi hybrid-cloud-fundamentals v4
Multi hybrid-cloud-fundamentals v4Luis Merino Troncoso
 
Operadores de Kubernetes: El poder de la automatización
Operadores de Kubernetes: El poder de la automatizaciónOperadores de Kubernetes: El poder de la automatización
Operadores de Kubernetes: El poder de la automatizaciónEdith Puclla
 
Webinar: Descubre los diferentes servicios Cloud Native en Azure
Webinar: Descubre los diferentes servicios Cloud Native en AzureWebinar: Descubre los diferentes servicios Cloud Native en Azure
Webinar: Descubre los diferentes servicios Cloud Native en AzureatSistemas
 
Cloud Native en Azure Webinar atSistemas
Cloud Native en Azure Webinar atSistemasCloud Native en Azure Webinar atSistemas
Cloud Native en Azure Webinar atSistemasSanti Macias Rodriguez
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a DockerOpen Canarias
 
#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New Relic#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New RelicCloudNativeElSalvado
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadÓscar De Arriba González
 

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

Policy as Code by David Acacio - DevOps BCN - October 2023
Policy as Code by David Acacio - DevOps BCN - October 2023Policy as Code by David Acacio - DevOps BCN - October 2023
Policy as Code by David Acacio - DevOps BCN - October 2023
 
Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.Instalacion y uso basico de Kubernetes.
Instalacion y uso basico de Kubernetes.
 
Ecs codemotion
Ecs codemotionEcs codemotion
Ecs codemotion
 
El camino de Java a Kubernetes
El camino de Java a KubernetesEl camino de Java a Kubernetes
El camino de Java a Kubernetes
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Cloud Native Mexico Presentacion
Cloud Native Mexico PresentacionCloud Native Mexico Presentacion
Cloud Native Mexico Presentacion
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)Google Kubernetes Engine (GKE)
Google Kubernetes Engine (GKE)
 
Kubernetes Operator 101 - Edith Puclla
Kubernetes Operator 101 - Edith PucllaKubernetes Operator 101 - Edith Puclla
Kubernetes Operator 101 - Edith Puclla
 
Docker: de principante a pro
Docker: de principante a proDocker: de principante a pro
Docker: de principante a pro
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Kubernetes workshop
Kubernetes workshopKubernetes workshop
Kubernetes workshop
 
Multi hybrid-cloud-fundamentals v4
Multi hybrid-cloud-fundamentals v4Multi hybrid-cloud-fundamentals v4
Multi hybrid-cloud-fundamentals v4
 
Operadores de Kubernetes: El poder de la automatización
Operadores de Kubernetes: El poder de la automatizaciónOperadores de Kubernetes: El poder de la automatización
Operadores de Kubernetes: El poder de la automatización
 
Webinar: Descubre los diferentes servicios Cloud Native en Azure
Webinar: Descubre los diferentes servicios Cloud Native en AzureWebinar: Descubre los diferentes servicios Cloud Native en Azure
Webinar: Descubre los diferentes servicios Cloud Native en Azure
 
Cloud Native en Azure Webinar atSistemas
Cloud Native en Azure Webinar atSistemasCloud Native en Azure Webinar atSistemas
Cloud Native en Azure Webinar atSistemas
 
TECNIRIS47-1b.pdf
TECNIRIS47-1b.pdfTECNIRIS47-1b.pdf
TECNIRIS47-1b.pdf
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New Relic#107 Monitoring-as-Code con Terraform y New Relic
#107 Monitoring-as-Code con Terraform y New Relic
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidad
 

Plus de Eduard Tomàs

Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEduard Tomàs
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nuncaEduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDAEduard Tomàs
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessEduard Tomàs
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y RendimientoEduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundoEduard Tomàs
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aksEduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosEduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbEduard Tomàs
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your deviceEduard Tomàs
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveEduard Tomàs
 
React native - t3chfest 2016
React native - t3chfest 2016React native - t3chfest 2016
React native - t3chfest 2016Eduard Tomàs
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React nativeEduard Tomàs
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Eduard Tomàs
 
JavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbJavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbEduard Tomàs
 

Plus de Eduard Tomàs (20)

Escalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con KedaEscalando workloads serverless en Kubernetes con Keda
Escalando workloads serverless en Kubernetes con Keda
 
C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nunca
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
 
Keda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en ServerlessKeda o como convertir Kubernetess en Serverless
Keda o como convertir Kubernetess en Serverless
 
.NET Memoria y Rendimiento
.NET Memoria y Rendimiento.NET Memoria y Rendimiento
.NET Memoria y Rendimiento
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundo
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aks
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramos
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDb
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?
 
Azure functions
Azure functionsAzure functions
Azure functions
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your device
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep Dive
 
React native - t3chfest 2016
React native - t3chfest 2016React native - t3chfest 2016
React native - t3chfest 2016
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React native
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6
 
JavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbJavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDb
 

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

  • 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
  • 13. MAD · NOV 23-24 · 2018 Kubernetes’ probes
  • 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.
  • 19. MAD · NOV 23-24 · 2018 Actualizaciones
  • 20. MAD · NOV 23-24 · 2018 Q&A ¡Gracias! Eduard Tomàs Compulsive Developer @ Plain Concepts @eiximenis MAD · NOV 23-24 · 2018

Notes de l'éditeur

  1. ddddd
  2. ssss
  3. ssss
  4. ssss