Examen 4: 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#

Restricciones#

Danger

  • La evaluación de esta actividad corresponderá al cuarto examen parcial del curso

Warning

  • La fecha límite de entrega es el viernes 02 de junio de 2023 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/examenes/examen-kubernetes/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
    • Hacer un merge request a la rama examen-kubernetes del repositorio de tareas para entregar la actividad

Procedimiento#

Note

  • Revisa la fecha de caducidad de tu cuenta Azure for Students Starter o Azure Free Trial
  • Si la cuenta caduca pronto tienes un par de opciones:

Warning

Danger


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
  • 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
    • 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 y krew en el equipo local
      • Instalación de krew en el equipo remoto
      • Bitácora de conexión a los puertos 80 y 443 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 contenedores linux-doc y tareas-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
    • 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 e ingress
        • Puedes utilizar el comando diff -u archivo.yaml archivo.neat.yaml para ver las diferencias
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