¿Por qué es importante la orquestación de contenedores?
- 7 minutos
En esta unidad, puede seguir al equipo de Tailspin a medida que exploran estrategias para cumplir con una nueva directiva de la administración. El equipo examina cómo Kubernetes puede ayudar en su transición a una arquitectura de microservicios.
El futuro es más pequeño
Las cosas están mejorando en Tailspin. En un sitio externo de administración reciente, Andy presentó los recientes éxitos de su equipo con Azure DevOps, que fueron bien recibidos. Andy también presentó una demostración del proyecto de prueba de concepto reciente del equipo mediante contenedores de Docker. Estas demostraciones llevaron a una serie de conversaciones productivas sobre el futuro técnico de la organización. El día siguiente, Andy vuelve a compartir las noticias con el equipo web de Space Game.
Andy: Las cosas fueron muy bien en mi presentación fuera del sitio ayer. La administración está impresionada con el trabajo que hemos hecho hasta ahora, y nos ha emitido una asignación especial.
Tim: Uh oh. Mi experiencia me dice que aquí hay trampa.
Andy: No, esta es una gran oportunidad para nosotros. A la administración le encanta nuestra demostración de contenedor de Docker y quiere que exploremos la adopción de una arquitectura de microservicios.
Amita: Microservicios? ¿Como aplicaciones para teléfonos y relojes?
Andy: No, los microservicios son aplicaciones típicas, como nuestra aplicación web. La principal diferencia es que, en lugar de compilar e implementar una sola aplicación monolítica, refactorizamos los componentes que se mantenerían y administrarían mejor como servicios autónomos. Después, creamos esos servicios para que sean buenos en lo que hacen e implementarlos para que funcionen de forma independiente.
Tim: No estoy seguro de que me gusta el sonido de eso. Ya me encargo de muchísimos servicios en nuestros entornos. No sé si quiero más en mi plato.
Andy: Es una preocupación comprensible. Afortunadamente, hay algunas herramientas excelentes para administrar una gran cantidad de contenedores en un entorno determinado. Se nos ha pedido que desarrollemos una solución de varios contenedores para nuestra aplicación web que se gestiona mediante Kubernetes. También quieren saber cómo afectará a nuestro proceso de DevOps.
Mara: He estado leyendo sobre Kubernetes. Es plenamente compatible con Azure a través de Azure Kubernetes Service y sé que Azure DevOps proporciona compatibilidad para las canalizaciones.
Amita: este proceso parece que va a ser complejo. ¿Cómo afectará a las pruebas?
Mara: No debería ser un cambio significativo. Kubernetes nos ofrece una forma de implementar en distintos espacios de nombres. Esto nos permite particionar nuestras implementaciones para que podamos tener entornos completos dedicados a pruebas frente a producción. Y dado que todos se ejecutan en el mismo clúster y usan los mismos contenedores, la experiencia de prueba debe ofrecer lo que esperamos ver en producción.
Amita: ¿Será difícil realizar un seguimiento de qué entorno está en dónde?
Mara: No, podemos usar entornos de Azure DevOps para hacer todo eso. Podrá averiguar dónde está cada servicio y cómo llegó allí mediante el portal. Todo está automatizado a través del proceso, por lo que no habrá nada que debamos realizar manualmente. La única preocupación que tengo ahora es el impacto que tendrá en nuestra experiencia de desarrollo al construirlo.
Andy: La buena noticia es que el impacto es mínimo. Suponiendo que tenemos nuestros proyectos configurados para compilar contenedores de Docker, todo lo que necesitamos implementar en Kubernetes son algunos archivos de manifiesto que describen los servicios y sus implementaciones.
Mara: ¿Ha pensado en lo que refactorizaremos como segundo contenedor? Sé que ha habido varios equipos que nos han pedido que hagamos que nuestra tabla de clasificación esté disponible a través de una API web.
Andy: Estoy un paso por delante de ti. Bifurqué el proyecto de Docker anoche y refactoricé funcionalidad de datos de tabla de posiciones en un microservicio propio. Esto nos deja con un contenedor para el sitio web y otro para una API de tabla de clasificación. Ambos contenedores están configurados para tener sus propios puntos de conexión públicos que podemos compartir con cualquier persona que quiera usar el sitio o la API, independientemente de la pila de tecnología que use su aplicación. Si la carga de cualquiera de ellos crece considerablemente, podemos escalar sus contenedores de forma independiente.
Mara: ¡Este proyecto suena increíble! Vamos a empezar a actualizar la tubería de despliegue.
¿Qué es Kubernetes?
Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza la implementación, el escalado y la administración de aplicaciones en contenedor. Proporciona un marco para ejecutar sistemas distribuidos de forma declarativa, dinámica y puede ejecutar contenedores en varios hosts, lo que proporciona un uso eficaz de los recursos y una mayor confiabilidad.
El equipo de Tailspin seleccionó Kubernetes para este escenario porque satisface todas sus necesidades:
Complejidad de las implementaciones de varios contenedores: Kubernetes está diseñado, en primer lugar, para automatizar los procesos en torno a la implementación y el mantenimiento de implementaciones de contenedores.
Coherencia entre entornos y fases: al igual que los contenedores garantizan una implementación coherente para las aplicaciones que contienen, Kubernetes garantiza una implementación coherente para los contenedores que administra un clúster.
Compatibilidad con Azure DevOps: Azure DevOps ofrece compatibilidad de primera clase para trabajar con Kubernetes.
Facilidad de desarrollo: el impacto de Kubernetes en un proyecto de origen es comparable al de agregar compatibilidad con Docker, que es mínimo y limitado a la configuración declarativa.
La adopción de Kubernetes simplifica drásticamente el proceso de adopción de una arquitectura de microservicios que usa varios contenedores de Docker.