IDAT - Microservicios con contenedores y Kubernetes
Esta presentación fue para la institución educativa IDAT de Tomas Valle con motivo de su Tech Fest 2019. Fue un honor haber recibido la invitación y compartir con profesores y alumnos.
módulos de software de manera independiente. Esto nos permite involucrarnos en diferentes equipos de proyectos y escribir código para micro servicios en diferentes lenguajes de programación. • Oportunidad para aplicar las últimas tecnologías para desplegar un nuevo servicio. Los desarrolladores son libres de escoger la tecnología que consideren idónea para el proyecto. • Desarrollo de software rápido. Los desarrolladores pueden desplegar sus módulos de forma independiente sin tener que esperar hasta que los otros componentes estén listos. • Entrega de software continuo. Los módulos de software pueden ser entregados continuamente en partes. • Fácil de entender y modificar el software. Las pequeñas piezas son fáciles de aprender para nuevos miembros del equipo , de manera, que pueden involucrarse de manera mas rápida. • Aislamiento de fallas. Las fallas en un simple módulo no afectan al resto de la aplicación.
tienen que poner esfuerzo adicional para la integración entre micro servicios. • Incremento en esfuerzo para el área de operaciones, despliegue y monitoreo. Cada micro servicio es una unidad de despliegue separada y que va a ser liberada, probada y monitoreada. Asimismo, cada servicio necesita una base de datos separada. • Los cambios entre servicios dependientes puede ser un dolor de cabeza. Si necesitas hacer un cambio que afecte a diferentes servicios dependientes, tienes que hacer modificaciones en todos los servicios involucrados. Este procedimiento también requiere cooperación entre distintos equipos de desarrollo. • Las pruebas son tediosas y complicadas. Tu necesitas probar los servicios junto con los otros servicios dependientes. • Duplicidad en el uso de memoria. Diferentes clases y librerías son frecuentemente duplicadas en los contextos de micro servicios.
buenísimo para crear tus primeros contenedores. Pero, tan pronto, necesitas escalar/crecer/bajar y/o distribuir la carga de tus aplicaciones, tu necesitaras un orquestador – tu necesitaras Kubernetes.
promociones para ambas marcas y un administrador en el cual poder visualizar y exportar los datos de los clientes registrados por marca. Caso: Promociones Multimarca
desplegar y administrar aplicaciones en contenedores en un sistema operativo común (OS), con un ecosistema de herramientas que la soportan. • Minikube implementar un cluster de Kubernetes local en macOS, Linux, yWindows. • La herramienta Kubernetes command-line, kubectl, nos permite ejecutar comandos en nuestros clusters de Kubernetes. • El cluster de Kubernetes se ejecuta dentro de una maquina virtual https://www.virtualbox.org/ NOTA: Vamos a trabajar con Java 11
start –h --vm-driver: VM driver de cualquier de esta lista: virtualbox parallels vmwarefusion kvm xhyve hyperv hyperkit kvm2 vmware none. El default es "virtualbox" --memory int: Cantidad de RAM reservada para el minikube VM in MB (El default es 2048) --cpus int: Número de CPUs reservado para el minikube VM (El default es 2) --profile: El nombre de el minikube VM que va a ser usado. Esto puede ser modificado para permitir tener multiples instancias de minikube que van a correr de forma independiente (por default "minikube") Ejemplo: minikube start -p dev.to --cpus 2 --memory=4096
Dashboard to get an overview of applications running on your cluster, as well as for creating or modifying individual Kubernetes resources (such as Deployments, Jobs, DaemonSets, etc).
Ingress expone rutas HTTP y HTTPS desde fuera del cluster a servicios al interior del cluster. El Trafico es controlado por reglas definidas en el recurso Ingress.
que nos permite controlar la generación de ejecutables y otros archivos que no son parte del código fuente de un programa. • Usaremos "Make" para automatizar comandos maven y docker en este proyecto. Hay que verificar nuestra instalación de Make. Tipea make --version en la terminal. Si no aparece nada, por favor, instala make antes de continuar.
imagen docker con el nombre "java-k8s" run:db: Inicia un nuevo contenedor para la base de datos mysql run:app: Inicia un contenedor nuevo de la aplicación Escribir en este orden: • make build • make run:db • make run:app Para ver el log de la aplicación: • docker logs -f myapp Notas: Usa CTRL+C para salir del modo log. Escribe docker ps para ver como se ejecutan los contenedores. Observación: Espera 30 segundos entre run:db y run:app para dar tiempo a que levante la base de datos.
que se ejecuta en un conjunto de Pods como red de servicio. En el directorio mysql , nosotros tenemos solo archivos de deployment y service, porque las variables de entorno están en el mismo archivo.
deployment y service. Verifica si el servicio esta ejecutandose: kubectl get pods -n=dev-to Accede a la base de datos en localhost: kubectl port-forward -n=dev-to <pod_name> 3306:3306
por el cual acceder. Escribe: minikube -p=dev.to service -n dev-to myapp --url La dirección abajo será diferente para ti, cuando lo pruebas (lo más probable): http://192.168.99.133:30343 curl -X GET http://192.168.99.133:30343/persons
construir y desplegar aplicaciones al interior de un cluster de kubernetes. Para crear todo lo visto de un solo comando, ingresar a la terminal , ubicate en el directorio del proyecto y ejecuta: make k:setup && make k:deploy-db && make k:build-app && make k:deploy-app