SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
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

Mais conteúdo relacionado

Mais de Domingo Suarez Torres

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
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureDomingo Suarez Torres
 
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 EnvoyDomingo Suarez Torres
 
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 ObservabilityDomingo Suarez Torres
 
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
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosDomingo Suarez Torres
 
Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Domingo Suarez Torres
 
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 BootDomingo Suarez Torres
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonDomingo Suarez Torres
 
Serling dev team, development process
Serling dev team, development processSerling dev team, development process
Serling dev team, development processDomingo Suarez Torres
 

Mais de 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
 

Último

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
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 eyvanamcerpam
 
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 estossgonzalezp1
 
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.FlorenciaCattelani
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
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.pptxAlan779941
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
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...JohnRamos830530
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 

Último (11)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
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
 
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
 
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.
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
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...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 

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