Descripción
Si desea crear aplicaciones con un sistema de organizació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 Comprender 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
Índice
Prefacio ........................................................................................................... xiii
Reconocimientos ............................................................................................ xvii
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Conclusión ................................................................................................ 283
Índice ............................................................................................................. 285