Mi viaje con Kubernetes

Hello World 🙂

Como sabemos, en los últimos años, Kubernetes se ha consolidado como el orquestador estándar de la industria para trabajar con contenedores. En esta entrada, compartiré mi feedback sobre mi viaje con esta poderosa herramienta y ofreceré algunos tips para aquellos que están dando sus primeros pasos en su uso.

¿Pero qué es Kubernetes?

Kubernetes es una plataforma portable y extensible de código abierto para administrar cargas de trabajo y servicios. Kubernetes facilita la automatización y la configuración declarativa. Tiene un ecosistema grande y en rápido crecimiento. El soporte, las herramientas y los servicios para Kubernetes están ampliamente disponibles
Fuente; sitio oficial de Kubernetes 

Con más de 3 años de experiencia continúa trabajando con Kubernetes(K8S), he logrado adquirir un nivel considerable de destreza en su uso. Si bien ya no me considero un usuario novato en K8S, siento que apenas estoy comenzando a explorar todo lo que este multiuniverso tiene para ofrecer.

Tuve la oportunidad de trabajar en una empresa que desarrollaba su propia distribución de Kubernetes. Esta experiencia me sumergió de lleno en el mundo de K8S, ya que teníamos que gestionar tanto el Control Plane como el Data Plane. Experimenté de primera mano los desafíos de trabajar con Kubernetes on-premise, donde cada detalle es crucial para garantizar la estabilidad del servicio. Fue una experiencia intensa pero muy enriquecedora.

Posteriormente, comencé a trabajar con la versión de AWS para Kubernetes, conocida como EKS (Elastic Kubernetes Service). Esta es una distribución respaldada por AWS que simplifica significativamente la administración. El cliente solo debe centrarse en el Data Plane, o sea seleccionar correctamente el tipo de instancia para su app, permitir las conexiones necesarias en la VPC donde estará corriendo el clúster y algún que otro detalle; pero AWS se hace cargo de todo lo relacionado con el Control Plane. Es una de las ventajas de los servicios administrados de AWS. La capacidad de integrar Kubernetes con una amplia gama de servicios de AWS demuestra el poder de esta distribución.

Al ver ambos lados de la moneda, pude comprender mejor las ventajas de utilizar Kubernetes tanto on-premise como en la nube de AWS. Estas experiencias me permitieron mejorar mi conocimiento sobre la arquitectura de Kubernetes, un requisito indispensable para sumergirse en su mundo.

Foto tomada de kubernetes.io

Una forma sencilla y barata que resultó invaluable en mi aprendizaje de Kubernetes fue tener instalado un clúster con Minikube en mi propia máquina. Esto me permitió validar muchos de los conceptos que iba aprendiendo en mi día a día. Considero que es uno de los primeros pasos que todo aquel que comience a trabajar con Kubernetes debería dar.

Con Minikube, puedes interactuar directamente con los diferentes recursos de Kubernetes, como pods, deployments, daemonsets, replicaset, etc, lo que facilita enormemente la comprensión de su funcionamiento y comportamiento. También nos brindará la oportunidad de practicar con una herramienta fundamental como lo es Kubectl. Esta herramienta nos permite interactuar con nuestros recursos en el clúster desde la consola utilizando una variedad de opciones, como create, run, get, delete, edit, exec etc.

Con Kubectl, exploraremos las dos formas principales de trabajar en Kubernetes: el enfoque imperativo (kubectl run mypod –image=nginx) y el enfoque declarativo (kubectl apply -f mypod.yaml). Cada uno tiene sus ventajas y desafíos, y comprender ambos métodos es fundamental para dominar Kubernetes. La práctica con Kubectl es esencial para familiarizarse con su sintaxis y su uso en la gestión de recursos en Kubernetes.

Kubernetes es una tecnología relativamente nueva que fue liberada por Google en 2014. Afortunadamente, cuenta con una amplia documentación y una comunidad activa de expertos en Internet. Seguir a estos expertos en LinkedIn y leer constantemente blogs con diferentes casos de uso ha sido valioso para mi crecimiento en este campo.

Es importante destacar que la mayoría de la información relevante sobre Kubernetes se encuentra en inglés, como sucede con muchas herramientas tecnológicas. Sin embargo, esto también represento una oportunidad para mejorar mi nivel de inglés 🙂 ¡Es como tener un 2×1 en beneficios!

Otra estrategia que me permitió aprender mucho fue realizar un par de cursos en la plataforma Udemy, los cuales recomiendo al 100%. El primero de ellos fue «Kubernetes al completo«, que me proporcionó una base sólida para entender los conceptos fundamentales de Kubernetes. El segundo curso, «Certified Kubernetes Administrator (CKA) with Practice Tests«, está diseñado específicamente para preparar la certificación CKA (Certified Kubernetes Administrator). Este curso me está ayudando a consolidar mis conocimientos y a prepararme para obtener mi primera certificación en Kubernetes, la CKA.

Es crucial comprender cuándo es apropiado utilizar Kubernetes, ya que no siempre es la mejor opción. Esta tecnología tiene una curva de aprendizaje pronunciada, y no todas las empresas están preparadas para asumir ese desafío. Implementar Kubernetes requiere un equipo con un profundo conocimiento de la herramienta, pues hacer troubleshooting en Kubernetes puede ser todo un desafío. A menudo digo que Kubernetes es fantástico hasta que surgen problemas, momento en el que puede generar bastante estrés. Sin embargo, la vida con EKS suele ser más placentera 🙂

En Kubernetes, al igual que en otras tecnologías, nos encontramos con diversos temas avanzados que, aunque pueden resultar tediosos, son fundamentales para un despliegue exitoso. Por ejemplo, el trabajo con volúmenes utilizando el controlador CSI correspondiente según la infraestructura en la que estemos trabajando. Otro aspecto importante es el control de acceso en el clúster (RBAC), que garantiza la seguridad y el cumplimiento normativo. Además, el manejo de secretos es crucial para proteger información confidencial, y para ello podemos recurrir a herramientas como HashiCorp Vault o Secrets Store CSI Driver.

Conclusiones

Kubernetes es una herramienta poderosa que simplifica significativamente nuestras operaciones. No debes temerle; simplemente comienza con tu clúster local, realiza algún curso o lee algunos artículos. Ten en cuenta que hoy en día, tener habilidades en Kubernetes es muy valorado en cualquier CV y abre numerosas oportunidades laborales, tanto en el ámbito de la infraestructura como en el desarrollo.

Espero que hayas disfrutado esta entrada tanto como yo. Si tienes algo más que añadir, ¡no dudes en dejarlo en los comentarios!

¡Nos vemos en la próxima entrada!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.