Crea tu entorno para el CKAD
Introducción
Primero de todo ¿qué es el CKAD?, es una de las tres certificaciones de Kubernetes ofrecidas por la Linux Foundation. El significado de sus siglas nos puede arrojar más luz acerca de qué va esta certificación, Certified Kubenetes Application Developer; básicamente el manejo de aplicaciones dentro de un cluster de Kubernetes.
Existen otras dos certificaciones, el CKA y el CKS, la primera se basa en las habilidades que se requieren para administrar un cluster, la segunda versa sobre seguridad. En futuros artículos desgranamos ambas en detalle.
La Linux Foundation, se toma muy en serio sus certificaciones. En el caso del CKAD, se trata de una prueba técnica monitorizada vía videoconferencia. En todo momento un instructor vigila tus acciones para asegurar que no se copia.
Si consigues obtener esta certificación será un factor diferencial en tu CV de cara a encontrar o moverte de empleo.
Para preparar el examen del CKAD, necesitamos un entorno capaz de ejecutar Kubernetes. Esto sin duda puede convertirse en una barrera para muchas personas, pero aquí vienen las buenas noticias, gracias al editor VS Code y Docker, el 'setup' no puede ser más sencillo y fácil.
Antes de comenzar con los pasos para generar nuestro entorno, debemos considerar que el examen del CKAD se basa en el diseño, construcción y despliegue de aplicaciones en Kubernetes; por lo que no tendremos que preocuparnos de tareas relacionadas con la administración del clúster (eso es en el CKA).
¿Qué es lo que necesitamos? Pues básicamente un cluster ligero capaz de soportar las configuraciones que nos encontraremos en el examen, y fácilmente ejecutable en un entorno local, así evitamos costos adicionales de un servicio de cloud.
Opciones para ejecutar Kubernetes en un entorno en local
A la hora de ejecutar K8s en un entorno local tenemos diversas opciones, Minikube, K3s, Microk8s... Podemos echar un ojo a esta comparativa que nos ofrece el sitio de https://microk8s.io.
En este artículo nos centraremos en Minikube usado a través del plugin Dev Containers del editor VS Code.
Eligimos esta opción por su simplicidad y su alto grado de configurabilidad, que nos permitirá experimentar con todas las funcionalidades requeridas para el CKAD.
Requisitos para generar el entorno K8s
Para poder realizar los siguientes pasos en nuestros equipos debemos tener instalado:
Ambas herramientas se encuentran disponibles para macOS, Windows y Linux.
Cabe destacar que para obtener el Docker Engine en Windows y macOS la forma más directa es a través del Docker Desktop, que instala el Docker Engine junto con otras funcionalidades. En el caso de Linux a día de hoy podemos instalar el Docker Engine en 'stand alone mode', o usar el Docker Desktop
TL;DR;
A continuación resumimos los pasos que vamos a llevar a cabo para tener nuestro entorno listo:
Configuración DevContainers, este plugin nos permitirá generar manifiestos en los cuales declaramos los contenedores que VS Code va a utilizar para nuestro entorno de desarrollo. Gracias al plugin y a Docker tendremos la 'infraestructura' necesaria en nuestro sistema, lista para ser utilizada.
Habilitar Ingress. En el CKAD, nos pueden preguntar acerca de está carga de trabajo, que permite exponer las aplicaciones que se encuentran desplegadas dentro del cluster de K8s. Gracias a Minikube, prácticamente será trivial tenerlo disponible en nuestro entorno.
Habilitar Metrics Server. En el examen no nos preguntan directamente sobre el Metrics Server, pero este es necesario para poder utilizar el HPA (Horizontal Pod Autoscaler). Sobre este último si es posible que podamos encontrar algún tipo de pregunta.
Habilitar NetworkPolicy. Para que la
NetworkPolicy
pueda funcionar, el cluster de Kubernetes en el cual desplegamos esta funcionalidad, debe utilizar un plugin de red que la soporte. Afortunadamente Minikube soporta distintos plugins de red que nos permitirán usar laNetworkPolicy
.
Pasos
1. Configuración DevContainers
Con el Docker Engine ejecutándose en nuestro sistema y con Visual Studio Code instalado, abrimos una nueva instancia de VS Code, en el directorio de nuestra elección:
Activamos el plugin de Dev Containers:
Una vez activado, en la esquina inferior izquierda de VS Code veremos un icono de dos 'chevrons' enfrentados:
Pinchamos en el icono, y aparecerá ante nosotros un menú contextual. Seleccionamos la opción de Add Dev Containers Configuration Files...:
Ahora tenemos dos opciones, añadirlo a un directorio asociado al usuario o añadirlo al workspace
, el directorio de ficheros raíz desde el que hemos abierto VS Code. En nuestro caso seleccionamos la segunda Add configuration to workspace:
Escribimos en el menú contextual Ubuntu, y lo seleccionamos:
En el siguiente menú seleccionamos la versión de Ubuntu, jammy:
Escribimos helm y seleccionamos Kubectl, Helm and Minikube
Podemos seguir seleccionando paquetes, borramos el menú contextual, y escribimos docker in docker y seleccionamos Docker (Docker-in-Docker) devcontaieners. Esta última opción la seleccionamos para que Minikube pueda utilizar el Docker local como driver cuando se ejecute.
Por último, vamos a buscar el editor de texto Vim. Durante el examen tendremos acceso a dos editores Vi
o Vim
. Instalamos Vim
porque tiene más prestaciones, y durante el examen eso puede marcar la diferencia.
Con esto, estamos listos, pinchamos en ok
Seleccionar Keep defaults
Un nuevo fichero se ha añadido .devcontainer/devcontainer.json
, con todas las opciones seleccionadas anteriormente:
Ya estamos listo para levantar nuestro entorno, si volvemos a pinchar en el icono de la esquina inferior izquierda:
Aparece un nuevo menú contextual, que nos permite reabrir VS Code en un contenedor:
Después de seleccionar esta opción VS Code levanta la configuración a través de un contenedor con todas las características seleccionadas. La primera vez que lo hagamos puede tardar unos minutos:
Una vez haya terminado, abrimos una nueva terminal y ejecutamos:
minikube status
Humm... Minikube no existe... No worries, es perfectamente normal, nunca ha sido ejecutado previamente, vamos a ello:
minikube start
Después de unos minutos todo está configurado para utilizar el clúster creado por Minikube en local.
Vamos a comprobarlo, lanzado un simple comnando con kubectl
:
kubectl get nodes
2. Habilitando Ingress
Una de los principales motivos para seleccionar Minikube, es la facilidad con las que podemos añadir nuevas características al cluster. Uno de los objetos de K8s que debemos dominar para el CKAD, es el Ingress
, para habilitar el Ingress
, tan sólo tenemos que ejecutar:
minikube addons enable ingress
Podemos comprobar que el addon se ha añadido a la configuración de Minikube, ejecutando
minikube addons list
3. Habilitando Metrics Server
Otra de las funcionalidades que necesitamos en nuestro cluster de cara al examen es el Metrics Server. Sin esta funcionalidad, no será posible crear recursos del tipo HPA (Horizontal Pod Autoscaler)
minikube addons enable metrics-server
4. Habilitando NetworkPolicy
Lo último que necesitamos no es un addonSe trata de una interfaz de red que nos permite crear recursos en el cluster del tipo NetworkPolicy
. Afortunadamente Minikube soporta distintas opciones como Calico o Cilium, aquí vamos a utilizar Cilium:
minikube stop
minikube start --cni=cilium
Wrap Up
En este artículo hemos visto cómo configurar nuestro entorno para el CKAD. Espero que os sirva de ayuda, y ahorraros tiempo de cara a preparar el examen.
En el próximo artículo realizaremos las comprobaciones necesarias, para asegurar que todas las funcionalidades añadidas al clúster, se comportan como esperamos. Happy coding 😝, and stay tune!
Bootcamp Devops Online Lemoncode
Si tienes ganas de profundizar en el área de Devops, en Lemoncode te ofrecemos el Bootcamp Devops Online Lemoncode (tanto en versión en vivo como modalidad continua), con profesores de la talla de Gisela Torres (Microsoft Global Blackbelt for Developer Audience), Yolanda Azcunaga (Ingeniera de cloud en Google) ó Eduard Tomás (Expert Engineer en TheHubs y 10 años Microsoft MVP), además en está edición te damos soporte para que te puedas preparar la certificación CKAD.