Proyecto final: Implementación de sitios web en Kubernetes#
Objetivos#
- Crear imagenes de contenedores con Docker
- Instalar un cluster de Kubernetes
- Instalar un ingress controller en el cluster de Kubernetes
- Despliegue de sitios web en Kubernetes
- Configuración del certificado SSL en el ingress controller
Elementos de apoyo#
Material Escrito#
- Kube by Example - Container Fundamentals - Introduction to Containers 📝
- Introduction, Overview, Images, Registries, Hosts y Orchestration
- Kube by Example - Kubernetes Fundamentals 📝
kubectl
, Pods, ReplicaSets, Deployments, Labels y Services- Environment Variables, ConfigMaps, Secrets y Volumes
Videos#
Restricciones#
- La evaluación de este proyecto final corresponderá al último examen parcial del curso
- La fecha límite de entrega es el domingo 19 de junio de 2022 a las 23:59 horas
- Esta actividad debe ser entregada en equipo de acuerdo al flujo de trabajo para la entrega de tareas y prácticas
- Utilizar la carpeta
docs/proyectos/proyecto-final/Equipo-ABCD-EFGH-IJKL-MNOP
para entregar la práctica- Donde
Equipo-ABCD-EFGH-IJKL-MNOP
representa el nombre del equipo que debió anotarse previamente en la lista del grupo
- Donde
- Hacer un merge request a la rama
proyecto-final
del repositorio de tareas para entregar la actividad
- Utilizar la carpeta
Danger
- Esta actividad depende de los recursos implementados en la práctica 6 y práctica 7
- Se recomienda que se realicen las actividades previas siguiendo la calendarización con el objeto de dejar suficiente tiempo para la elaboración de este proyecto
Procedimiento#
Entregables#
-
Archivo
README.md
- Explicación del proceso de creación de las imagenes de contenedor
- Explicación del proceso de instalación de
k3s
en Debian 11 - Explicación del proceso de instalación del ingress controller en el cluster
- Explicación del proceso de despliegue de los sitios web en el cluster de Kubernetes
- Explicación de la configuración de SSL/TLS en el ingress controller
-
Carpeta
img
- Cada captura de pantalla tiene que ser referenciada en el archivo
README.md
- Capturas de pantalla donde se muestre la instalación de Docker Desktop
- Capturas de pantalla de los sitios web hospedados utilizando HTTP y HTTPS
- Cada captura de pantalla tiene que ser referenciada en el archivo
-
Carpeta
files
-
Cada archivo tiene que ser referenciado en el archivo
README.md
-
Archivos de configuración
- Incluir en un archivo
tar.gz
el contenido del directorio/etc/letsencrypt
- Incluir en un archivo
tar.gz
el contenido del directorio/etc/rancher
- Incluir en un archivo
-
Archivos de bitácora
- Preparación de la máqina virtual de Azure (reducción de uso de CPU y RAM)
- Instalación de
k3s
en Debian 11 - Instalación de
kubectl
ykrew
en el equipo local - Instalación de
krew
en el equipo remoto - Bitácora de conexión a los puertos
80
y443
del cluster de Kubernetes - Bitácora de conexión al puerto 443 utilizando
openssl s_client
- Bitácora de comprobación de la validez del certificado SSL emitido por Let's Encrypt
- Bitácira de conexión a los sitios web hospedados utilizando HTTP y HTTPS
-
Archivos de datos
- Archivos
Dockerfile
para los contenedoreslinux-doc
ytareas-redes
- Incluir en un archivo
tar.gz
el contenido del directorio/var/www/html
de la máquina virual de Azure - Archivo
cert.txt
que es la representación en texto del certificado SSL emitido por Let's Encrypt
- Archivos
-
Recursos de Kubernetes
- Exporta los recursos del cluster de Kubernetes utilizando
kubectl
- Quita los campos innecesarios utilizando el siguiente comando
kubectl neat < archivo.yaml > archivo.neat.yaml
- Anexa el archivo original (
archivo.yaml
) y el archivo sin campos extra (archivo.neat.yaml
) a tu reporte - Repite para todos los recursos de Kubernetes solicitados
- Explica cuales campos no necesarios se quitan en los recursos de tipo
deployment
,configmap
,secret
eingress
- Puedes utilizar el comando
diff -u archivo.yaml archivo.neat.yaml
para ver las diferencias
- Puedes utilizar el comando
- Exporta los recursos del cluster de Kubernetes utilizando
-
usuario@laptop ~ % kubectl get all --all-namespaces > recursos-kubernetes.log
usuario@laptop ~ % kubectl get all --all-namespaces -o yaml > recursos-kubernetes.yaml
usuario@laptop ~ % kubectl get nodes -o yaml
usuario@laptop ~ % kubectl get configmap index-equipo-aaaa-bbbb-cccc-dddd -n default -o yaml
usuario@laptop ~ % kubectl get deployment/root-nginx -n default -o yaml
usuario@laptop ~ % kubectl get deployment/linux-doc -n default -o yaml
usuario@laptop ~ % kubectl get deployment/tareas-redes -n default -o yaml
usuario@laptop ~ % kubectl get secret/nginx-ingress-tls -n default -o yaml
usuario@laptop ~ % kubectl get ingress ingress-nginx -n default -o yaml
usuario@laptop ~ % kubectl get deployment/ingress-nginx-controller -n ingress-nginx -o yaml
⇦ | ⇧ | ⇨ |
---|---|---|
Página anterior | Arriba | Página siguiente |