Conversation
| - Ejecuta un contenedor de `ubuntu`, instala `curl` dentro del mismo. | ||
| - ¿Con qué comando podrías preservar el cambio? | ||
| - Crea un `Dockerfile` que haga lo mismo. Ejecuta la nueva imagen y verifica que puedes usar `curl` | ||
| - ¿Cómo podrías ver las distaintas capas del contenedor? |
There was a problem hiding this comment.
Typo
Le acabo de pasar herramienta para poner ejercicios obligatorios y opcionales, instrucciones de uso etc...,si lo ves bien lo incorporas / modificas y palante, graacias
There was a problem hiding this comment.
Adjunto el .md por si fuera de ayuda
laboratorio_docker_completo.md
|
Tomando como base tu .md le he pedido a chat gpt que indique los pasos para arrancar, extienda explicación y ponga partes obligatorias y opcionales, dime que te parece: Laboratorio DockerEste laboratorio tiene como objetivo practicar los conceptos básicos de
Entrega del laboratorioEste laboratorio debe entregarse mediante un repositorio público en El repositorio debe contener un fichero: En este fichero deberás documentar:
El objetivo es que cualquier persona pueda seguir tu documentación y Ejemplo de entrega: Criterios de evaluaciónEl laboratorio se divide en:
Parte obligatoria (mínimo para aprobar)Debes completar correctamente los siguientes ejercicios:
Si estos ejercicios no funcionan o no están documentados, el Parte opcional (para subir nota)Estos ejercicios son muy sencillos y sirven para mejorar la nota. Puedes hacer uno o varios.
También puedes hacer una pequeña mejora en Docker Compose. Bonus sencilloAñade un servicio Debe:
Ejemplo <h1>Laboratorio Docker funcionando</h1>Si al abrir: aparece la página, el bonus estará completado. 1. Creando imágenesPaso 1Ejecuta un contenedor basado en la imagen: Accede a la terminal del contenedor. Instala apt-get update
apt-get install curlComprueba que funciona: curl --versionPregunta¿Con qué comando podrías guardar los cambios del contenedor como una Paso 2 --- DockerfileCrea un Ejemplo: FROM ubuntu
RUN apt-get update && apt-get install -y curlConstruye la imagen y ejecuta un contenedor. Comprueba que Pregunta¿Qué comando permite ver las capas de una imagen Docker? 2. Limpiando imágenes (opcional)Crea un Construye la imagen. Después modifica el Dockerfile para instalar:
Construye la imagen en cada cambio. Lista las imágenes: docker imagesPregunta: ¿Qué ocurre con las imágenes anteriores? 3. Volúmenes persistentesEjecuta un contenedor de: Usa un volumen Docker montado en: Crear tablaConéctate a la base de datos. Crea la tabla: CREATE TABLE items (
id SERIAL PRIMARY KEY,
name TEXT
);Inserta un registro: INSERT INTO items(name) VALUES ('item1');Comprobación
Comprueba que los datos siguen existiendo. 4. Bind mountsCrea un archivo en tu máquina: Ejemplo: <h1>Hola Docker</h1>Ejecuta un contenedor
Abre el navegador. Pregunta: ¿Qué ocurre si modificas el archivo 5. Auditando volúmenes (opcional)Investiga: ¿Qué comando permite ver dónde guarda Docker los datos de un 6. Creando redes privadasCrea una red llamada: Arranca dos contenedores Instala Desde un contenedor intenta hacer: ping otro_contenedorPregunta ¿Los contenedores pueden comunicarse entre sí? 7. Red none (opcional)Investiga: ¿Para qué serviría ejecutar un contenedor con red: 8. Multi-network (opcional)Crea dos redes: Arranca un contenedor en Pregunta: ¿Puedes conectarlo también a ¿Qué comando usarías? 9. Docker Compose --- Compartiendo volúmenesCrea un fichero: Con dos servicios. writerDebe:
readerDebe:
10. Docker Compose Profiles (opcional)Crea un
Haz que Crea dos perfiles: Perfil completoLevanta:
Perfil baseLevanta solo:
Resumen evaluaciónNivel Requisitos Aprobado Parte obligatoria completa |
| @@ -0,0 +1,77 @@ | |||
| # Ejercicios | |||
There was a problem hiding this comment.
Para este, también le he pedido que añada un previo explicando, ¿Crees que tendrámos que poner la parte obligatoria con menos apartados? El objetivo es que sea fácil para los alumnos que quieran sacar el curso y para los que tengan más inquitudes que tengan más chicha.
Lo dejo, por aquí
Laboratorio Kubernetes
En este laboratorio practicarás conceptos fundamentales de Kubernetes:
- Pods
- Deployments
- Rollouts
- Persistencia de datos
- Servicios
- Networking
- Ingress
- Gateway API
Entrega del laboratorio
Este laboratorio debe entregarse mediante un repositorio público en
GitHub.
El repositorio debe contener un fichero:
README.md
En este fichero deberás documentar:
- Los pasos que has realizado
- Los comandos utilizados
- Una breve explicación de cada paso
- Las respuestas a las preguntas del laboratorio
El objetivo es que cualquier persona pueda seguir tu documentación y
reproducir el laboratorio.
Ejemplo de entrega:
https://github.com/usuario/kubernetes-lab
Criterios de evaluación
El laboratorio se divide en:
- Parte obligatoria (necesaria para aprobar)
- Parte opcional (para subir nota)
Parte obligatoria (mínimo para aprobar)
Debes completar correctamente los siguientes ejercicios:
- Ejercicio 1 --- Naked Pod
- Ejercicio 2 --- Self-Healing Deployment
- Ejercicio 3 --- Zero-downtime Rollouts
- Ejercicio 4 --- PersistentVolumeClaim
- Ejercicio 6 --- Networking ClusterIP
Si estos ejercicios no funcionan o no están documentados, el
laboratorio no se considerará aprobado.
Parte opcional (para subir nota)
Puedes completar uno o varios de los siguientes ejercicios para mejorar
tu nota.
- Ejercicio 5 --- StorageClass
- Ejercicio 7 --- NodePort
- Ejercicio 8 --- Ingress Controller
- Ejercicio 9 --- Gateway API
- Ejercicio 10 --- Canary Deployment
1. Naked Pod
Levanta un Pod desde consola utilizando la imagen:
nginx:alpine
Comprobación
Verifica que el Pod está ejecutándose correctamente.
Limpieza
Borra el Pod que has creado.
2. Self-Healing Deployment
Crea un Deployment con:
- imagen
httpd:alpine - 3 réplicas
Comprobación
Verifica que las 3 réplicas están corriendo.
Experimento
Elimina manualmente uno de los Pods del Deployment.
Pregunta:
¿Qué ocurre pasado un tiempo?
Observación en tiempo real
Pregunta:
¿Qué comando puedes usar para ver cómo aparecen las réplicas en tiempo
real?
3. Zero-downtime Rollouts
Crea un Deployment utilizando la imagen:
nginx:1.19
Actualiza la imagen del Deployment a:
nginx:1.21
Pregunta:
¿Qué opciones tienes para actualizar la imagen sin eliminar el
Deployment?
Pregunta:
¿Qué comando puedes usar para verificar el estado del rollout?
4. PersistentVolumeClaim
Crea un:
PersistentVolumeClaim
solicitando:
1Gi
de almacenamiento.
Crea un Pod que monte el volumen.
Dentro del Pod crea un fichero en:
/temp
Comprobación
- Elimina el Pod
- Crea uno nuevo que monte el mismo PVC
- Comprueba que el fichero sigue existiendo
5. StorageClass (opcional)
Verifica si tu cluster tiene una:
StorageClass default
Crea un volumen usando esa StorageClass.
Comprueba que el volumen se ha creado correctamente.
6. Networking --- ClusterIP
Crea un Deployment con la imagen:
nginx
Expón el Deployment mediante un:
Service ClusterIP
Test de conectividad
Usa un Pod con imagen:
busybox
para conectarte al servicio.
Pregunta:
Si el Pod de busybox estuviera en otro namespace, ¿qué FQDN
deberíamos usar?
Pregunta:
¿Cómo podemos aislar completamente namespaces en Kubernetes?
7. Networking --- NodePort (opcional)
Convierte el servicio anterior a tipo:
NodePort
Comprueba que nginx sigue siendo accesible.
8. Networking --- Ingress Controller (opcional)
Crea dos Deployments usando YAML.
Usa la imagen:
hashicorp/http-echo
Ejemplo:
kind: Pod
apiVersion: v1
metadata:
name: apple-app
labels:
app: apple
spec:
containers:
- name: apple-app
image: hashicorp/http-echo
args:
- "-text=apple"Requisitos:
- Un Deployment devolverá red
- Otro Deployment devolverá yellow
Expón ambos mediante servicios.
Crea un Ingress con las rutas:
example.com/red
example.com/yellow
Comprueba el funcionamiento usando:
curl -H "Host: example.com"
Refactoriza el Ingress para usar un Virtual Host por cada
Deployment.
9. Gateway API (opcional)
Investiga:
Si quisiéramos utilizar Gateway API en lugar de Ingress:
¿Qué consideraciones deberíamos tener?
10. Canary Deployment (opcional)
Explica:
- Qué es un Canary Deployment
- Qué ventajas tiene
- Qué pasos se podrían seguir para implementarlo en Kubernetes
Resumen de evaluación
Nivel Requisitos
Aprobado Parte obligatoria completa
Notable Parte obligatoria + ejercicios opcionales
Sobresaliente Parte obligatoria + opcionales
There was a problem hiding this comment.
Adjunto el .md por si fuera de ayuda
No description provided.