Detalle del libro
Ver Índice
Prefacio xiii
Reconocimientos xvii
1 Configuración de un servicio básico 1
Visión general de la aplicación 1
Gestión de archivos de configuración 2
Creación de un servicio replicado mediante Deployments 4
Mejores prácticas para la gestión de imágenes 4
Creación de una aplicación replicada 4
Configuración de Ingress externa para tráfico HTTP 7
Configuración de la aplicación con ConfigMaps 8
Gestión de autenticación con Secrets 10
Despliegue de una sencilla base de datos con estado 13
Creación de un equilibrador de carga TCP con Services 17
Uso de Ingress para enrutar el tráfico a un servidor de archivos estáticos 19
Parametrización de la aplicación utilizando Helm 21
Mejores prácticas en el despliegue de servicios 23
Resumen 23
2 Flujos de trabajo para desarrolladores 25
Objetivos 25
Creación de un clúster de desarrollo 26
Configuración de un clúster compartido por varios desarrolladores 28
Registro de usuarios 28
Creación y dotación de seguridad a un espacio de nombres 31
Administración de espacios de nombres 33
Servicios a nivel de clúster 35
Habilitación de flujos de trabajo para desarrolladores 35
Instalación inicial 35
Preparación de la fase de desarrollo activo 37
Preparación de pruebas y depuración 38
Mejores prácticas en el establecimiento de un entorno de desarrollo 39
Resumen 39
3 Monitorización y recopilación de registros en Kubernetes 41
Métricas versus registros 41
Técnicas de monitorización 42
Formas de monitorización 42
Visión general de las métricas en Kubernetes 44
cAdvisor 44
Servidor de métricas 45
kube-state-metrics 46
¿Qué métricas debemos monitorizar? 47
Herramientas de monitorización 48
Monitorización en Kubernetes con Prometheus 50
Descripción general de la recopilación de registros 55
Herramientas para la recopilación de registros 57
Recopilación de registros mediante la pila EFK 58
Alertas 60
Mejores prácticas para monitorización,
recopilación de registros y alertas 62
Monitorización 62
Recopilación de registros 63
Alertas 63
Resumen 64
4 Configuración, Secrets y RBAC 65
Configuración mediante ConfigMaps y Secrets 65
ConfigMaps 66
Secrets 66
Mejores prácticas habituales para las API de ConfigMap y Secrets 68
Mejores prácticas específicas en Secrets 73
RBAC 74
Manual de RBAC 76
Sujetos 76
Reeglas 76
Roles 76
RoleBindings 77
Mejores prácticas de RBAC 77
Resumen 80
5 Integración continua, pruebas y despliegue 81
Control de versiones 82
Integración continua 82
Pruebas 83
Compilación de contenedores 84
Etiquetados de imágenes de contenedores 85
Despliegue continuo 86
Estrategias de despliegue 86
Pruebas en producción 92
Configuración de una pipeline y realización de un experimento de caos 93
Configuración de CI 94
Configuración de CD 97
Realización de la actualización de puesta en marcha 98
Un sencillo experimento de caos 98
Mejores prácticas para CI/CD 99
Resumen 100
6 Versionado, versiones de lanzamiento y puesta en marcha 101
Versionado 102
Versiones de lanzamiento 102
Puesta en marcha 103
Todo junto 104
Mejores prácticas para versionado, versiones de lanzamiento
y puesta en marcha 108
Resumen 110
7 Distribución y preproducción de aplicaciones a nivel mundial 111
Distribución de la imagen 112
Parametrización del despliegue 113
Tráfico con equilibrio de carga a nivel mundial 114
Puesta en marcha confiable de software a nivel mundial 115
Validación previa al despliegue 116
Región de canario 119
Identificación de los tipos de región 120
Elaboración de la puesta en marcha a nivel global 120
Cuando algo sale mal 122
Mejores prácticas de puesta en marcha a nivel mundial 123
Resumen 124
8 Administración de recursos 125
Planificador de Kubernetes 125
Predicados 125
Prioridades 126
Técnicas avanzadas de planificación 127
Afinidad y antiafinidad de cápsulas 127
nodeSelector 129
Manchas y tolerancias 130
Administración de recursos de cápsulas 131
Solicitud de recursos 132
Límites a los recursos y calidad de servicio de cápsulas 133
PodDisruptionBudgets 135
Mínimo disponible 136
Máximo no disponible 136
Administración de recursos mediante espacios de nombres 137
ResourceQuota 138
LimitRange 140
Escalado de clúster 142
Escalado manual 142
Escalado automático de clúster 142
Escalado de aplicaciones 143
Escalado con HPA 144
HPA con métricas personalizadas 146
Vertical Pod Autoscaler 146
Mejores prácticas en la gestión de recursos 147
Resumen 148
9 Interconexión, seguridad en red y malla de servicios 149
Principios de red en Kubernetes 149
Complementos de red 152
Kubenet 153
Mejores prácticas en Kubenet 153
El complemento CNI 153
Mejores prácticas en CNI 154
Servicios en Kubernetes 155
Tipo de servicio ClusterIP 156
Tipo de servicio NodePort 157
Tipo de servicio ExternalName 158
Tipo de servicio LoadBalancer 159
Ingress y controladores Ingress 161
Administración del protocolo HTTP 161
Mejores prácticas en servicios y controladores Ingress 162
Políticas de seguridad de red 163
Mejores prácticas en política de red 166
Mallas de servicios 168
Mejores prácticas en malla de servicios 169
Resumen 170
10 Seguridad de cápsulas y contenedores 171
API de PodSecurityPolicy 171
Habilitación de PodSecurityPolicy 172
Anatomía de PodSecurityPolicy 174
Retos de PodSecurityPolicy 183
Políticas con incumplimientos razonables 183
Mucho esfuerzo 184
¿Están interesados nuestros desarrolladores
en aprender PodSecurityPolicy? 184
La depuración es engorrosa 184
¿Confiamos en artefactos fuera de nuestro control? 184
Mejores prácticas en PodSecurityPolicy 184
Siguientes pasos en PodSecurityPolicy 185
Aislamiento de tareas y RuntimeClass 185
Utilización de RuntimeClass 187
Aplicaciones del tiempo de ejecución 187
Mejores prácticas en aislamiento de tareas y RuntimeClass 188
Otras consideraciones sobre la seguridad 188
Controladores de admisión 189
Herramientas de detección de intrusiones y anomalías 189
Resumen 189
11 Política y gobierno del clúster 191
Por qué la política y la gestión son importantes 191
¿En qué sentido esta política es diferente? 191
Motor de políticas nativas en la nube 192
Introducción a Gatekeeper 192
Ejemplos de políticas 193
Terminología Gatekeeper 193
Restricción 194
Rego 194
Plantilla de restricción 194
Definición de plantillas de restricción 194
Definición de restricciones 196
Replicación de datos 197
UX (Experiencias de usuario) 198
Auditoría 198
Familiarizándonos con Gatekeeper 200
Siguientes pasos en Gatekeeper 200
Mejores prácticas en política y gestión 200
Resumen 202
12 Administración de varios clústeres 203
¿Por qué varios clústeres? 203
Consideraciones sobre la utilización de varios clústeres en el diseño 206
Administración de despliegues de varios clústeres 208
Patrones de despliegue y administración 208
Enfoque de GitOps para la administración de clústeres 211
Herramientas de administración de varios clústeres 213
Federation de Kubernetes 214
Mejores prácticas en la gestión de un conjunto de clústeres 217
Resumen 218
13 Integración de servicios externos y Kubernetes 219
Importación de servicios a Kubernetes 219
Servicios sin selector para direcciones IP fijas 220
Servicios basados en CNAME para nombres DNS fijos 221
Enfoques basados en controlador activo 223
Exportación de servicios desde Kubernetes 224
Exportación de servicios mediante equilibradores de carga internos 225
Exportación de servicios en NodePorts 226
Integración entre máquinas externas y Kubernetes 227
Compartición de servicios entre Kubernetes 228
Herramientas de terceros 229
Mejores prácticas en conexión de clústeres y servicios externos 229
Resumen 230
14 Ejecución de aprendizaje automático en Kubernetes 231
¿Por qué Kubernetes es ideal para el aprendizaje automático? 231
Flujo de trabajo del aprendizaje automático 232
Aprendizaje automático para administradores de clúster de Kubernetes 234
Entrenamiento del modelo en Kubernetes 234
Entrenamiento del primer modelo en Kubernetes 235
Entrenamiento distribuido en Kubernetes 238
Restricciones de recursos 238
Planificación de particularidades 239
Hardware especializado 239
Bibliotecas, controladores y módulos de kernel 240
Almacenamiento 240
Almacenamiento y distribución del conjunto de datos entre nodos
esclavos durante el entrenamiento 241
Puntos de control y modelos de grabación 241
Interconexión 242
Protocolos especializados 242
Preocupaciones del científico de datos 243
Mejores prácticas en aprendizaje automático en Kubernetes 244
Resumen 245
15 Creación de patrones de aplicaciones de alto nivel sobre Kubernetes 247
Enfoques para desarrollar abstracciones de alto nivel 247
Extensión de Kubernetes 248
Extensión de clústeres de Kubernetes 249
Ampliación de la experiencia de usuario de Kubernetes 251
Consideraciones de diseño en la creación de plataformas 251
Apoyo a la exportación de una imagen de contenedor 252
Soporte a los mecanismos existentes de servicios y descubrimiento de
servicios 253
Mejores prácticas en la creación de plataformas de aplicaciones 253
Resumen 254
16 Gestión de aplicaciones con estado y apátridas 255
Volúmenes y montajes de volumen 256
Mejores prácticas en volúmenes 257
Almacenamiento en Kubernetes 258
PersistentVolume 258
PersistentVolumeClaims 259
Clases de almacenamiento 260
Interfaz de almacenamiento de contenedores y FlexVolume 261
Mejores prácticas en almacenamiento de Kubernetes 262
Aplicaciones con estado 263
StatefulSets 264
Operadores 266
Mejores prácticas en StatefulSet y Operators 267
Resumen 268
17 Control de admisión y autorización 269
Control de admisión 270
¿Qué son? 270
¿Por qué son importantes? 270
Tipos de controladores de admisión 271
Configuración de webhooks de admisión 272
Mejores prácticas en control de admisión 274
Autorización 277
Módulos de autorización 278
ABAC 279
RBAC 281
Webhook 281
Mejores prácticas de autorización 281
Resumen 282
18 Conclusión 283
Índice 285
Si desea crear aplicaciones con un sistema de orquestación de contenedores de la mano de auténticos expertos, ha dado con el libro indicado. Esta guía recoge las explicaciones y los consejos de cuatro profesionales que trabajan en el ámbito de Kubernetes y poseen un amplio manejo en sistemas distribuidos, desarrollo de aplicaciones empresariales y código abierto. Asimismo, muchos de los métodos que se presentan en el libro se fundamentan en experiencias de empresas que utilizan Kubernetes con éxito en la fase de producción y están respaldados con ejemplos concretos de código. Gracias a esta guía, esté o no familiarizado con los conceptos básicos de Kubernetes, aprenderá todo lo que necesita para crear las mejores aplicaciones. o Configurar y desarrollar aplicaciones con Kubernetes. o Aprender patrones para monitorizar, asegurar los sistemas, y administrar actualizaciones, implementaciones y procesos de vuelta atrás. o nComprender las políticas de red de Kubernetes y dónde encaja la red de servicios. o Integrar servicios y aplicaciones heredadas, y desarrollar plataformas del más alto nivel con Kubernetes. o Ejecutar tareas de aprendizaje automático en Kubernetes. Este libro es ideal para aquellas personas que están familiarizadas con los conceptos básicos de Kubernetes y que quieren aprender las mejores prácticas que se emplean habitualmente. Brendan Burns es un destacado ingeniero en Microsoft Azure y cofundador del proyecto de código abierto Kubernetes. Eddie Villalba es ingeniero de software en la división de Ingeniería de Software Comercial de Microsoft, y es experto en la nube de código abierto y en Kubernetes. Dave Strebel es arquitecto de la nube nativa global en Microsoft Azure, y es experto en la nube de código abierto y en Kubernetes. Lachlan Evenson es gerente principal del programa en el equipo de cómputo de contenedores en Microsoft Azure