 Hola a todos, gracias por venir hoy, estoy muy emocionada de hablar con ustedes sobre Decoratoria, una herramienta para generar manifestos de cubernadores. Según esta agenda, voy a intentar darles una introducción para decorar y demostrar cómo puede ser usada para generar manifestos de cubernadores para aplicaciones de Java. Voy a terminar de hablar sobre algunas otras features de decoratoria y lo que viene en el futuro. Mi nombre es Auri y he estado trabajando para el team Red Hat Sprint por un año y medio ahora. En el equipo intentamos proporcionar la mejor experiencia para los usuarios de Sprint que van a llevar sus aplicaciones y desplazarlos en cubernadores o OpenSeq, la distribución de cubernadores de Red Hat. Vamos a comenzar hablando un poco sobre el landscape cloud native. Como pueden ver, el desarrollo y el desplazamiento de aplicaciones han significativamente cambiado durante los últimos años debido a la adopción de la infraestructura del cloud y hemos also cambiado la arquitectura de aplicaciones de monolítica a microservice. Con más y más compañías moviendo a cubernadores, se está becoming the standard way of running such distributed applications. ¿Qué necesitamos para desplazar una aplicación en cubernadores? Para desplazar una aplicación en cubernadores, necesitamos crear algunos objetos, objetos llamados cubernadores de recursos. Estos objetos permitirán la plataforma para instalar nuestra aplicación. Cubernadores sigue un modelo declarativo, lo que significa que el usuario defiende el deseo del estado de la aplicación y la plataforma va a hacer las modificaciones para que se acercen a este estado. Estos recursos cubernadores están describidos en lo que se llama manifestos de cubernadores como JSON y JAML, y creamos ellos por posicionar un manifesto de la aplicación de cubernadores, resta, API, endpoint. En este slide podemos ver un ejemplo de manifestos de cubernadores en format JAML que contiene dos recursos de cubernadores. La creación de estos manifestos en forma de JAML y JSON files puede ser tedioso debido a la complejidad del formato del objeto y también debido a los números que se manipulan. Vamos a ver cómo el decorador puede ayudarnos en este trabajo. ¿Qué decorador? El decorador es una colección de tools para crear un manifesto de cubernadores y opciones. Con decoradores, los desarrolladores no necesitan de editar ningún JAML, JSON o JAML para customizar este manifesto porque el decorador lo hará para nosotros, automáticamente generará el manifesto durante la compilación de la aplicación, así que es fácil de añadir un JAML en el camino de la clase. El decorador suporta cubernadores de vanilla y opciones de red hot. Pero ¿qué son las estrategias del decorador? El decorador trabaja por todos los tools y todas las líneas de JVM, en la comunidad spring líneas como Kotlin o Groovy o tools como Gradle están realmente tomando, así que es muy importante para nosotros incluir todos esos. El decorador permite a los desarrolladores que pueden customizar manifestos utilizando anotaciones, propietarios o ambos de ellos, no necesitan de editar ningún JAML o JAML. El decorador puede ser usado también como un libro, no solo como un tool estándar. Por ejemplo, la extensión de cuarcos cubernadores es usada para generar el manifesto de cubernadores. Y finalmente, uno de los más importantes goals de decorador es para proporcionar la fácilmente de la experiencia de los libros. Así que es capaz de detectar frameworks Java frameworks como Spring Boot, cuarcos, y es capaz de alinear los manifestos generados acordamente. Por ejemplo, si usas un Spring Boot, el decorador detectará y va a automatizar un por a los desarrolladores generados. Me gusta representar los pasos para performar con decorador como un pipeline. Así que la primera cosa a hacer es añadir el JAR al paso de la clase, para poder decorar, configurar en diferentes valores si queremos customizar el manifesto, y generar el manifesto por compilando la aplicación. Y después de eso, debemos construir y publicar la imagen de contenedor a un registro de imagen externa, para permitir el plato a correrlo. Y finalmente podemos aplicar el manifesto a la clínica de target. Puede ser un poco malo, así que me gustaría hacer un demo para mostrarles cómo funcionó. Así que voy a abrir mi terminal y voy a hacer el demo usando una aplicación de Spring Boot que voy a generar desde el sitio de inicialización de Spring. Yo abro mi editor y es una aplicación simple de Spring Boot, basada en Maven. Y voy a performar algunas modificaciones para ver las bases de decorador y cómo funciona. Así que tengo mi proyecto, tengo un file de pón, así que los únicos de usuario que deberían invocar requerimientos ni en cualquier tool externo, ni plugins, solo añadir un single JAR a la clínica de compilación va a hacer el trabajo, se va a traer en bootstrap el proceso de generación. Así que esa es la primera cosa que haré, edito mi file de pón y voy a añadir una dependencia a la lista de dependencias. En order to enable Decorate, voy a elegir el starter de Spring de Kubernetes, porque tengo un cluster de Kubernetes y una aplicación de Spring. Ahora voy a abrir mi terminal y voy a compilar mi aplicación con Maven Clean Package. Cuando compilé mi proyecto, veré que Decorate automáticamente generará un nuevo folder en la dirección de target, clases MetaInfDecorate, que contiene dos files. Estos son el Flavor JSON y el Flavor Jamel de mi manifesto. El manifesto es bastante sencillo, contiene un resorcio de empleo, apuntando a una imagen de contener que voy a usar y un par de labios recomendados. Ahora me gustaría añadir algún code a mi aplicación. Voy a ir a la folder de source y voy a añadir un control de spring rest. Es un control de spring rest muy sencillo que va a print hello world, cuando una demanda va a ser sentada, y esta vez, cuando compilé el proyecto de nuevo, Decorate detectará la presencia de la aplicación de control de spring rest, anotación, y realiza que estamos hablando de una aplicación web y expone automáticamente el HTTP port al mundo exterior en forma de un servicio de cubernería. Así que, si abrimos el manifesto, esta vez tengo un resorcio de servicio bindado a el 8080 port. A este punto, vamos a configurar más decoración para customizar el manifesto. Decorate proporciona dos interfaces de configuración para customizar el manifesto. Si usamos, si decidimos hacerla con anotaciones, vamos a usar cosas como aplicación de cubernería, donde podemos producir muy fina gran customización, con cosas como labios, envares, y así. Y voy a configurar el número de replicas 23, lanzar la compilación de nuevo, y si todo va bien, debería tener el número de replicas reflejados aquí en el manifesto, así que, sí, tengo 3 replicas, pero aún así hay personas que justamente prefieren usar propietarios. Decorate proporciona la habilidad de hacer las mismas configuraciones usando propietarios. Yo solo tengo que agregar un file de aplicación de propietario y poner aquí mi configuración. Así que, he cambiado el valor intencionalmente para ver que va a ser reflejado en el manifesto, y voy a agregar algunas propietarios más. Decorate cubernería es expuesto para expulsar mi aplicación fuera del clúster, y decorar las propietarios de cubernería, que es la propietaria en la que mi servicio será disponible. Es demo y estoy usando el servicio de NIP, así que estoy listo, terminé, puedo compilar mi aplicación para customizar el manifesto, si todo va bien, tengo una nueva resúrcia ingresa generada porque he expuesto mi aplicación, bueno, la replica es 4, porque el valor en las propietarios de aplicación tiene una prioridad más alta, y una resúrcia ingresa para expulsar mi aplicación fuera del clúster con el host que he configurado. Para sumar, Decorate configurará manifestos, dando mayor prioridad a la configuración de propietarios. Ok, por lo tanto, he generado el manifesto de cubernería, apuntando a una imagen contenedora, pero esta imagen contenedora no existe aún. Necesitamos construirla y publicarla a una resúrcia externa, para permitir que la cubernería llegue. Para hacer eso, tengo dos posibilidades. Una de las posibilidades es hacerla sin Decorate, usando una imagen contenedora como Docker, por ejemplo, y después de eso, voy a poder desarrollar el manifesto con CUBE Ctl, y la otra posibilidad es usar los jugos adecuados por Decorate para triggerar la imagen contenedora y empujar. Y incluso Decorate proporciona un jugo para producir el aplicado del manifesto al final del proceso de compilación. Así que voy a usar estos jugos. Solo necesito configurar la estrategia de imagen contenedora para Decorate. Decorate hace que el Docker y el Jeep como una estrategia de imagen contenedora en este caso, para este demo, voy a usar el Jeep porque lo permite completamente evitar tener que escribir un file de Docker, así que es muy útil, pero también puedes usar Docker. Para hacer Decorate para usar Jeep como una imagen contenedora necesitamos editar la poma y agregar una nueva dependencia. La dependencia es Jeep Annotaciones. Así que ahora estoy listo. Puedo triggerar la generación del manifesto, la imagen contenedora y empujar y el empleo del manifesto en un single step adecuando algunos flacos a la comanda de compilación. Vamos a ver qué es el... es el package de MavenClean y añadimos algunos flacos para triggerar estos otros stepos adicionales. Decorate para construir la imagen. Decorate para empujar la imagen a una registra externa en ordero de aplicar el manifesto al final para el clúster de target. Así que vamos a triggerar el proceso y aquí en el consul, en el terminal podemos ver que la imagen puedes ver que la imagen va a ser construida con Jeep y también va a ser empujada a la registra de Docker porque es la registra en la que estoy instalado así que es usando Docker.io en ordero empujar la imagen. Ok, entonces es final. Es final, significa que mi aplicación ha sido desarrollada para el clúster de Kubernetes. Así que voy a... si todo va bien, si obtengo el host y acceso a ello en un browser debería ver el hola. Vamos a volver al... al slide. Un pequeño slide para recapitular los pasos y los comandos. Y vamos a hablar de otras features decoradas. ¿Qué sobre el serverless? Decorate que soporta K-Mative por generar y K-Mative Servicing y también por proporcionar una gran cantidad de configuraciones para probar K-Mative cosas. ¿Qué sobre el continuous delivery y la integración continuous? Decorate que soporta Tecton. Es uno de los futuros que recién añadimos. Usando Decorate Tecton Modules Usando Decorate Tecton Modules los usuarios pueden obtener automáticamente un pipeline que incluye pasos como la compilación de la aplicación y también el compilamiento y empujamiento de la imagen. Con la reservabilidad, Decorate soporta cosas como Prometheus o Jagger regardless de si usas los operadores o no. También se proporciona integración con frameworks como Spring como ya demostró Thorntail, Quarkus, incluso MicroNode ha recién añadido Decor, incluyendo Decorate as Feature. Pero no menos Decorate también puede ser usado sin framework. Antes de cerrar esta presentación me gustaría presentar uno de los futuros que vienen. Es en nuestro escopo para incluir el apoyo y extender el cobrador operador para operadores como Key Clock Operator CubeDB y uno de mis colegas que realmente trabajan en la implementación de un operador de servicio. Si quieres aprender más sobre Decorate incluso contribuir al proyecto o comunicar con el equipo os dejo aquí algunas recursos la reposición de GitHub la guía de configuración y muchos ejemplos para descubrir el poder de este fantástico tool. Muchas gracias.