Este documento presenta las lecciones aprendidas por un desarrollador sobre el uso de Docker y Kubernetes. Explica que es importante tener conocimientos básicos en diferentes áreas para resolver problemas de forma ágil. También describe algunas técnicas como usar Docker compose para ejecutar servicios dependientes localmente, inspeccionar logs y entrar en contenedores para depurar, y montar configuraciones como volúmenes en Kubernetes. El objetivo es compartir recetas y consejos prácticos basados en la experiencia del autor.
4. #netcoreconf
Como developer
• Esto no es así el 95% del tiempo
• Ser super especialista tiende a hacer todo más lento
• Las interdependencia generan demoras
• La falta de conocimiento, al menos mínimo, el otras áreas atenta
contra la resolución de problemas
• Ser extremistas en cuanto a “como se deben hacer las cosas” no nos
lleva a ninguna parte
6. Agenda #netcoreconf
¿Quién soy?
• Leonardo Micheloni
• Developer +18 años
• Trabajo en Tokiota Madrid
• Microsoft MVP 8 años
• Auth0 Ambassador
• CSM 10 años
• https://twitter.com/leomicheloni
9. #netcoreconf
De qué vamos a hablar entonces?
• La vida real
• Mi, vida real
• Aprendizajes
• Experiencia
• Dar soluciones
• Ser ágiles
• Que mis tareas funcionen en el entorno que deben
• Cuaderno de recetas
11. #netcoreconf
¿De qué NO vamos a hablar?
• Arquitectura “correctas”
• Buenas prácticas
• “En un mundo ideal”
• “Esto es un anti-patrón”
• “No es la forma de hacer las cosas”
• “Esa es responsabilidad de…”
• No vamos a juzgar nada
• Show me the code running in the correct environment
12. #netcoreconf
Escenarios
• Existe algo hecho
• El cliente tiene know how de todo
• El cliente solo sabe que quiere usar eso
• Existe microservicios
• Escucharon la palabra “Docker” por ahí (o Kubernetes)
17. #netcoreconf
Docker
• Dockerfile
• Crear imagen
• Ejecutar container
• Puede tener comandos que debemos saber
• Puede depender de ficheros que deben copiarse durante el build
• Puede tener muchas variables de entorno
• Depende de runtimes que debemos especificar
24. #netcoreconf
Dependencias propias
• Nuestro servicio utiliza otros servicios propios
• Levantar esos otros servicios
• Probar resilencia
• Docker-compose
• Abrir puertos
• Tirar de las imágenes de desarrollo (autorización)
• Incluir ambos en la misma red de Docker
27. #netcoreconf
Servicios de terceros
• Qué pasa si dependemos de servicios de terceros?
• Base de datos
• Message brokers
• Docker-compose
• Usando las mismas versiones
• Estamos limitados si se usan clusters o cosas similares
29. #netcoreconf
Kubernetes
• Nuestra aplicación se va a ejecutar en K8S
• Lo ideal es utilizar un deployment local para probar
• Combinar Docker-compose con K8S Docker Desktop para
• Servicios de los que depende
• Servicios de terceros
• En estos casos es indispensable abrir los puertos en el Docker-compose
31. #netcoreconf
Desarrollo resumen
• Servicios de terceros
• Docker-compose
• Servicios que no estamos desarrollando ahora
• Docker-compose
• K8S docker desktop
• Probar escalamiento horizontal
• Tips
• Build local desde compose
• Push al registry de desarrollo
• Probar algo en dev con un tag temporal
36. #netcoreconf
El Pod no inicia
• get pods
• describe pod [pod_id]
• El pod se reinicia
• Entrar en el pod
• Exec –it
• Si no levanta no podemos
• Sobre escribir el comando en el deployment
44. #netcoreconf
Reflexión final
• En el mundo de la consultoría
• >Agilidad
• <Especialización
• -Silos de conocimiento
• +Velocidad de resolución de problemas
• +Capacidad de proponer diferentes soluciones
• >Ownership