Bonnes pratiques pour créer des conteneurs amorçables
(developers.redhat.com)- Le mode image de Red Hat Enterprise Linux (RHEL) simplifie le processus de construction, de déploiement et de gestion de RHEL sous forme de conteneurs amorçables
- Les développeurs, équipes d’exploitation et fournisseurs de solutions peuvent gérer les applications et le système d’exploitation sous-jacent avec les mêmes outils et technologies cloud native orientés conteneurs
Construire des conteneurs amorçables vs. des conteneurs applicatifs
- Comme pour les conteneurs applicatifs classiques, il est possible de construire des conteneurs amorçables avec des technologies de conteneurs existantes telles que Podman, Docker ou buildkit
- Les images peuvent être stockées dans des registres de conteneurs comme Quay.io, Docker Hub, GitHub Container Registry ou un registre de conteneurs interne
- Les conteneurs amorçables constituent une évolution naturelle des technologies de conteneurs, en offrant des workflows entièrement natifs pour les conteneurs et une expérience utilisateur complète incluant l’ensemble du système d’exploitation et le noyau Linux
Utiliser un Containerfile
- Un Containerfile (également appelé Dockerfile) contient toutes les informations nécessaires à la construction d’une image de conteneur, notamment l’image de base, les instructions d’installation des paquets logiciels et la copie de fichiers depuis un dépôt Git
- Le workflow et les outils pour construire des conteneurs amorçables sont essentiellement les mêmes que pour les conteneurs applicatifs
- Il existe toutefois quelques bonnes pratiques spécifiques à la construction de conteneurs amorçables
Bonnes pratiques de linting
- Il est recommandé d’exécuter la commande
bootc container lintcomme dernière étape du Containerfile - Cette commande effectue plusieurs vérifications à l’intérieur de l’image de conteneur et génère une erreur en cas de problème
- Par exemple, elle vérifie s’il y a plusieurs noyaux dans
/usr/lib/modules, contrôle la syntaxe des fichiers dans/usr/lib/bootc/kargs.det examine l’hygiène de/etcet/usr/etc
GitHub Actions et l’espace disque
- Lors de la construction de conteneurs avec GitHub Actions, on peut rencontrer des problèmes d’espace disque en raison de la taille des images de conteneurs amorçables
- Pour résoudre ces problèmes, il est possible d’ajouter au fichier de workflow une étape supprimant le répertoire
/opt/hostedtoolcacheafin de libérer de l’espace disque
Comprendre /var
/varest un répertoire destiné aux données et à l’état locaux de la machine, persistants et modifiables ; même pendant les mises à jour, le contenu de/vardans l’image de conteneur n’est pas modifié- Par conséquent, si une application écrit des données dans
/var, il faut les déplacer vers un autre répertoire comme/usr/shareafin d’éviter les problèmes liés aux montages en lecture seule
Utiliser la commande useradd
- Si
useraddest appelé dans un script de packaging, des dérives d’état peuvent survenir lorsque/etc/passwdest modifié localement - Pour éviter ces problèmes, on peut envisager la création dynamique d’utilisateurs avec l’option
DynamicUser=yesdesystemd - Toutefois, dans les cas complexes, passer à
DynamicUser=yespeut être difficile ; dans ce cas, il est préférable d’utilisersystemd-sysuserspour créer les utilisateurs
Intégrer des conteneurs avec Quadlet
- Exécuter des charges de travail conteneurisées dans
systemdest une méthode simple mais puissante pour des déploiements fiables - Podman fournit un outil appelé Quadlet pour l’intégration avec
systemd, permettant de gérer déclarativement des charges de travail conteneurisées - Quadlet s’intègre parfaitement au mode image et permet d’utiliser des images logiquement liées pour pré-récupérer les images de conteneurs applicatifs au démarrage
Résumé
- L’utilisation du mode image entraîne un changement de paradigme dans la façon d’exploiter les hôtes RHEL
- Il devient possible de construire, déployer et gérer le système d’exploitation avec des outils cloud native, tout en travaillant avec un OS immuable dont la majeure partie du système est montée en lecture seule
Aucun commentaire pour le moment.