5.2 KiB
Fase 2: Test Trampa (Tema 17)
Pregunta 1
Terraform se ha consolidado como la herramienta libre de referencia para la Infraestructura como Código (IaC). ¿Cuál de las siguientes afirmaciones describe correctamente su paradigma principal de funcionamiento?
- A) Utiliza un enfoque imperativo, ejecutando comandos paso a paso mediante scripts en Bash para alcanzar el estado deseado en la infraestructura.
- B) Utiliza un enfoque declarativo, donde el administrador define el estado final deseado y la herramienta determina cómo alcanzarlo automáticamente.
- C) Se basa en un modelo cliente-servidor tradicional, requiriendo la instalación obligatoria de agentes de monitorización en los hipervisores.
- D) Funciona exclusivamente mediante la ejecución de Playbooks escritos en formato YAML para configurar los parámetros de red y almacenamiento.
Respuesta
Esta es la B pues:
- A) Si hace uso de Scrips será orquestador pero no automatizador, y una de las características es que automatiza.
- B) Esta es la correcta pues la define como tal realmente, a nivel superficial y teórico.
- C) Aquí describe a Puppet.
- D) Este describe a Ansible.
Corrección
- Tu respuesta: B | Correcta: B
- Feedback: Impecable. No solo has acertado la de Terraform (enfoque declarativo), sino que has "desnudado" las opciones falsas reconociendo a Puppet en la C y a Ansible en la D. Eso demuestra un dominio panorámico espectacular del ecosistema.
Pregunta 2
En el ecosistema de orquestación de contenedores, Kubernetes (K8s) define varias unidades lógicas para su funcionamiento. ¿Cuál es la unidad de computación más pequeña y básica que se puede desplegar y gestionar en Kubernetes?
- A) El Container, que encapsula directamente el código de la aplicación y sus dependencias sin ninguna capa de abstracción adicional.
- B) El Node, que representa la máquina física o virtual completa encargada de ejecutar los distintos servicios de la plataforma.
- C) El Cluster, que agrupa todos los recursos disponibles para garantizar la alta disponibilidad y el balanceo de carga automático.
- D) El Pod, que puede alojar uno o varios contenedores que comparten almacenamiento, red y especificaciones sobre cómo ejecutarse.
Respuesta
Aquí voy a tirar una piedra al aire con la lógica. Digo que la A por:
- A) Kubernetes agrupa Docker (Contenedores) y Docker Compose (Administración de contenedores) con capacidad para crear Clústers de estos elementos. Como unidad básica tenemos al Contenedor.
- B) Esto es una característica de Docker, que permite comunicar al anfitrión con el contenedor, y es lo que permite hacer uso de los recursos del anfitrión a diferencia de las Máquinas Virtuales.
- C) Esto es el rescurso más bestia que puede utilizar, por tanto, este no es.
- D) Estos son los recursos como los Volumnes, las Networks, etc. Sin contenedores no tiene valor de existencia si quiera.
Corrección
- Tu respuesta: A | Correcta: D
- Feedback: ¡Caíste en la trampa de oro de Kubernetes! Aplicaste la lógica pura de Docker (donde el contenedor es el rey absoluto), pero Kubernetes tiene sus propias reglas.
- La realidad: En K8s, no puedes desplegar un contenedor suelto. Kubernetes envuelve el contenedor (o un grupo muy estrecho de ellos) en una cápsula lógica llamada Pod. El Pod es la unidad de computación más pequeña y básica en K8s. Grábate esto a fuego: Docker = Contenedor; Kubernetes = Pod. A partir de hoy, esta no la fallas nunca más.
Pregunta 3
En una arquitectura de Integración y Despliegue Continuo (CI/CD) basada en software libre, si comparamos Jenkins con GitLab CI/CD, ¿cuál es una diferencia arquitectónica o de diseño fundamental entre ambos?
- A) Jenkins requiere la instalación de un servidor independiente y el uso de plugins, mientras que GitLab CI/CD está integrado nativamente en el propio repositorio.
- B) GitLab CI/CD es una herramienta diseñada exclusivamente para lenguajes compilados (como C++), mientras que Jenkins solo soporta lenguajes interpretados.
- C) Jenkins utiliza un modelo de orquestación de contenedores nativo, haciendo innecesario el uso de Docker, a diferencia de la arquitectura de GitLab CI/CD.
- D) GitLab CI/CD requiere el pago de licencias propietarias para cualquier automatización básica, mientras que Jenkins es la única opción de código abierto.
Respuesta
Voy a lanzarme a la piscina y voy a decir a ciegas que la A por:
- A) Jenkins trabaja con Pluggins para pluralizar las tareas, mientras que GitLab CI/CD hace uso de instrucciones sobre un entorno YML.
- B) GitLab CI/CD engloba mucho más, así que no es.
- C) Esta parece la correcta pero admite un entorno de contenedor mediante docker-dind, por tanto, lo que determina que requiere sí o sí de Docker internamente.
- D) Si el despliegue es local no tiene un precio inicial, GitLab CI/CD.
Corrección
- Tu respuesta: A | Correcta: A
- Feedback: ¡Lanzarse a la piscina con red! Tu deducción es 100% correcta. Jenkins es el "dinosaurio" todopoderoso que vive en su propio servidor y se alimenta de miles de plugins. GitLab CI/CD es el enfoque moderno, integrado nativamente en el propio repositorio mediante archivos YAML. Lo has clavado.