martes, 8 de noviembre de 2022

Kubernetes y Docker de la mano de Scott Surovich y Marc Boorshtein

'Kubernetes and Docker. An enterprise guide' es un libro claramente técnico y especializado, que nos explica los conceptos y uso de todo un ecosistema de contenedores, claves en los planteamientos cloud y DevOps actuales, y en cuyo núcleo se encuentran los casi omnipresentes Docker y Kubernetes, especialmente este último, pero que los autores rodean de una larga serie de otras herramientas 'open-source'.

El libro comprende catorce capítulos agrupados en tres secciones como sigue:
  • 'SECTION 1 - DOCKER AND CONTAINER FUNDAMENTALS:' Presenta las ideas básicas sobre contenedores y Docker. Abarca tres capítulos:

    • 'Chapter 1 - Docker and container essentials:' Tras una muy breve explicación de la utilidad de los contenedores, explica, aunque con no demasiada extensión, algunos conceptos sobre Docker como las imágenes o el acceso a servicios. Y luego ya pasa a detallar aspectos muy prácticos y de tipo 'manos a la obra'. Así, explica cómo instalar Docker, cómo asignar permisos y cómo usar su interfaz de línea de comandos (CLI, 'Command Line Interface').

    • 'Chapter 2 - Working with Docker Data:' Comienza explicando la necesidad de persistencia en el mundo de los contenedores y eso le conduce a dedicar la mayor parte de lo que resta del capítulo a los llamados volúmenes Docker contando cómo se crean, montan, limpian y listan los volúmenes. Finaliza con una sección dedicada a 'tmpfs', un tipo de volúmenes en memoria.

    • 'Chapter 3 - Undestanding Docker Networking:' En la primera parte del capítulo habla de conceptos de conectividad y networking aunque trasladados a Docker. Recuerda ideas sobre los puertos TCP/IP y cómo hacer el 'binding' de servicios a puertos, para luego presentar los drivers de networking en Docker y explicar la idea del 'default bridge'. En la segunda parte explica el uso de comandos para realizar tareas como conectar un contenedor a una red, exponer servicios, exponer puertos, borrar redes o ejecutar un contenedor sin red.

  • 'SECTION 2 - CREATING KUBERNETES DEVELOPMENT CLUSTERS, UNDERSTANDIING OBJECTS AND EXPOSING SERVICES:' Se centra en clusters y Kubernetes. Incluye tres capítulos:

    • 'Chapter 4 - Deploying Kubernetes using KinD:' Un capítulo dedicado al despliegue de clusters Kubernetes locales, normalmente empleados como clusters de desarrollo o demostración, usando para ello la herramienta KinD. Se explican temas de detalle como las imágenes y luego se pasa a los aspectos prácticos de cómo instalar KinD y cómo crear y revisar un cluster. Se añade al final una sección, bastante técnica y detallada, dedicada a contar el uso de un balanceador de carga para Ingress.

    • 'Chapter 5 - Kubernetes Bootcamp:' Un capítulo en que, de una forma práctica, se revisan los conceptos más nucleares de Kubernetes. Primero se cuentan los diferentes elementos de un cluster Kubernetes distinguiendo entre los que se encuentran en el plano de control (API server, la base de datos etcd, kube-scheduler, kube-controller-manager y cloud-controller-manager) y los que se encuentran en los 'worker nodes' (kubelet y kube-cloud-proxy)

    • 'Chapter 6 - Services, Load Balancing and DNS:' Explica la exposición de servicios para su invocación desde el exterior introduciendo elementos avanzados como los repartidores de carga. Comienza recordando cómo funcionan los servicios incluyendo el detalle de cómo se crean y cómo se emplea DNS para resolver nombres. Luego explica los cuatro tipos de servicios (ClusterIP, NodePort, LoadBalancer y ExternalName) y luego se extiende explicando ideas sobre repartidores de carga y detallando tanto los balanceadores de nivel 7 (aplicación) como de nivel 4 (transporte). Finalmente se explica el uso de DNS externos y su integración con el balanceador de carga.

  • 'SECTION 3 - RUNNING KUBERNETES IN THE ENTERPRISE:' Se ocupa del despliegue real de Kuberntes y Docker en la empresa, con mucho foco en los aspectos de seguridad y rodeando a las herramientas principales de todo un ecosistema de herramientas 'open-source' complementarias. Incluye ocho capítulos:

    • 'Chapter 7 - Integrating Authentication into your Cluster:' Trata el tema de autenticación en los entornos Kubernetes. Primero se explica cómo Kubernetes identifica al invocante de un servicio y se introducen las ideas de grupos y cuentas de servicio. Luego se explica OpenID Connect, un protocolo de identidad federada y cómo se configura KinD para interactuar con él. Luego se presenta el mecanismo de impersonación de Kubernetes que no necesita de credenciales ni identidades OpenID y cómo se configura un cluster para usar este mecanismo.

    • 'Chapter 8 - RBAC Policies and Auditing:' Si el capítulo anterior estaba enfocado a la autenticación, este mira más hacia los otros dos mecanismos de la denominada triple AAA, es decir, la autorización (authorization) y audiitoria (audit). Prrimer repasa RBAC ('Role Based Access Control') y dedica bastante espacio a hablar de los roles para luego ver cómo ligar las identidades de una empresa con Kubernetes para implementar ese mecanismo de autorización. Luego se cubre la auditoría, explicando cómo crear una política ('policy') y cómo depurar políticas usando la herramienta 'audit2rbac'.

    • 'Chapter 9 - Deploying a Secured Kubernetes Dashboard:' A través del Dashboard se ilustra lo que los autores consideran un 'anti-patrón' de acceso que utiliza las capacidades 'proxy' o 'port-forward'. Primero se ilustra cómo el Dashbard sabe quién el es usuario y las opciones de autenticación. Se revisan luego los riesgos de autenticación y se finaliza revisando cómo desplegar un Dashboard con un proxy inverso.

    • 'Chapter 10 - Creating PodSecurity Policies:' Si en los capítulos anteriores el foco era securizar las APIs de Kubernetes, en este lo importante es securizar los nodos y con esa idea se abordan las denominadas PodSecutityPolicies (PSPs). Primero se explica en qué consisten estas PSPs y luego se ilustra cómo activarlas y, para finalizar, se revisan algunas alternativas a las PSPs.

    • 'Chapter 11 - Extending Security Using Open Policy Agent:' Con los mecanismos vistos en los capítulos anteriores de esta sección se cubren la mayor parte de las necesidades en materia de autenticación y autorización pero existen algunas casuísticas que quedan fuera. Para abordarlas se utilizan los denominados controladores dinámicos de admisión. En este capítulo se estudia el más popular de ellos: el Open Policy Agent u OPA. Se explica lo que es y cómo funciona incluyendo una descripción de su arquitectura. Se introduce brevemente Rego, un lenguaje para evaluación de políticas y se ilustra su uso para escribir políticas y para su depuración. Se finaliza explicando cómo se fuerza el cumplimiento de las políticas definidas con OPA.

    • 'Chapter 12 - Auditing using Falco and EFK:' En el capítulo se abordan mecanismos y herramienta de cara a la realización de auditoría procesando los logs. En ese caso, se emplea por un lado Falco para generar logos más ricos y el 'stack' EFK que incluye ElasticSearch, Fluent y Kibana para el procesamiento de esos logs. Al final, la mayor parte del capítulo está dedicado a Falco explicando sus principales conceptos, su configuración y su despliegue. Finaliza el capítulo con una descripción del kernel de Falco.

    • 'Chapter 13 - Backing Up Workloads:' Aborda la realización de copias de seguridad para lo que se usa la herramienta Velero. Primero se explican ideas generales sobre los backups de Kubernetes. Antes de entrar en Velero se describe cómo realizar un backup de la base de datos etcd. A continuación se describe MinIO una solución de almacenamiento compatible con Amazon AWS S3. Y luego ya se entra de lleno en Velero, explicando su instalación y confguración, su dashboard. A continuación se explica cómo se utiliza velero para la realización y restauración de backups y el uso de su interfaz de comandos.

    • 'Chapter 14 - Provisioning a Platform:' Como remate, este último capítulo se describe una plataforma completa para el despliegue de aplicaciones basada en lo visto en capítulos anteriores y que incluye el diseño de la 'pipeline', la preparación del cluster, el despliegue de GitLab, el despliegue de Tekton y el despliegue de ArgoCD.
