Introducción
Os doy la bienvenida a este curso de Kubernetes, completamente gratuito, en el cual aprenderemos los conceptos básicos de esta tecnología de orquestación de contenedores hasta llegar a un nivel avanzado.
Todo el curso esta basado y enfocado en las certificaciones oficiales de kubernetes CKA, CKAD y CKS, Certified Kubernetes Administrator, Aplication Developer y Security Specialist respectivamente de la Cloud Native Computing Foundation (CNCF).
He optado por hacer una parte común del curso para las tres certificaciones, y luego, dividir el contenido en tres partes, enfocándonos en la perspectiva de cada una de ellas: desde el punto de vista del desarrolador para la certificación CKAD, del administrador de sistemas para la certificación CKA y del especialista en seguridad para la certificación CKS. Esto te permitirá prepararte para cualquiera de las tres certificaciones. Si no te interesa ninguna certificación, también te servirá para aprender Kubernetes desde cero hasta un nivel avanzado.
Puedes seguir todo el contenido del curso por escrito en mi página web pabpereza.dev o en esta lista de reproducción de Youtube.
Requisitos previos
Este curso está diseñado para principiantes, por lo que no necesitas tener conocimientos previos de Kubernetes. Sin embargo, es recomendable tener conocimientos básicos de contenedores y Docker, ya que Kubernetes esta basado en ellos. Si no tienes estos conocimientos, te recomiendo que tomes mi curso de Docker
Si estás aquí, también se presupone que tienes conocimientos básicos de sistemas operativos Linux, virtualización y redes. Vamos con el curso.
¿Qué es Kubernetes?
Kubernetes es una plataforma de código abierto que sirve para automatizar la implementación, escalado y operación de aplicaciones en contenedores. Fue desarrollado y utilizado por Google durante muchos años, internamente conocido como Borg, y luego liberado como código abierto en 2014 con el nombre de Kubernetes. Actualmente es uno de los proyectos más populares de la Cloud Native Computing Foundation (CNCF). Tras más de 10 años de desarrollo, Kubernetes se ha convertido en la plataforma de orquestación de contenedores más utilizada en la actualidad y es ampliamente adoptada por empresas de todo el mundo.
Kubernetes permite crear una capa de abstracción entre la infraestructura y las aplicaciones. Por ejemplo, teníendo múltiples servidores, te permite agruparlos en lo que llamariamos clúster y consumirlo como una pieza individual, permitiendo desplegar aplicaciones sobre todos los nodos del clúster de una forma transparente para el usuario.
Esto te permite a ti como desarrollador centrarte en la creación de aplicaciones, sin tener que preocuparte por la infraestructura subyacente. Si lo vemos desde el punto de vista del administrador, te permite dedicarte a mantener la infraestructura y los nodos del cluster sin tener que preocuparte por las aplicaciones que se desplieguien en el. Como ya vimos en el curso de Docker, la contenerización nos garantiza el funcionamiento de la aplicación en cualquier entorno, pues aqui Kubernetes lo lleva a otro nivel.
Un ejemplo práctico rápido, en un entorno tradicional, un administrador de sistemas tendría que provisionar una máquina virtual (con sus debidas configuraciones de red, paquetería, hardware...) por cada aplicación con los requisitos específicos de la misma.
En un entorno de Kubernetes (ejemplificado por cuatro servidores ubuntu con un nodo maestro y tres trabajadores), el administrador solo tendría que añadir y mantener los nodos del cluster, y cuando se solicita una nueva aplicación, se le podría asignar una reserva lógica de recursos del cluster, los cuales podrían ser consumidos por uno o varios desarrolladores de forma autónoma. Pero ya no le estaríamos dando una "máquina" sino un numéro de recursos cuatificados en CPU y RAM del cluster, que no tendrían por que ser un nodo en concreto.
Todo esto, bajo una potente capa de gestión de recursos, configuraciones de red, tolerancia a fallos, seguridad y escalabilidad.
¿Por qué Kubernetes?
Kubernetes es una herramienta poderosa que nos ofrece principalmente las siguientes ventajas, algunas mencionadas previamente.
- Escalabilidad: Permite escalar aplicaciones de forma automática en función de la demanda del usuario tanto de forma vertical como horizontal. Aumentando los recursos de la aplicación, creando más contenedores de la misma o incluso añadiendo más nodos al clúster.
- Resiliencia: En caso de fallo de un nodo o un contenedor, Kubernetes se encarga de reubicar la aplicación en otro nodo sano. Además, permite la replicación de aplicaciones para garantizar la disponibilidad.
- Automatización: Kubernetes automatiza muchas tareas de administración de aplicaciones, como el despliegue, la escalabilidad, auto-reparación, etc. Permitiendo simplificar la operativa de las aplicaciones y simplificando despliegues de tipo canary, blue-green u otros más complejos, sin pérdida de servicio.
- Estandarización: Al ser una plataforma de código abierto, Kubernetes se ha convertido en un estándar de facto en la orquestación de contenedores. Todas los servicios de nube ofrecen soporte para Kubernetes, además también puedes instalarlo en tu propio centro de datos. Esto te permite crear entornos interoperables entre si, permitiendo migrar fácilmente aplicaciones entre diferentes entornos o incluso creando entornos híbridos o multi-cloud.
- Ecosistema: cuenta con un amplio ecosistema de herramientas y servicios, que permiten extender su funcionalidad. Además, instalando una herramienta a nivel de plataforma, la podrías integrar automáticamente con todas las aplicaciones desplegadas en el clúster. Por ejemplo, un sistema de monitorización. Esto abstraería a los desarrolladores de tener que configurar la monitorización de sus aplicaciones individualmente. Mejorando así la eficiencia.
- Oportunidades laborales: es una tecnología muy demandada en el mercado laboral, por lo que tener conocimientos en Kubernetes puede abrirte muchas puertas en tu carrera profesional tanto como desarrollador, devops, sre, administrador de sistemas o especialista en seguridad.
- Comunidad activa: cuenta con una gran comunidad de desarrolladores y usuarios que contribuyen activamente al desarrollo y mejora de Kubernetes. Además de estar abanderado por la Cloud Native Computing Foundation (CNCF) y las principales empresas de tecnología del mundo. Por lo que tiene cuerda para rato.
- y muchas más...: que iremos viendo a lo largo del curso cuando consiga que te enamores de Kubernetes.
¿Qué aprenderás en este curso?
En este curso aprenderás tanto los conceptos básicos de Kubernetes como los avanzados, incluyendo:
- Arquitectura de Kubernetes: su diseño y cómo funciona internamente.
- Instalación de Kubernetes: tanto para tu entorno de desarrollo o producción.
- Gestión de clústeres: cómo administrar clústeres de Kubernetes y cómo escalar aplicaciones.
- Despliegue de aplicaciones: cómo implementar aplicaciones en Kubernetes y cómo gestionar su ciclo de vida.
- Monitorización y registro: trabajar con métricas y logs de aplicaciones desplegadas en Kubernetes.
- Seguridad: proteger las aplicaciones y los datos desplegados en Kubernetes.
- Práctica real: Realizarás ejercicios prácticos para reforzar los conceptos aprendidos y adquirirás experiencia en el uso de Kubernetes para un ámbito profesional.
- Certificaciones: te servirá de preparación para las certificaciones oficiales de Kubernetes CKA, CKAD y CKS.
¿Cómo seguir el curso?
Puedes seguir el curso de forma secuencial ya sea a través de mi web o la lista de vídeos de youtube. Cada entrada de la web corresponde a un vídeo de youtube.
Una vez que hayas terminado la parte común del curso, puedes elegir la parte que más te interese, ya sea la de desarrollador, administrador o especialista en seguridad. O incluso, si te interesa, puedes seguir las tres partes para obtener una visión completa de Kubernetes.
Recuerda utilizar el ÍNDICE DEL CURSO para navegar más cómodamente por el contenido.
Apoya este contenido gratuito dejando una estrella a este repositorio y suscribiéndote a mi canal de Youtube. Nos vemos en el siguiente capítulo.
- Lista de vídeos en Youtube: Curso Kubernetes