Guía rápida y Consejos para Rendir CKA

portada

El Examen en Líneas Generales

El examen de certificación internacional CKA ó “Certified Kubernetes Administrator” ó “Administrador de Kubernetes Certificado” ó “Sé Kubernetes y tengo un papel que lo prueba xD” es una de las certificaciones más valiosas en el mundo Cloud Native a mi modo de ver, o al menos es de las más interesantes y divertidas tanto a la hora de estudiarla como a la hora de rendirla, tomé esta certificación hace algunos meses y en verdad me pareció algo totalmente disruptivo con respecto a por ejemplo las típicas certificaciones cloud (rendí algunas certs de aws y azure previas a rendir CKA) ya que en las certificaciones de AWS por ejemplo, nos encontramos con un examen de certificación de tipo “multiple choice” con entre 65 y 70 preguntas basadas en escenarios, y en las certificaciones de Azure es más o menos el mismo esquema de examen salvo por algunos escenarios hands on que te abren el Azure Portal en pleno examen. Sin embargo con CKA te encontrarás con un examen 100% hands on, son básicamente 2 horas para resolver escenarios con clusters de kubernetes reales, pueden ser entre 17 y 20 escenarios en donde pondrán a prueba todos sus skills (y su rapidez) para resolver problemas únicamente utilizando kubectl, etcdctl y kubeadm en otras CLI tools.

Es una certificación muuuuuuuuuuuuuuuyyyyy larga de estudiar, y es una certificación de tipo “ADMINISTRATOR” es decir, muchas cosas estarán orientadas a instalaciones y mantenimiento de los componentes de Kubernetes en su totalidad (etcd, kubelet, schedulers, controllers etc.) y se centra bastante en el hueso de como trabaja Kubernetes por detrás y en su arquitectura propiamente dicha, si tu quieres simplemente enfocarte en levantar workloads en un cluster en un cloud público con un servicio de tipo administrado (AWS EKS - Azure AKS - Google GKE - AliCloud ACK etc.) puedes opcionalmente tomar el examen CKAD (Certified Kubernetes Application Developer) que a pesar de tener la palabra DEVELOPER en el título, no significa que tu siendo un/a DevOps Eng. que no esté interesado/a en el desarrollo de aplicaciones, no lo puedas tomar, el CKAD simplemente se enfoca en los conceptos fundamentales y el conocimiento básico (con muy buena base) de los tipos de objetos principales que se manejan en un cluster (pods, deployments, configmaps, secrets, volumes, services, ingress objects etc.) pero sin tocar temas como por ejemplo solucionar problemas con algún controller, algún worker, o con una base de datos de tipo etcd, que en otras palabras es el escenario exacto (servicios más servicios menos, y tools mas tools menos) en el cual trabaja un Devops o Cloud eng que utilice cualquier cloud publico en su trabajo diario. Conclusión… ¿Quieres certificar kubernetes para trabajar con cloud públicos? CKAD es base suficiente (excelente base suficiente), quieres ir un poco más allá y saber cómo montar Kubernetes en un datacenter componente a componente, o quizás trabajas con cloud públicos pero deseas entender mejor qué sucede detrás del telón de una arquitectura fully managed con AKS, EKS, GKE etc. deberías estudiar y tomar CKA.

Consejos:

THE TIME:

La primera recomendación (y quizás la más importante) el tiempo es crucial, 2 horas es un tiempo muy limitado sobre todo teniendo en cuenta algunos escenarios que plantea el examen. Si sientes que no comprendes en la primer o segunda lectura el escenario, salta al siguiente escenario, hay muchas consignas basadas en levantar workloads o hacer un minimo troubleshooting que seguramente resolverás más rápido y te ahorrarán tiempo para luego volver sobre los escenarios más complejos o basados 100% en administración y mantenimiento de clusters o etcd.

Aliases

No hace falta meter una cantidad excesiva de alias en tus comandos, personalmente comprobé que con el “k” fue mas que suficiente, es decir un alias para kubectl, nada mas, luego puedes utilizar las abreviaturas nativas de los objetos por ejemplo en lugar de meter un alias para:

$ kubectl get pods

Con algo parecido a esto:

$ kgp

Puedes simplemente utilizar un alias para kubectl (alias k=kubectl) y luego llamar al subcomando get invocando al objeto con su abreviatura nativa:

$ k get po

Creanme que con ese tipo de cosas te alcanza y te sobra el tiempo en lo que respecta a tiempo de teclado

Te dejo algunas otras abreviaturas:

  • deploy = deployment
  • svc = service
  • pv = persistentvolume
  • pvc = persistentcolumeclaim
  • sa = serviceaccount
  • ns = namespace
  • netpol = networkpolicy
  • rs = replicaset
  • …hay muchas mas (y maaaas si entramos a hablar de crd’s)

Siempre verifica tu contexto de kubectl

Los 17 o 20 escenarios ocurren en 4 o 5 clusters reales, puede pasar que por los nervios o el hecho de que el tiempo corre te olvides de cambiar el contexto de kubectl y estes metiendo cambios en un cluster que no corresponde a la pregunta que estás abordando. Solo respira, tómate el tiempo de leer detenidamente el escenario a resolver, y como paso 0 siempre verifica que estas en el cluster correcto.

muchomuy

Utiliza uno de los comandos más espectaculares del mundo mundial: El Explain

Puedes utilizar este subcomando de kubectl para listar todas las opciones posibles en el manifest de definición de cualquier objeto de la API de k8s, osea….. es un comando muy copado sobre todo cuando no te acuerdas como son determinadas keys o subkeys en un manifest, con explain puedes listar las opciones y copiar los bloques de codigo que te sirvan para tu manifest, un ejemplo para persistentvolumes podria ser:

$ k explain pv --recursive | less

DRY-RUN

También puedes utilizar la flag dry-run (junto a un par de opciones) para armar esqueletos de manifests y luego modificarlos:

$ k create deploy --image nginx --dry-run=client -o yaml > deploy-skeleton.yaml

Vision general de objetos

A veces resulta útil a veces no, pero quizás por una cuestión de tener una idea general de lo que está funcionando en el cluster, pienso que es bueno tirar los comandos:

$ kubectl get all --all-namespaces

o en su forma corta nativa + alias:

$ k get all -A

Practica jsonpaths

kubectl en conjunto con jsonpaths se vuelven una herramienta muy poderosa en general para trabajar con k8s, irónicamente no se ven muchos administradores usandolo, existen un par de preguntas en CKA orientadas a este tema, pero más allá de eso les recomiendo el estudio de jsonpaths para el trabajo diario con k8s, ya que se puede obtener información mas completa a partir de estos, les dejo un par de enlaces con ejemplos útiles utilizando este poderoso recurso:

jsonpaths

mas ejemplos

Por último les dejo una lista de enlaces que me resultaron muy utiles para el estudio del CKA

Muchos éxitos en tu examen !!

Invitame un CaféInvitame un Café