SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Entendiendo los
CRDs de Kubernetes
Custom Resource Definitions
Recursos de Kubernetes
•En la API de Kubernetes, un recurso es un Endpoint que
almacena una colección de objetos de la API de cierto tipo.
•Por ejemplo, el recurso pods incorporado (built in)
contiene una colección de objetos Pod. La distribución
estándar de Kubernetes trae de caja muchos objetos/recursos
de la API incorporados.
•Ejemplo: Pod, Services, Deployments, etc.
•Con esos recursos, se pueden implementar muchos casos de
uso para ejecutar diversas cargas de trabajo.
CRDs
•Custom Resource Definitions.
•Permiten que los usuarios de Kubernetes, extiendan la
funcionalidad base sin modificar el código de Kubernetes en
tiempo de ejecución.
•La idea es que modamos modelar nuevos recursos/objetos,
que sean más específicos a nuestras nececidades.
•Si creamos un CRD, ese recurso puede ser usado como
cualquier otro objeto base de Kubernetes. Es decir estará
disponible para ser usado con kubectl por ejemplo.Todo
esto sin configurar algo extra fuera del cluster de Kubernetes.
Estado de los CRDs
•Los diversos CRDs que podamos definir, se almacenaran en la
misma base de datos que el resto de los recursos, en ETCD.
•Esto para tener la misma replicación y administración de su
ciclo de vida que los otros recursos.
•create/edit/delete
•De esta manera, Kubernetes evita que yo tenga que
implementar toda esta funcionalidad. Kubernetes esta listo
para ser extendido. Solo a partir de la versión 1.7.
Controller
La importancia del controller
•Si Kubernetes solo permitiera que se “agreguen” recursos sin
informar que esto ocurre de alguna forma, no podría ser
posible que lógica personalizada sea ejecutada cuando existen
cambios en un CRD.
•Esto es clave para comportarse como cualquier otro recurso
de Kubernetes.
•Es responsabilidad del desarrollador del CRD, proveer un
controller, que escuche los cambios de ese tipo de CRD.
https://engineering.bitnami.com/articles/a-deep-dive-into-kubernetes-controllers.html
Creando el primer CRD
•Es posible crear CRDs de la misma forma que se crea un
Deployment, mediante un manifiesto en formatoYAML
•El primer paso es crear el CRD mismo, una vez hecho esto, es
posible crear “instancias” de los CRDs.
•Todo esto desde el CLI con kubectl
Demo: mostrar como
crear un CRD desde el CLI
Operator Framework
https://coreos.com/operators/
Elementos básicos para un
Controller de un CRD
•Definir un esquema, el cual determina que atributos contiene
la especificación del CRD.
•Escribir la lógica del controller usado la API del Operator
Framework
•Operator Framework se encargará del ciclo de vida y sobre
todo del control de la “reconciliación” (cuando existe una
discordancia entre el estado deseado y actual)
¡Esta parte es la complicada!
Ejemplos de CRD
•Strimzi, para instalar clusters de Kafka en Kubernetes.
•Istio Service Mesh, se utilizan un montón de CRDs para los
distintos objetos de configuración:
•VirtualService
•Gateway
Demo: Creando un
Controller y CRD funcional

Weitere ähnliche Inhalte

Mehr von Domingo Suarez Torres

Mehr von Domingo Suarez Torres (20)

Cloud Native Development in the JVM
Cloud Native Development in the JVMCloud Native Development in the JVM
Cloud Native Development in the JVM
 
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
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architecture
 
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyCloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
 
Cloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityCloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 Observability
 
Cloud Native Mexico Presentacion
Cloud Native Mexico PresentacionCloud Native Mexico Presentacion
Cloud Native Mexico Presentacion
 
gRPC: Beyond REST
gRPC: Beyond RESTgRPC: Beyond REST
gRPC: Beyond REST
 
Devops Landscape
Devops LandscapeDevops Landscape
Devops Landscape
 
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
 
JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
SGNext Elasticsearch
SGNext ElasticsearchSGNext Elasticsearch
SGNext Elasticsearch
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 
Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016
 
Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016
 
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring BootSOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
 
SOA Latam 2015
SOA Latam 2015SOA Latam 2015
SOA Latam 2015
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
 
SGCE 2014 micro services
SGCE 2014 micro servicesSGCE 2014 micro services
SGCE 2014 micro services
 
Serling dev team, development process
Serling dev team, development processSerling dev team, development process
Serling dev team, development process
 

Kürzlich hochgeladen

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Kürzlich hochgeladen (11)

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 

Entendiendo los CRDs de Kubernetes

  • 1. Entendiendo los CRDs de Kubernetes Custom Resource Definitions
  • 2. Recursos de Kubernetes •En la API de Kubernetes, un recurso es un Endpoint que almacena una colección de objetos de la API de cierto tipo. •Por ejemplo, el recurso pods incorporado (built in) contiene una colección de objetos Pod. La distribución estándar de Kubernetes trae de caja muchos objetos/recursos de la API incorporados. •Ejemplo: Pod, Services, Deployments, etc. •Con esos recursos, se pueden implementar muchos casos de uso para ejecutar diversas cargas de trabajo.
  • 3. CRDs •Custom Resource Definitions. •Permiten que los usuarios de Kubernetes, extiendan la funcionalidad base sin modificar el código de Kubernetes en tiempo de ejecución. •La idea es que modamos modelar nuevos recursos/objetos, que sean más específicos a nuestras nececidades. •Si creamos un CRD, ese recurso puede ser usado como cualquier otro objeto base de Kubernetes. Es decir estará disponible para ser usado con kubectl por ejemplo.Todo esto sin configurar algo extra fuera del cluster de Kubernetes.
  • 4. Estado de los CRDs •Los diversos CRDs que podamos definir, se almacenaran en la misma base de datos que el resto de los recursos, en ETCD. •Esto para tener la misma replicación y administración de su ciclo de vida que los otros recursos. •create/edit/delete •De esta manera, Kubernetes evita que yo tenga que implementar toda esta funcionalidad. Kubernetes esta listo para ser extendido. Solo a partir de la versión 1.7.
  • 6. La importancia del controller •Si Kubernetes solo permitiera que se “agreguen” recursos sin informar que esto ocurre de alguna forma, no podría ser posible que lógica personalizada sea ejecutada cuando existen cambios en un CRD. •Esto es clave para comportarse como cualquier otro recurso de Kubernetes. •Es responsabilidad del desarrollador del CRD, proveer un controller, que escuche los cambios de ese tipo de CRD. https://engineering.bitnami.com/articles/a-deep-dive-into-kubernetes-controllers.html
  • 7. Creando el primer CRD •Es posible crear CRDs de la misma forma que se crea un Deployment, mediante un manifiesto en formatoYAML •El primer paso es crear el CRD mismo, una vez hecho esto, es posible crear “instancias” de los CRDs. •Todo esto desde el CLI con kubectl
  • 8. Demo: mostrar como crear un CRD desde el CLI
  • 10. Elementos básicos para un Controller de un CRD •Definir un esquema, el cual determina que atributos contiene la especificación del CRD. •Escribir la lógica del controller usado la API del Operator Framework •Operator Framework se encargará del ciclo de vida y sobre todo del control de la “reconciliación” (cuando existe una discordancia entre el estado deseado y actual)
  • 11. ¡Esta parte es la complicada!
  • 12. Ejemplos de CRD •Strimzi, para instalar clusters de Kafka en Kubernetes. •Istio Service Mesh, se utilizan un montón de CRDs para los distintos objetos de configuración: •VirtualService •Gateway
  • 13. Demo: Creando un Controller y CRD funcional