'Kubernetes and Docker. An enterprise guide' es un buen libro pero desde luego no para principiantes. Los autores explicitan, de hecho, que ya presuponen en los lectores los conocimientos básicos de Docker y Kubernetes, aunque hacen una pequeña concesión en el capítulo 5 para hacer una especie de rápido repaso. En cualquier caso, claramente, el público de este libro es un público técnico, principalmente, arquitectos y administradores cloud/DevOps y con al menos medianos conocimientos de las arquitecturas cloud, del concepto de contenedores e ideas sobre DevOps. Sin esa base, la lectura es ardua y quizá de escaso aprovechamiento.

Sin embargo, con el punto de partida adecuado, es un libro que ofrece una visión a un tiempo amplia y detallada, con ejemplos y herramientas muy prácticos y realistas y con mucho foco en todo lo que tiene que ver con los mecanismos de seguridad: autenticación, autorización, auditoría y backup.

Una lectura, pues, bastante especializada. 

Scott Surovich

(Fuente: Traducción y ligera elaboración propia de su biografía en Amazon)

Scott Surovich
Scott Surovich ha estado en el mundo de la empresa durante más de 20 años y es actualmente Global container engineering lead en un banco Global Tier 1, trabajando en estándares sobre diseño y despliegue con Kubernetes, incluyendo el ecosistema que lo rodea. Sus puestos anteriores incluyen el trabajo en otros equipos globales de ingeniería incluyendo Windows, Linux y virtualización. Su experiencia empresarial le ha permitido trabajar con múltiples compañías en sus primeras ofertas Kubernetes, incluyendo Kasten, Reduxio, VMware y Google.

