El examen de Desarrollador de Aplicaciones Certificado de Kubernetes (CKAD) está diseñado para validar las habilidades y conocimientos de los desarrolladores en la creación, configuración y gestión de aplicaciones en Kubernetes. Este módulo te guiará a través de los conceptos clave, las habilidades prácticas y los recursos necesarios para prepararte y aprobar el examen CKAD.
Objetivos del Módulo
- Comprender el formato y los requisitos del examen CKAD.
- Familiarizarse con los dominios de conocimiento cubiertos en el examen.
- Practicar con ejemplos y ejercicios prácticos que reflejan las tareas del examen.
- Proporcionar recursos adicionales para la preparación del examen.
- Formato del Examen CKAD
El examen CKAD es un examen práctico basado en tareas que evalúa tu capacidad para realizar tareas en un entorno de Kubernetes. A continuación, se presentan los detalles clave del examen:
- Duración: 2 horas.
- Formato: Basado en tareas prácticas.
- Entorno: Se realiza en un entorno de Kubernetes en vivo.
- Puntuación mínima para aprobar: 66%.
- Idiomas disponibles: Inglés.
Dominios de Conocimiento
El examen CKAD cubre los siguientes dominios de conocimiento, cada uno con un peso específico:
| Dominio de Conocimiento | Peso (%) |
|---|---|
| Diseño y Construcción de Aplicaciones | 20% |
| Exposición de Aplicaciones | 20% |
| Configuración | 15% |
| Observabilidad | 15% |
| Servicios y Redes | 20% |
| Persistencia | 10% |
- Diseño y Construcción de Aplicaciones
Conceptos Clave
- Pods y Contenedores: Comprender cómo definir y gestionar Pods y contenedores.
- Deployments: Crear y gestionar Deployments para aplicaciones escalables.
- ConfigMaps y Secrets: Utilizar ConfigMaps y Secrets para gestionar la configuración de las aplicaciones.
Ejemplo Práctico
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80Explicación:
apiVersion: v1: Especifica la versión de la API de Kubernetes.kind: Pod: Define el tipo de recurso como un Pod.metadata: Proporciona metadatos como el nombre del Pod.spec: Define las especificaciones del Pod, incluyendo los contenedores y sus configuraciones.
Ejercicio Práctico
Tarea: Crea un Deployment llamado nginx-deployment con 3 réplicas utilizando la imagen nginx.
Solución:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
- Exposición de Aplicaciones
Conceptos Clave
- Servicios: Crear y gestionar servicios para exponer aplicaciones.
- Tipos de Servicios: ClusterIP, NodePort, LoadBalancer.
- Ingress: Configurar Ingress para gestionar el acceso HTTP/HTTPS a las aplicaciones.
Ejemplo Práctico
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIPExplicación:
kind: Service: Define el tipo de recurso como un Servicio.selector: Selecciona los Pods con la etiquetaapp: my-app.ports: Define los puertos del servicio y el puerto de destino en los Pods.
Ejercicio Práctico
Tarea: Crea un Ingress que dirija el tráfico HTTP a un servicio llamado my-service en el puerto 80.
Solución:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
- Configuración
Conceptos Clave
- ConfigMaps: Almacenar datos de configuración en un ConfigMap.
- Secrets: Almacenar datos sensibles en un Secret.
- Variables de Entorno: Pasar variables de entorno a los contenedores.
Ejemplo Práctico
Explicación:
kind: ConfigMap: Define el tipo de recurso como un ConfigMap.data: Almacena pares clave-valor de configuración.
Ejercicio Práctico
Tarea: Crea un Secret llamado my-secret con una clave username y un valor admin.
Solución:
apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: username: YWRtaW4= # 'admin' en base64
- Observabilidad
Conceptos Clave
- Logs: Acceder a los logs de los contenedores.
- Sondas de Salud: Configurar sondas de liveness y readiness.
- Eventos: Ver y gestionar eventos en el clúster.
Ejemplo Práctico
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 3
periodSeconds: 3Explicación:
livenessProbe: Configura una sonda de liveness que realiza una solicitud HTTP GET a/healthzen el puerto 80.
Ejercicio Práctico
Tarea: Configura una sonda de readiness para un contenedor que verifique el endpoint /ready en el puerto 8080.
Solución:
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
- Servicios y Redes
Conceptos Clave
- Servicios: Crear y gestionar servicios para exponer aplicaciones.
- Políticas de Red: Configurar políticas de red para controlar el tráfico entre Pods.
Ejemplo Práctico
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress:
- {}
egress:
- {}Explicación:
kind: NetworkPolicy: Define el tipo de recurso como una Política de Red.podSelector: {}: Selecciona todos los Pods.ingressyegress: Permite todo el tráfico de entrada y salida.
Ejercicio Práctico
Tarea: Crea una Política de Red que permita el tráfico de entrada solo desde Pods con la etiqueta app: frontend.
Solución:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend
spec:
podSelector: {}
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
- Persistencia
Conceptos Clave
- Volúmenes Persistentes (PVs): Crear y gestionar volúmenes persistentes.
- Reclamaciones de Volúmenes Persistentes (PVCs): Solicitar almacenamiento persistente.
- Clases de Almacenamiento: Definir clases de almacenamiento para gestionar diferentes tipos de almacenamiento.
Ejemplo Práctico
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/dataExplicación:
kind: PersistentVolume: Define el tipo de recurso como un Volumen Persistente.capacity: Especifica la capacidad de almacenamiento.accessModes: Define los modos de acceso.hostPath: Especifica la ruta en el host donde se almacena el volumen.
Ejercicio Práctico
Tarea: Crea una Reclamación de Volumen Persistente (PVC) que solicite 2Gi de almacenamiento con acceso ReadWriteMany.
Solución:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 2GiRecursos Adicionales
- Documentación Oficial de Kubernetes: kubernetes.io/docs
- Guía de Estudio CKAD: Guía de Estudio CKAD
- Simuladores de Examen: Utiliza simuladores de examen para practicar en un entorno similar al del examen real.
Conclusión
En este módulo, hemos cubierto los conceptos clave y las habilidades prácticas necesarias para prepararte para el examen CKAD. Asegúrate de practicar con los ejemplos y ejercicios proporcionados, y utiliza los recursos adicionales para profundizar en tu conocimiento. Con una preparación adecuada, estarás bien encaminado para aprobar el examen CKAD y convertirte en un Desarrollador de Aplicaciones Certificado de Kubernetes. ¡Buena suerte!
Curso de Kubernetes
Módulo 1: Introducción a Kubernetes
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Módulo 2: Componentes Principales de Kubernetes
Módulo 3: Gestión de Configuración y Secretos
Módulo 4: Redes en Kubernetes
Módulo 5: Almacenamiento en Kubernetes
Módulo 6: Conceptos Avanzados de Kubernetes
Módulo 7: Monitoreo y Registro
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster
