Kitabı oku: «Guía práctica de Kubernetes»

Yazı tipi:

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

Contenidos

Prefacio

Reconocimientos

1. Configuración de un servicio básico

Visión general 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

Métricas versus registros

Técnicas de monitorización

Formas de monitorización

Visión general de las métricas en Kubernetes

cAdvisor

Servidor de métricas

kube-state-metrics

¿Qué métricas debemos monitorizar?

Herramientas de monitorización

Monitorización en Kubernetes con Prometheus

Descripción general de la recopilación de registros

Herramientas para la recopilación de registros

Recopilación de registros mediante la pila EFK

Alertas

Mejores prácticas para monitorización, recopilación de registros y alertas

Monitorización

Recopilación de registros

Alertas

Resumen

4. Configuración, Secrets y RBAC

Configuración mediante ConfigMaps y Secrets

ConfigMaps

Secrets

Mejores prácticas habituales para las API de ConfigMap y Secrets

Mejores prácticas específicas en Secrets

RBAC

Manual de RBAC

Sujetos

Reeglas

Roles

RoleBindings

Mejores prácticas de RBAC

Resumen

5. Integración continua, pruebas y despliegue

Control de versiones

Integración continua

Pruebas

Compilación de contenedores

Etiquetados de imágenes de contenedores

Despliegue continuo

Estrategias de despliegue

Pruebas en producción

Configuración de una pipeline y realización de un experimento de caos

Configuración de CI

Configuración de CD

Realización de la actualización de puesta en marcha

Un sencillo experimento de caos

Mejores prácticas para CI/CD

Resumen

6. Versionado, versiones de lanzamiento y puesta en marcha

Versionado

Versiones de lanzamiento

Puesta en marcha

Todo junto

Mejores prácticas para versionado, versiones de lanzamiento y puesta en marcha

Resumen

7. Distribución y preproducción de aplicaciones a nivel mundial

Distribución de la imagen

Parametrización del despliegue

Tráfico con equilibrio de carga a nivel mundial

Puesta en marcha confiable de software a nivel mundial

Validación previa al despliegue

Región de canario

Identificación de los tipos de región

Elaboración de la puesta en marcha a nivel global

Cuando algo sale mal

Mejores prácticas de puesta en marcha a nivel mundial

Resumen

8. Administración de recursos

Planificador de Kubernetes

Predicados

Prioridades

Técnicas avanzadas de planificación

Afinidad y antiafinidad de cápsulas

nodeSelector

Manchas y tolerancias

Administración de recursos de cápsulas

Solicitud de recursos

Límites a los recursos y calidad de servicio de cápsulas

PodDisruptionBudgets

Mínimo disponible

Máximo no disponible

Administración de recursos mediante espacios de nombres

ResourceQuota

LimitRange

Escalado de clúster

Escalado manual

Escalado automático de clúster

Escalado de aplicaciones

Escalado con HPA

HPA con métricas personalizadas

Vertical Pod Autoscaler

Mejores prácticas en la gestión de recursos

Resumen

9. Interconexión, seguridad en red y malla de servicios

Principios de red en Kubernetes

Complementos de red

Kubenet

Mejores prácticas en Kubenet

El complemento CNI

Mejores prácticas en CNI

Servicios en Kubernetes

Tipo de servicio ClusterIP

Tipo de servicio NodePort

Tipo de servicio ExternalName

Tipo de servicio LoadBalancer

Ingress y controladores Ingress

Administración del protocolo HTTP

Mejores prácticas en servicios y controladores Ingress

Políticas de seguridad de red

Mejores prácticas en política de red

Mallas de servicios

Mejores prácticas en malla de servicios

Resumen

10. Seguridad de cápsulas y contenedores

API de PodSecurityPolicy

Habilitación de PodSecurityPolicy

Anatomía de PodSecurityPolicy

Retos de PodSecurityPolicy

Políticas con incumplimientos razonables

Mucho esfuerzo

¿Están interesados nuestros desarrolladores en aprender PodSecurityPolicy?

La depuración es engorrosa

¿Confiamos en artefactos fuera de nuestro control?

Mejores prácticas en PodSecurityPolicy

Siguientes pasos en PodSecurityPolicy

Aislamiento de tareas y RuntimeClass

Utilización de RuntimeClass

Aplicaciones del tiempo de ejecución

Mejores prácticas en aislamiento de tareas y RuntimeClass

Otras consideraciones sobre la seguridad

