¿Por qué es importante la orquestación de contenedores?

Completado

En esta unidad, puede seguir al equipo de Tailspin en su exploración de estrategias para entregar una nueva directiva de la administración. El equipo examina cómo Kubernetes puede ayudar en su transición a una arquitectura de microservicios.

Un futuro más pequeño

Las cosas parecen ir bien en Tailspin. En una reunión administrativa externa reciente, Andy presentó los últimos éxitos de su equipo con Azure DevOps, que fueron bien recibidos. También ofreció una demostración del reciente proyecto de prueba de concepto del equipo mediante contenedores de Docker. Estas demostraciones derivaron en una serie de conversaciones productivas sobre el futuro técnico de la organización. Andy volvió al día siguiente para compartir las noticias con el equipo web de Space Game.

Andy: La presentación de ayer fue todo un éxito. La administración está impresionada con el trabajo que hemos realizado hasta ahora y nos ha encargado una asignación especial.

Tim: Vaya. Mi experiencia me dice que aquí hay trampa.

Andy: No, se trata de una gran oportunidad para nosotros. A la administración le ha encantado nuestra demostración de los contenedores de Docker y quiere que analicemos 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 diferencia principal es que, en lugar de compilar e implementar una aplicación monolítica simple, debemos refactorizar todos los componentes que pueden mantenerse y administrarse mejor como servicios autónomos. Después, compilaremos esos servicios para que desempeñen bien su tarea correspondiente y los implementaremos para que funcionen de forma independiente.

Tim: No me acaba de convencer. Ya me encargo de muchísimos servicios en nuestros entornos. No sé si quiero ocuparme de más.

Andy: Entiendo que te preocupe. Por suerte, hay algunas herramientas magníficas para administrar cantidades grandes de contenedores en un entorno determinado. Se nos ha pedido que impulsemos una solución de varios contenedores orquestada con Kubernetes para nuestra aplicación web. También quieren saber cómo afectará a nuestro proceso de DevOps.

Mara: Me he estado informando 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: Parece un proceso complejo. ¿Cómo afectará a las pruebas?

Mara: No debería haber cambios significativos. Kubernetes nos ofrece una forma de implementar en distintos espacios de nombres. Esto nos permite particionar las implementaciones para poder tener entornos completos dedicados a pruebas frente a los dedicados a producción. Además, como todos se ejecutan en el mismo clúster y usan los mismos contenedores, las pruebas deberían ofrecer lo que esperamos ver en producción.

Amita: ¿No va a ser difícil llevar un seguimiento del entorno que se trata en cada caso?

Mara: No, podemos usar los entornos de Azure DevOps para todo. Mediante el portal se podrá averiguar dónde está cada servicio y cómo llegó allí. Todo está automatizado a través de la canalización, por lo que no será necesario realizar ningún seguimiento manual. Lo único que me preocupa ahora es cómo nuestra experiencia de desarrollo para la creación de todo esto se verá afectada.

Andy: La buena noticia es que el impacto es mínimo. Suponiendo que tenemos los proyectos configurados para compilar contenedores de Docker, todo lo que necesitamos implementar en Kubernetes son algunos archivos de manifiesto que describan los servicios y sus implementaciones.

Mara: ¿Se ha pensado en qué es lo que habrá que refactorizar como segundo contenedor? Sé que varios equipos nos han pedido que pongamos nuestra tabla de clasificación a disposición a través de una API web.

Andy: Ya me he anticipado a eso. Anoche bifurqué el proyecto de Docker y refactoricé la funcionalidad de los datos de la tabla de clasificación en su 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 usuario que quiera utilizar 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: Parece un proyecto impresionante. Vamos a empezar a actualizar la canalización de versión.

¿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 contenedores. Proporciona un marco para ejecutar sistemas distribuidos de forma declarativa y dinámica, y puede ejecutar contenedores en varios hosts, lo que supone un uso eficaz de los recursos y mayor confiabilidad.

El equipo de Tailspin ha seleccionado Kubernetes en este escenario porque cumple todos sus requisitos:

  • Complejidad de las implementaciones multicontenedor: Kubernetes está diseñado, sobre todo, para automatizar los procesos relacionados con la implementación y el mantenimiento de las implementaciones de contenedores.

  • Coherencia entre los entornos y las fases: del mismo modo que los contenedores garantizan una implementación coherente de las aplicaciones que engloban, Kubernetes la garantiza de los contenedores que administra un clúster.

  • Compatibilidad de Azure DevOps: Azure DevOps ofrece compatibilidad de primera clase para trabajar con Kubernetes.

  • Facilidad de implementación: el impacto de Kubernetes en un proyecto de código fuente es comparable al de agregar compatibilidad con Docker, es decir, un impacto mínimo que se limita a la configuración declarativa.

La adopción de Kubernetes simplifica radicalmente el proceso de adopción de una arquitectura de microservicios que usa varios contenedores de Docker.

Comprobación de conocimientos

1.

¿Cuál de las siguientes no es una buena razón para usar los microservicios?

2.

¿En qué se parecen Docker y Kubernetes?

3.

Supongamos que su equipo tiene varios proyectos de .NET Core en una solución que genera varios contenedores de Docker. ¿Qué nivel de sobrecarga requiere la adición de compatibilidad con Kubernetes?