Preparación del examen CKAD
Cierre de la especialización de desarrollo: el plan de ataque para el CKAD (Certified Kubernetes Application Developer). Si vienes de leer la guía del CKA, buena parte de la logística es idéntica; aquí nos centramos en lo que hace al CKAD diferente: es el examen más rápido de los tres.
Cómo es el examen
- Formato: 100% práctico, 15-20 ejercicios en 2 horas, sobre varios clusters reales.
- Puntuación: se aprueba con un 66%; cada pregunta indica su peso.
- Documentación permitida: una pestaña con kubernetes.io/docs y los sitios oficiales (incluida la doc de Helm).
- Incluye: un retake gratuito y dos sesiones del simulador killer.sh. Validez de 2 años.
- Sin requisitos previos (a diferencia de la CKS, que exige la CKA).
La diferencia de carácter con el CKA: menos administración de cluster (no hay etcd, ni kubeadm, ni nodos rotos) y más volumen de ejercicios cortos de crear y configurar recursos. El CKAD se gana con dedos rápidos.
Temario oficial y dónde lo hemos cubierto
| Dominio | Peso | Capítulos del curso |
|---|---|---|
| Diseño y construcción de aplicaciones | 20% | 106, 109, 110, 301, 302, 116 |
| Despliegue de aplicaciones | 20% | 108, 303, 125 |
| Observabilidad y mantenimiento | 15% | 114, 124, 306, 203 (deprecaciones de API) |
| Configuración y entorno de aplicaciones | 25% | 115, 117, 118, 120 (service accounts), 119 (security context) |
| Servicios y redes | 20% | 111, 112, 304, 119 (network policies) |
Fíjate en que gran parte del CKAD vive en la parte común del curso: si la trabajaste bien, ya tienes el 70% hecho.
La estrategia: imperativo por defecto
En el CKAD, escribir YAML a mano es perder el examen. La secuencia mental para cada ejercicio:
- ¿Puedo resolverlo entero con un comando? (
kubectl run,create,expose,set,scale,label,annotate...) - Si no, genero el esqueleto con
$doy edito solo lo necesario. - Si el recurso no se puede generar (NetworkPolicy, PVC, Ingress...), plantilla de la documentación.
El repertorio imperativo que debe salir solo (todo visto en el curso):
export do="--dry-run=client -o yaml"
k run nginx --image=nginx --port=80 --env=MODE=prod --labels=app=web $do
k create deployment web --image=nginx --replicas=3 $do
k expose deployment web --port=80 --target-port=8080 --type=NodePort
k create job pi --image=perl -- perl -Mbignum=bpi -wle 'print bpi(100)'
k create cronjob backup --image=busybox --schedule="0 2 * * *" -- sh -c "echo backup"
k create configmap cfg --from-literal=k=v --from-file=app.properties
k create secret generic s --from-literal=pass=1234
k create sa mi-app
k create role r --verb=get,list --resource=pods
k create rolebinding rb --role=r --serviceaccount=default:mi-app
k autoscale deployment web --min=2 --max=8 --cpu-percent=70
k set image deployment/web nginx=nginx:1.27
k set env deployment/web MODE=debug
k set sa deployment/web mi-app
k rollout status/history/undo deployment web
Y los tres comandos de inspección que resuelven cualquier duda sin salir de la terminal:
k explain pod.spec.containers.securityContext # La spec exacta de cualquier campo
k api-resources # Nombres, grupos y abreviaturas
k get pod x -o yaml | less # Qué hay realmente desplegado
Los clásicos que caen (casi) seguro
- Pod multi-contenedor con volumen compartido (302): app + sidecar sobre un
emptyDir. - Init container que prepara algo para el principal (301).
- ConfigMap/Secret consumido como env y como volumen (115).
- Probes: añadir liveness/readiness a un deployment existente (114).
- Arreglar un pod roto: CrashLoopBackOff, imagen errónea, OOMKilled (306).
- Canary con dos deployments y reparto por réplicas (303).
- SecurityContext: runAsUser, capabilities, readOnlyRootFilesystem (119).
- NetworkPolicy que permita solo cierto tráfico (119).
- Ingress para un service existente (112).
- Job/CronJob con completions, parallelism o schedule (110).
- Service account en un deployment + RBAC básico (120, 121).
- Helm: instalar, actualizar o hacer rollback de una release (125).
- Deprecaciones de API: actualizar un manifiesto con apiVersion antigua (203).
Plan de entrenamiento
- Práctica diaria corta: el CKAD premia la memoria muscular. Mejor 30 minutos al día de ejercicios imperativos que un atracón semanal.
- Killercoda CKAD: escenarios gratuitos por tema.
- killer.sh: las dos sesiones incluidas. Más difícil que el examen real: úsalo para calibrar tiempos, no para hundirte la moral.
- Cronometra todo: si un ejercicio básico (deployment + service + probe) te lleva más de 4-5 minutos, repítelo hasta que no.
El día del examen
Los mismos consejos logísticos del CKA aplican (proctor, identificación, sala). Específicos del CKAD:
- Contexto y namespace: cada pregunta indica ambos.
kubectl config set-context --current --namespace=<ns>nada más empezar el ejercicio. - Triaje agresivo: con tantos ejercicios cortos, saltar rápido lo que se atasca es aún más rentable que en el CKA.
- Verifica el estado final: pod
Running, endpoints poblados, rollout completado. Es lo que puntúa.
¡A por ello! Y si después quieres el cinturón completo: CKA para administrar el cluster y CKS para asegurarlo.
- Lista de vídeos en Youtube: Curso Kubernetes