Controladores de admisión

Herramientas de detección de intrusiones y anomalías

Resumen

11. Política y gobierno del clúster

Por qué la política y la gestión son importantes

¿En qué sentido esta política es diferente?

Motor de políticas nativas en la nube

Introducción a Gatekeeper

Ejemplos de políticas

Terminología Gatekeeper

Restricción

Rego

Plantilla de restricción

Definición de plantillas de restricción

Definición de restricciones

Replicación de datos

UX (Experiencias de usuario)

Auditoría

Familiarizándonos con Gatekeeper

Siguientes pasos en Gatekeeper

Mejores prácticas en política y gestión

Resumen

12. Administración de varios clústeres

¿Por qué varios clústeres?

Consideraciones sobre la utilización de varios clústeres en el diseño

Administración de despliegues de varios clústeres

Patrones de despliegue y administración

Enfoque de GitOps para la administración de clústeres

Herramientas de administración de varios clústeres

Federation de Kubernetes

Mejores prácticas en la gestión de un conjunto de clústeres

Resumen

13. Integración de servicios externos y Kubernetes

Importación de servicios a Kubernetes

Servicios sin selector para direcciones IP fijas

Servicios basados en CNAME para nombres DNS fijos

Enfoques basados en controlador activo

Exportación de servicios desde Kubernetes

Exportación de servicios mediante equilibradores de carga internos

Exportación de servicios en NodePorts

Integración entre máquinas externas y Kubernetes

Compartición de servicios entre Kubernetes

Herramientas de terceros

Mejores prácticas en conexión de clústeres y servicios externos

Resumen

14. Ejecución de aprendizaje automático en Kubernetes

¿Por qué Kubernetes es ideal para el aprendizaje automático?

Flujo de trabajo del aprendizaje automático

Aprendizaje automático para administradores de clúster de Kubernetes

Entrenamiento del modelo en Kubernetes

Entrenamiento del primer modelo en Kubernetes

Entrenamiento distribuido en Kubernetes

Restricciones de recursos

Planificación de particularidades

Hardware especializado

Bibliotecas, controladores y módulos de kernel

Almacenamiento

Almacenamiento y distribución del conjunto de datos entre nodos esclavos durante el entrenamiento

Puntos de control y modelos de grabación

Interconexión

Protocolos especializados

Preocupaciones del científico de datos

Mejores prácticas en aprendizaje automático en Kubernetes

Resumen

15. Creación de patrones de aplicaciones de alto nivel sobre Kubernetes

Enfoques para desarrollar abstracciones de alto nivel

Extensión de Kubernetes

Extensión de clústeres de Kubernetes

Ampliación de la experiencia de usuario de Kubernetes

Consideraciones de diseño en la creación de plataformas

Apoyo a la exportación de una imagen de contenedor

Soporte a los mecanismos existentes de servicios y descubrimiento de servicios

Mejores prácticas en la creación de plataformas de aplicaciones

Resumen

16. Gestión de aplicaciones con estado y apátridas

Volúmenes y montajes de volumen

Mejores prácticas en volúmenes

Almacenamiento en Kubernetes

PersistentVolume

PersistentVolumeClaims

Clases de almacenamiento

Interfaz de almacenamiento de contenedores y FlexVolume

Mejores prácticas en almacenamiento de Kubernetes

Aplicaciones con estado

StatefulSets

Operadores

Mejores prácticas en StatefulSet y Operators

Resumen

17. Control de admisión y autorización

Control de admisión

¿Qué son?

¿Por qué son importantes?

Tipos de controladores de admisión

Configuración de webhooks de admisión

Mejores prácticas en control de admisión

Autorización

Módulos de autorización

ABAC

RBAC

Webhook

Mejores prácticas de autorización

Resumen

18. Conclusión

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.

Por qué hemos escrito este libro

Entre los cuatro autores, acumulamos mucha experiencia ayudando a una gran cantidad de usuarios a desplegar sus aplicaciones en Kubernetes. A través de esta experiencia, hemos visto dónde encuentran más dificultades los usuarios, y los hemos ayudado a encontrar su camino hacia el éxito. Cuando nos sentamos a escribir este libro, intentamos plasmar estas experiencias para que muchas más personas pudieran aprender con las lecciones que asimilamos de la escucha de las necesidades de los usuarios. Esperamos que al ponerlo por escrito podamos difundir nuestro conocimiento y ayudarte a que puedas implementar y administrar con éxito tu aplicación en Kubernetes.

