[Non-Linux] Introducción a los contenedores en FreeBSD con AppJail

Iniciado por DtxdF, Febrero 20, 2023, 05:11:25 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 20, 2023, 05:11:25 PM Ultima modificación: Febrero 20, 2023, 06:13:16 PM por DtxdF

Fuente: FreeBSD Foundation

Las jaulas son un mecanismo de virtualización a nivel de sistema operativo que permite a un administrador de sistema particionar el sistema operativo en pequeños sistemas derivados e independientes, todos compartiendo el mismo kernel, con solo una pequeña sobrecarga. Aunque este mecanismo sea implementado a través de la llamada al sistema jail(2), también se puede usar en el espacio de usuario gracias a jail(8), sumando además a que una gran parte de las herramientas base también tienen este mecanismo implementado para manipular características dentro de la jaula, como se verá más adelante. Esta funcionalidad fue introducida por No tienes permitido ver enlaces. Registrate o Entra a tu cuenta en 1999 y lanzada a partir de la versión 4.0 de FreeBSD.


Algunos comandos de AppJail.

Administrar pequeños sistemas con sus propias cosas en lugar de un solo sistema con todas las cosas que necesite la organización, trae con sí varias ventajas, como usar una aplicación de forma aislada sin que el host se vea afectado; ventajas como la seguridad y el mantenimiento del mismo sistema hacen tentativa esta opción.

No obstante, las jaulas aunque sean relativamente fáciles de crear y mantener, cuando se necesitan varias para diferentes propósitos, delegadas para diferentes administradores, la dificultad puede aumentar y por lo tanto los errores se hacen presente. Además, si le sumamos a que las jaulas por sí solas no controlan las reglas de nuestro cortafuegos, no restringen los recursos, no descargan una imagen con FreeBSD para que podamos usarla como el sistema que usará la jaula, no configuran la parte de la red para, por ejemplo, usar DHCP, no exponen puertos, etc. Las jaulas no hacen tal cosa porque en el sistema base ya hay herramientas que hacen esto por nosotros, pero debemos conocer cuales son esas herramientas y como usarlas, aparte de tener un orden en nuestra configuración para que otros administradores pueden realizar su trabajo sin interferencias.

Esto no es desalentador si se está dispuesto a realizar este proceso, de forma vainilla, sin ningún ayudante o framework presente. No obstante, hay personas u organizaciones que simplemente necesitan abstraer y automatizar estos procesos; necesitan ser eficientes, por lo que nacen otro tipo de personas: los desarrolladores de los frameworks que usan estas desventajas para convertirlas en virtudes en un solo conjunto.

La idea de los helpers/frameworks no es nueva [1], ya que hay una docena de ellos actualmente creados, muchos parecidos unos a otros, pero hay otros que tienen sus diferencias. Ya sea que se especialicen en hacer ciertas cosas mejor, o tener determinado público objetivo, o simplemente tener un modelo de desarrollo completamente distinto.

Pese a que existan varias alternativas presentes, AppJail es un nuevo framework que tiene como objetivo tanto a desarrolladores como administradores de sistemas. Esta herramienta tiene con sí docenas de características para que los procesos repetitivos, simplemente lo sean muchísimo menos, y muchos de ellos, abstraídos para que el usuario solo tenga que encargarse de lo principal: administrar sus aplicaciones en un entorno aislado.

Este pequeño artículo será parte de una serie de pequeños artículos mostrando las características de este framework, pero no me es posible mostrar absolutamente todas porque de eso se encarga la misma documentación: No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Cosas como la instalación, simplemente no se mostrarán aquí, por lo que se deja implícito que se explica en la misma documentación.


Características:


* Fácil de usar.
* Inicio y parada de las jaulas en paralelo.
* Soporte para UFS y ZFS.
* Soporte para RACCT/RCTL para restringir los recursos de una jaula.
* Soporta IPv4 y IPv6.
* Soporta DHCP y SLAAC.
* Redes virtuales para organizar de forma lógica las jaulas.
* Puentes para proveer aislamiento entre jaulas.
* Soporta VNET.
* Despliegue sencillo usando los Makejails.
* Soporta Netgraph.
* Soporta LinuxJails.
* Soporta thin y thick jails.
* TinyJails, una característica experimental para exportar una jaula bastante despojada que es bastante útil para su distribución.
* Control del inicio y parada de las jaulas usando prioridades y el boot flag.
* Soporta las dependencias de jaulas.
* Initscripts, para crear jaulas interactivas.
* Respaldos sencillos con un solo comando.
* Estructura modular, lo cual hace que AppJail sea fácil de mantener: cada archivo tiene una responsabilidad propia.
* La mayoría de comandos tienen una interfaz como una tabla, bastante familiar en varias herramientas de administración de sistemas.
* Sin base de datos, todos los archivos son guardados individualmente en entidades separadas (redes, jaulas, etc.), lo cual hace su respaldo y mantenimiento mucho más sencillo.
* Supervisor - Próximamente ...
* ...


Creación de una jaula:


Creando una jaula con dos simples comandos.

Dos cosas son necesarias para la creación de nuestra jaula: obtener los componentes (`base.txz`, `lib32.txz`, etc.) y usar esos componentes para crear la jaula.

Código: sh
appjail fetch
appjail quick myjail start login

Usando el comando `appjail fetch` descargaremos el archivo `MANIFEST` para verificar la suma de verificación de los components. Después, los componentes se descargarán. Por defecto, solo `base.txz` será descargado.

Una vez tengamos un `release` con los componentes deseados, podremos crear nuestra jaula con el comando `appjail quick`. Este caso nuestra jaula se llamará `myjail`. Además, usamos la opción `start` para iniciar la jaula después de su creación, y `login` para iniciar sesión dentro de la jaula después de iniciarla.

No es necesario ejecutar `appjail fetch` nuevamente al menos que se quiera crear otro release con diferentes componentes.


Notas:

[1] No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Está muy bueno!!

Sobre todo, para redes virtuales.
Me ha gustado mucho todos los detalles, incluyendo la presentación.
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta

Muchas gracias No tienes permitido ver enlaces. Registrate o Entra a tu cuenta. Como siempre, un placer.

Poco a poco iré publicando más cosas sobre AppJail.

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF