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

  1. Comprender el formato y los requisitos del examen CKAD.
  2. Familiarizarse con los dominios de conocimiento cubiertos en el examen.
  3. Practicar con ejemplos y ejercicios prácticos que reflejan las tareas del examen.
  4. Proporcionar recursos adicionales para la preparación del examen.

  1. 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%

  1. 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: 80

Explicació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

  1. 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: ClusterIP

Explicación:

  • kind: Service: Define el tipo de recurso como un Servicio.
  • selector: Selecciona los Pods con la etiqueta app: 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

  1. 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

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  key1: value1
  key2: value2

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

  1. 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: 3

Explicación:

  • livenessProbe: Configura una sonda de liveness que realiza una solicitud HTTP GET a /healthz en 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

  1. 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.
  • ingress y egress: 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

  1. 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/data

Explicació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: 2Gi

Recursos 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

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

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados