Comment activer les mises à jour automatiques des conteneurs de Podman

0
132

Podman est une plate-forme de conteneurisation conforme à l'OCI souvent utilisée à la place de Docker. Son modèle sans démon et ses fonctionnalités étendues en font un bon candidat pour une utilisation en développement et en production.

Dans cet article, nous montrerons comment utiliser le système de mise à jour automatique de Podman pour redémarrer votre conteneurs lorsque de nouvelles images sont publiées. Podman peut être configuré pour vérifier périodiquement les mises à jour, extraire la dernière image et recréer les conteneurs concernés en utilisant leurs paramètres actuels.

Pourquoi mettre à jour automatiquement les conteneurs ?

Les conteneurs ont souvent une durée de vie courte mais ils doivent tout de même être régulièrement entretenus. Une vulnérabilité critique à l'intérieur d'une image pourrait donner aux attaquants un accès à votre application qui est exploitée dans les heures suivant sa découverte.

La plupart des technologies de conteneurs populaires nécessitent que vous mettiez à jour manuellement vos conteneurs. Cela oblige les équipes opérationnelles à s'abonner aux annonces de publication et à créer des outils qui déploient de nouvelles modifications.

Le système de mise à jour de conteneur intégré de Podman relève ce défi et maintient les charges de travail à jour. Les conteneurs peuvent être rapidement mis à jour une fois que vous avez poussé de nouvelles versions d'image, ce qui vous assure que vos déploiements exécutent les derniers correctifs et corrections de bogues.

Activation des mises à jour automatiques

h2>

Les mises à jour automatiques sont activées pour un conteneur en définissant l'étiquette io.containers.autoupdate lors de sa création.

$ podman run -d -p 8080:80 –name nginx-container – -label io.containers.autoupdate=registry docker.io/library/nginx:latest

Le libellé peut avoir deux valeurs possibles :

  • registry– Lors des vérifications de mise à jour, Podman contactera le registre d'images pour vérifier si la balise utilisée par votre conteneur a une nouvelle version disponible. L'image sera extraite et votre conteneur redémarré si tel est le cas. Les mises à jour du registre ne fonctionnent que lorsque vous utilisez un chemin de registre complet – la référence docker.io/library/nginx:latest indiquée ci-dessus est intentionnelle, car nginx:latest est trop vague.
  • local– Cette méthode de mise à jour limite Podman à la recherche d'images de conteneurs qui existent déjà sur le système de fichiers de votre hôte. Le conteneur sera redémarré si la version locale de la balise d'image diffère de la version que le conteneur exécute. Cela peut être utile lors de la reconstruction d'images pendant le développement.

La présence de l'étiquette rend cet exemple de conteneur NGINX éligible pour les mises à jour automatiques. Cependant, davantage de travail est nécessaire avant que les mises à jour puissent réellement être appliquées.

Création d'un service Systemd

Le mécanisme de mise à jour de Podman nécessite que vos conteneurs s'exécutent dans les services systemd. Parce que Podman est sans démon, il manque un contrôleur central qui peut démarrer et arrêter vos conteneurs. Les encapsuler dans un service systemd fournit des capacités de gestion du cycle de vie et la possibilité de redémarrer en réponse à des événements spécifiques.

La CLI de Podman inclut une commande qui crée une définition d'unité systemd à partir d'un conteneur :

$ podman génère systemd –name nginx-container > /etc/systemd/system/nginx-container.service

Les commandes ci-dessus créent un nouveau conteneur NGINX avec un service systemd au bon emplacement.

Rechargez ensuite systemd pour enregistrer la définition de service, puis activez et démarrez le service :

$ systemctl daemon-reload $ systemctl enable nginx-container.service $ systemctl start nginx-container.service

Votre conteneur NGINX est maintenant un service systemd qui démarrera automatiquement au démarrage de votre hôte. Vous pouvez utiliser les commandes systemctl pour démarrer et arrêter le conteneur, au lieu de la CLI de Podman :

$ systemctl start nginx-container.service $ systemctl stop nginx-container.service

Pour supprimer le conteneur dans le à l'avenir, vous devez arrêter, désactiver et supprimer le fichier d'unité du service. Redémarrez ensuite systemd pour appliquer complètement la modification.

$ systemctl stop nginx-container.service $ systemctl disable nginx-container.service $ rm /etc/systemd/system/nginx-container.service $ systemctl daemon-reload

Effectuer une mise à jour

Maintenant, tout est configuré pour réussir la mise à jour automatique de votre conteneur NGINX. Vous pouvez exécuter une vérification de mise à jour à la demande à l'aide de la commande de mise à jour automatique de Podman :

$ podman auto-update Trying to pull docker.io/library/nginx:latest… Getting image source signatures .. . POLITIQUE D'IMAGE DU CONTENEUR D'UNITÉS MISE À JOUR nginx-container.service 2de4ba96b09 docker.io/library/nginx:latest register true

