Mejores prácticas para crear contenedores arrancables
(developers.redhat.com)- El modo imagen de Red Hat Enterprise Linux (RHEL) simplifica el proceso de construir, desplegar y administrar RHEL con contenedores arrancables
- Los equipos de desarrollo, operaciones y los proveedores de soluciones pueden administrar tanto las aplicaciones como el sistema operativo base usando las mismas herramientas y tecnologías nativas de contenedores
Construcción de contenedores arrancables vs. contenedores de aplicación
- Al igual que con los contenedores de aplicación convencionales, es posible construir contenedores arrancables usando tecnologías de contenedores existentes como Podman, Docker o buildkit
- Las imágenes pueden almacenarse en registros de contenedores como Quay.io, Docker Hub, GitHub Container Registry o un registro interno de contenedores
- Los contenedores arrancables son una evolución natural de la tecnología de contenedores y ofrecen un flujo de trabajo integral nativo de contenedores y una experiencia de usuario que incluye todo el sistema operativo y el kernel de Linux
Uso de Containerfile
- Un Containerfile (también llamado Dockerfile) contiene toda la información necesaria para construir una imagen de contenedor, incluyendo la imagen base, instrucciones para instalar paquetes de software y copiar archivos desde un repositorio Git
- El flujo de trabajo y las herramientas para construir contenedores arrancables son esencialmente los mismos que para los contenedores de aplicación
- Sin embargo, hay algunas mejores prácticas que se aplican al construir contenedores arrancables
Mejores prácticas para linting
- Se recomienda ejecutar el comando
bootc container lintcomo último paso del Containerfile - Este comando realiza varias comprobaciones dentro de la imagen del contenedor y genera errores si encuentra problemas
- Por ejemplo, verifica si hay varios kernels en
/usr/lib/modules, inspecciona la sintaxis de los archivos en/usr/lib/bootc/kargs.dy revisa la higiene de/etcy/usr/etc
GitHub Actions y espacio en disco
- Al construir contenedores con GitHub Actions, es posible encontrarse con problemas relacionados con el espacio en disco debido al tamaño de las imágenes de contenedores arrancables
- Para resolver estos problemas, se puede agregar al archivo de workflow un paso que elimine el directorio
/opt/hostedtoolcachepara liberar espacio en disco
Entender /var
/vares un directorio para datos y estado persistentes, modificables y locales de la máquina; incluso durante las actualizaciones, el contenido de/varde la imagen del contenedor no cambia- Por lo tanto, si una aplicación escribe datos en
/var, conviene moverlos a otro directorio como/usr/sharepara evitar problemas con montajes de solo lectura
Uso del comando useradd
- Si se invoca
useradden scripts de empaquetado, pueden producirse desviaciones de estado si/etc/passwdse modifica localmente - Para evitar estos problemas, se puede considerar usar la opción
DynamicUser=yesdesystemdpara la creación dinámica de usuarios - Sin embargo, en casos complejos puede ser difícil migrar a
DynamicUser=yes; en ese caso, se recomienda usarsystemd-sysuserspara crear usuarios
Integración de contenedores con Quadlet
- Ejecutar cargas de trabajo en contenedores con
systemdes una forma simple pero potente de lograr despliegues confiables - Podman ofrece una herramienta llamada Quadlet para integrarse con
systemd, lo que permite administrar cargas de trabajo en contenedores de forma declarativa - Quadlet se integra por completo con el modo imagen, y puede usar imágenes enlazadas lógicamente para predescargar imágenes de contenedores de aplicaciones durante el arranque
Resumen
- El uso del modo imagen implica un cambio de paradigma en la forma de operar hosts RHEL
- Se puede construir, desplegar y administrar el sistema operativo con herramientas cloud-native, trabajando con un sistema operativo inmutable donde la mayor parte del sistema se monta en modo de solo lectura
Aún no hay comentarios.