Scott posee las certificaciones CKA, CKAD, y Mirantis Kubernetes. Como integrante de un equipo piloto, fue una de las primeras personas en recibir la certificación Google Certified Hybrid Multi-Cloud Fellow.

Puedes saber más del autor visitando su perfil en LinkedIn o siguiéndole en Twitter donde se identifica como @surovich.

Marc Boorshtein

(Fuente: Traducción y ligera elaboración propia de su biografía en Amazon)

Marc Boorshtein
Marc Boorshtein ha sido ingeniero de software y consultor durante casi veinte años y actualmente es CTO de Tremolo Security, Inc. Marc ha invertido la mayor parte de su carrera construyendo soluciones de gestión de identidad para grandes empresas, agencias civiles del gobierno norteamericano y sistemas de seguridad pública de administraciones locales. En los últimos años, Marc se ha enfocado en aplicar la gestión de identidad a DevOps y Kubernetes, construyendo herramientas open-source para automatizar la seguridad de la infraestructura.

Marc está certificado como CKAD y se le puede encontrar en los canales slack de Kubernetes contestando preguntas sobre autenticación y autorización.

Puedes saber más del autor visitando su perfil en LinkedIn o siguiéndole en Twitter donde se identifica como @mlbiam.


Ficha técnica:

EDITORIAL: Packt Publishing
AÑO: 2020 
ISBN: 978-1839213403
PAGINAS: 526

No hay comentarios:

Publicar un comentario