Cela met à jour les conteneurs dans les services systemd qui sont accessibles à l'utilisateur exécutant la commande. Vous avez peut-être eu besoin d'utiliser sudo pour suivre l'exemple ci-dessus ; si c'est le cas, exécutez également la commande de mise à jour automatique en tant que root :

$ sudo podman auto-update

La stratégie de mise à jour du registre a été utilisée dans cet exemple afin que Podman se connecte au registre d'images, vérifie les modifications, puis extrait la nouvelle image, le cas échéant. La sortie de la commande indique si le conteneur de chaque service a été mis à jour.

Étant donné que les conteneurs sont gérés par systemd, Podman est capable de détecter si le nouveau conteneur a démarré avec succès. Podman reviendra automatiquement à la version précédente d'une image si un échec de mise à jour est détecté. Pour que cela fonctionne de manière fiable, l'application à l'intérieur du conteneur doit informer systemd lorsqu'elle a démarré avec succès. Il peut le faire en exécutant systemd-notify –ready.

Vérification des mises à jour

Parfois, vous devrez peut-être vérifier si votre flotte de conteneurs dispose de mises à jour sans les appliquer immédiatement. Utilisez la commande auto-update avec l'indicateur –dry-run pour obtenir une liste des services où une image mise à jour a été publiée :

$ podman auto-update –dry-run … UNIT CONTAINER IMAGE POLICY UPDATED nginx-container.service 2de4ba96b09 docker.io/library/nginx:latest Registry pending

Les services affichés comme étant en attente ont une mise à jour disponible.

Application Mises à jour sur un calendrier

Nous avons maintenant configuré avec succès les mises à jour de conteneurs à la demande. Vous n'avez pas besoin d'extraire manuellement de nouvelles images ni de redémarrer vos conteneurs. La dernière étape consiste à configurer un calendrier afin que Podman applique les mises à jour périodiquement, sans que vous exécutiez la commande de mise à jour automatique.

La plupart des distributions Podman incluent une minuterie systemd à cet effet. Vous pouvez activer le minuteur en utilisant systemctl :

$ systemctl enable podman-auto-update.timer

Le minuteur est configuré pour vérifier les mises à jour tous les jours. Vous pouvez personnaliser le calendrier en ouvrant le fichier de minuterie à l'aide de systemctl edit et en modifiant la valeur du champ OnCalendar :

$ systemctl edit podman-auto-update.timer [Timer] OnCalendar=Fri *-*-* 18:00

L'expression de temps indiquée ci-dessus exécutera la vérification de la mise à jour tous les vendredis à 18 h 00. La syntaxe est documentée dans le manuel de systemd.

Maintenant que le minuteur est activé, vous pouvez commencer à déployer vos conteneurs avec l'étiquette io.containers.autoupdate. Ils seront mis à jour et redémarrés périodiquement, automatisant vos procédures de maintenance.

Vous n'avez pas besoin d'utiliser le minuteur systemd de Podman pour créer un calendrier de mise à jour. Vous pouvez exécuter la mise à jour automatique de Podman dans vos outils existants ou dans un autre planificateur de tâches tel que cron.

Résumé

Les mises à jour automatiques de Podman vous permettent de vous déplacer conteneurs vers de nouvelles versions d'image sans les redémarrer manuellement ni utiliser d'outils externes. Cela peut vous aider à maintenir votre flotte de conteneurs à mesure que les images publient des correctifs de bogues et des correctifs de sécurité.

Bien que les mises à jour automatiques soient un outil utile, elles ne doivent pas être utilisées sans considération. Autoriser les mises à jour automatiques peut introduire ses propres problèmes si une image cassée est accidentellement publiée. Les conteneurs qui redémarrent d'eux-mêmes peuvent également entraîner des temps d'arrêt ou perturber les services dépendants.

Par conséquent, vous devez évaluer l'adéquation de votre propre application avant de mettre en œuvre cette solution. Une approche intermédiaire consiste à exécuter périodiquement auto-update –dry-run et à envoyer les résultats à un service de surveillance. Cela vous tient informé des mises à jour disponibles sans encourir les risques de les appliquer sans approbation.

LIRE LA SUITE

  • › Test de l'Edifier Neobuds S : le bon, le mauvais et le buggy
  • › Quels accessoires pour smartphone valent la peine d'être achetés ?
  • › N'achetez pas de répéteur Wi-Fi : achetez plutôt celui-ci
  • › Un aimant peut-il vraiment endommager mon téléphone ou mon ordinateur ?
  • › 10 fonctionnalités YouTube que vous devriez utiliser
  • › Devriez-vous augmenter la puissance de transmission de votre routeur Wi-Fi ?