Exploración del libro

Aunque el libro se puede leer de principio a fin en una sola sesión, no es así como pretendemos que se haga. Lo diseñamos como una colección de capítulos independientes; cada capítulo ofrece una visión general completa de una tarea en particular de Kubernetes. Os animamos a que os sumerjáis en el contenido del libro para aprender sobre un tema o sobre algo en lo que tengáis un interés específico, y que luego lo dejéis para regresar a él solo cuando surja un nuevo tema.

A pesar de este enfoque independiente, hay algunos temas recurrentes a lo largo del libro. Por ejemplo, hay varios capítulos que tratan el desarrollo de aplicaciones en Kubernetes. El capítulo 2 se ocupa de los flujos de trabajo del desarrollador. El capítulo 5 trata sobre la integración continua y las pruebas. El capítulo 15 aborda la creación de plataformas de alto nivel sobre Kubernetes, y en el capítulo 16 se discute la gestión del estado de aplicaciones con estado. Además de tratar el desarrollo de aplicaciones, hay varios capítulos sobre servicios operativos en Kubernetes. El capítulo 1 se dedica a la configuración de un servicio básico, y el capítulo 3 trata la monitorización y las métricas. El capítulo 4 aborda la gestión de la configuración, mientras que el capítulo 6 se dedica a versiones y lanzamientos. El capítulo 7 se ocupa de la implantación de las aplicaciones a nivel mundial.

También hay varios capítulos sobre gestión de clústeres, incluido el capítulo 8 sobre gestión de recursos, el capítulo 9 sobre interconexión, el capítulo 10 sobre seguridad de cápsulas, el capítulo 11 sobre políticas y gobierno, el capítulo 12 sobre la administración de varios clústeres, y el capítulo 17 sobre control de admisión y autorización. Finalmente, hay varios capítulos que son totalmente independientes, que tratan sobre el aprendizaje automático (capítulo 14) y la integración con servicios externos (capítulo 13).

Aunque puede ser útil leer todos los capítulos antes de poner en práctica cualquier aspecto en el mundo real, tenemos la esperanza de que el libro se trate como un manual principal de referencia. Tiene la intención de ser una guía, ya que pone en práctica estos temas en el mundo real.

Convenciones que se utilizan en el libro

Este elemento indica un consejo o una sugerencia.

Este elemento indica una nota general.

Este elemento indica una advertencia o precaución.

Uso de los ejemplos de código

Hay material complementario actualizado (ejemplos de código, ejercicios, etc.) disponible para su descarga en https://oreil.ly/KBPsample.

Si tienes alguna pregunta técnica o algún problema cuando utilices los ejemplos de código, por favor, envía un correo electrónico a info@marcombo.com.

Este libro está aquí para ayudarte a hacer tu trabajo. Los códigos de ejemplo que se facilitan en este libro puedes usarlos en tus programas y documentación. No necesitas ponerte en contacto con nosotros para pedir permiso, a menos que vayas a reproducir una parte importante del código. Por ejemplo, escribir un programa que use varios fragmentos de código de este libro no requiere permiso; vender o distribuir ejemplos de los libros de Marcombo requiere permiso; responder a una pregunta citando este libro y citar un código de ejemplo no requiere permiso; y la incorporación de una cantidad importante de código de los ejemplos de este libro en la documentación de tu producto requiere permiso.

Generalmente no pedimos que se incluya una atribución, pero apreciamos que se haga. Una atribución contiene título, autor, editor e ISBN. Por ejemplo: Guía práctica de Kubernetes de Brendan Burns, Eddie Villalba, Dave Strebel y Lachlan Evenson, Editorial Marcombo, ISBN: 978-84-267-2880-7.

Si crees que el uso por tu parte de los ejemplos de código no está justificado o no respeta los permisos otorgados más arriba, no dudes en ponerte en contacto con nosotros en info@marcombo.com.

Türler ve etiketler

Yaş sınırı:
0+
Hacim:
353 s. 40 illüstrasyon
ISBN:
9788426732446
Yayıncı:
Telif hakkı:
Bookwire
İndirme biçimi:
Metin PDF
Ortalama puan 4,5, 2 oylamaya göre
Ses
Ortalama puan 0, 0 oylamaya göre
Metin
Ortalama puan 0, 0 oylamaya göre
Metin PDF
Ortalama puan 0, 0 oylamaya göre
Metin
Ortalama puan 0, 0 oylamaya göre