Guía práctica de Kubernetes
Proyectos para crear aplicaciones de éxito con Kubernetes
Brendan Burns, Eddie Villalba,
Dave Strebel y Lachlan Evenson
Guía práctica de Kubernetes
Proyectos para crear aplicaciones
de éxito con Kubernetes
Brendan Burns, Eddie Villalba,
Dave Strebel y Lachlan Evenson
Edición original publicada en inglés por O’Reilly con el título Kubernetes Best Practices , ISBN 978-1-492-05647-8 © Brendan Burns, Eddie Villalba, Dave Strebel y Lachlan Evenson, 2020. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.
Título de la edición en español:
Guía práctica de Kubernetes
Primera edición en español, 2021
© 2021 MARCOMBO, S.L.
www.marcombo.com
Diseño de portada: Karen Montgomery
Ilustración: Rebecca Demarest
Traducción: Francisco Martínez Carreno
Corrección: Anna Alberola
Producció del ebook: booqlab
«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. La presente publicación contiene la opinión del autor y tiene el objetivo de informar de forma precisa y concisa. La elaboración del contenido, aunque se ha trabajado de forma escrupulosa, no puede comportar una responsabilidad específica para el autor ni el editor de los posibles errores o imprecisiones que pudiera contener la presente obra.»
ISBN: 978-84-267-3244-6
Prefacio Prefacio A quién va dirigido este libro Kubernetes es el estándar de facto para el desarrollo nativo en la nube. Es una potente herramienta que puede hacer que tu próxima aplicación sea más fácil de desarrollar, más rápida de desplegar y más fiable a la hora de operar. Sin embargo, para descubrir el poder de Kubernetes es necesario saber usarlo correctamente. Este libro está dirigido a cualquier persona que implemente aplicaciones del mundo real con Kubernetes y que esté interesada en aprender los diseños y las prácticas que se pueden emplear en las aplicaciones que se crean con esta herramienta. Es importante destacar que este libro no es una introducción a Kubernetes. Suponemos que tú, lector, estás familiarizado a nivel básico con la API y con sus herramientas, y que sabes cómo crear e interactuar con el clúster de Kubernetes. Este libro es un recurso para todos aquellos que quieran profundizar en cómo desplegar aplicaciones específicas y tareas en Kubernetes. Te será de utilidad tanto si estás a punto de desplegar tu primera aplicación con esta herramienta como si llevas años utilizando Kubernetes.
Reconocimientos Reconocimientos A Brendan le gustaría dar las gracias a su maravillosa familia, Robin, Julia y Ethan, por el amor y el apoyo que le brindan en todo lo que hace; a la comunidad de Kubernetes, sin la cual nada de esto sería posible; y a sus fabulosos coautores, sin los cuales este libro no existiría. A Dave le gustaría agradecer a su bella esposa, Jen, y a sus tres hijos, Max, Maddie y Mason, todo su apoyo. Agradece también a la comunidad de Kubernetes todos los consejos y la ayuda que ha brindado a lo largo de los años. Finalmente, le gustaría dar las gracias a sus coautores por hacer realidad esta aventura. A Lachlan le gustaría agradecer a su esposa y a sus tres hijos su amor y su apoyo. También le gustaría dar las gracias a todos los componentes de la comunidad de Kubernetes, incluidas las maravillosas personas que han dedicado su tiempo a enseñarle a lo largo de los años. Quisiera enviar un agradecimiento especial a Joseph Sandoval por su tutoría. Y, finalmente, querría dar las gracias a sus fantásticos coautores por hacer posible este libro. A Eddie le gustaría agradecer a su esposa, Sandra, su apoyo moral y que lo dejara desaparecer durante horas para escribir mientras ella estaba en el último trimestre de su primer embarazo. También le gustaría agradecer a su nueva hija, Giavanna, el impulso que le ha dado para seguir adelante. Finalmente, querría dar las gracias a la comunidad de Kubernetes y a sus coautores, que siempre han sido guías en su viaje para convertirse en un nativo de la nube. A todos nos gustaría agradecer a Virginia Wilson su trabajo en el desarrollo del manuscrito y su ayuda a la hora de reunir todas nuestras ideas; y a Bridget Kromhout, Bilgin Ibryam, Roland Huß y Justin Domingus, por cuidar los detalles finales.
1. Configuración de un servicio básico CAPÍTULO 1 Configuración de un servicio básico En este capítulo se describen las prácticas para configurar una sencilla aplicación multinivel en Kubernetes. La aplicación consta de una aplicación web básica y de una base de datos. Aunque seguramente no se trata de la aplicación más complicada, es un buen ejemplo para comenzar a orientarnos en la administración de una aplicación en Kubernetes.
Visión general de la aplicación Visión general de la aplicación La aplicación que usaremos para nuestro ejemplo no es particularmente compleja. Es un sencillo servicio de publicaciones que almacena sus datos en un backend de Redis. Tiene un servidor de archivos estáticos independiente que usa NGINX. Presenta dos rutas web en una sola URL. Una de ellas es para la interfaz de programación de aplicaciones (API) RESTful de la publicación, https://my-host.io/api , y la otra es un servidor de archivos en la URL principal, https://my-host.io . Utiliza el servicio Let’s Encrypt para administrar certificados de la capa de conexión segura (Secure Sockets Layer) (SSL). La Figura 1-1 presenta el diagrama de la aplicación. A lo largo de este capítulo vamos a ir creando esta aplicación, usando en primer lugar archivos de configuración YAML y después diagramas de Helm. Figura 1-1 Diagrama de la aplicación.
Gestión de archivos de configuración
Creación de un servicio replicado mediante Deployments
Mejores prácticas para la gestión de imágenes
Creación de una aplicación replicada
Configuración de Ingress externa para tráfico HTTP
Configuración de la aplicación con ConfigMaps
Gestión de autenticación con Secrets
Despliegue de una sencilla base de datos con estado
Creación de un equilibrador de carga TCP con Services
Uso de Ingress para enrutar el tráfico a un servidor de archivos estáticos
Parametrización de la aplicación utilizando Helm
Mejores prácticas en el despliegue de servicios
Resumen
2. Flujos de trabajo para desarrolladores
Objetivos
Creación de un clúster de desarrollo
Configuración de un clúster compartido por varios desarrolladores
Registro de usuarios
Creación y dotación de seguridad a un espacio de nombres
Administración de espacios de nombres
Servicios a nivel de clúster
Habilitación de flujos de trabajo para desarrolladores
Instalación inicial
Preparación de la fase de desarrollo activo
Preparación de pruebas y depuración
Mejores prácticas en el establecimiento de un entorno de desarrollo
Resumen
3. Monitorización y recopilación de registros en Kubernetes
Читать дальше