mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 10:22:08 +00:00
Last changes before version 1.2.7. OCI manager Apps - Multi-container applications start while one of their containers is being backed up: the start hook waits until vzdump releases it and does not start it twice. The DHCP client of a dependency no longer keeps the lock of the hook, so later starts do not hang, and the watchdog waits while a dependency is locked. Installing or updating ProxMenux replaces the published copies of the hook already in place. - Images built from scratch with a numeric user, such as ddns-updater, install: the container is created from a copy of the image that adds the /etc/passwd and /etc/group Proxmox VE needs, and the application runs with the user the image declares. The downloaded image stays unchanged. An image with a named user and no user database stops before anything is created, with a message that says why. Catalog - Twelve new applications: MDBListarr, CrossWatch, Free Games Claimer Remaster, Cloudreve, Poznote and AceStream HTTP Proxy, suggested in discussion #440, and the Dockur images of Chrony, Dnsmasq, Tor, Stunnel, strfry and Statping. The catalog lists 347 applications. - Their prompts, labels and notes are translated into the seven languages of the menus. Documentation - OCI manager: architecture, lifecycle and stacks pages revised, with larger diagrams and new screenshots. - Contributors: the page now thanks those developing, reviewing, translating and testing ProxMenux today and those who helped in its first steps, with new avatars. Tests for the stack start hook, the watchdog, the user database check of OCI images and the Tor installation summary.
501 lines
30 KiB
JSON
501 lines
30 KiB
JSON
{
|
||
"meta": {
|
||
"title": "Installer, mettre à jour et modifier | ProxMenux",
|
||
"description": "Le contrat d'instance d'un conteneur OCI et les opérations qui s'appuient dessus : mise à jour, modification, suppression, reprise d'une opération interrompue et remise en service après une restauration sur cet hôte ou un autre."
|
||
},
|
||
"header": {
|
||
"title": "Installer, mettre à jour et modifier",
|
||
"description": "Chaque instance conserve un contrat reproductible, ce qui permet de remplacer son rootfs sans perdre sa configuration ni ses données persistantes.",
|
||
"section": "OCI manager Apps"
|
||
},
|
||
"sections": [
|
||
{
|
||
"id": "contract",
|
||
"title": "Le contrat d'instance",
|
||
"blocks": [
|
||
{
|
||
"p": "Après l'installation, la configuration effective est enregistrée dans <code>/usr/local/share/proxmenux/oci/instances/VMID/oci-compose.json</code>. Il ne s'agit pas d'une copie du fichier Compose d'origine : c'est le contrat reproductible du LXC présent sur cet hôte."
|
||
},
|
||
{
|
||
"code": {
|
||
"code": "instances/\n└── 105/\n └── oci-compose.json\n ├── image and resolved digest\n ├── resources and network\n ├── environment (secrets protected)\n ├── container disks and host directories\n ├── hardware profile and devices\n ├── console log and terminal mode\n └── stack membership and lifecycle"
|
||
}
|
||
},
|
||
{
|
||
"p": "Une copie du contrat est conservée dans le conteneur, dans <code>/.proxmenux/oci-record.json</code>, et seul l'utilisateur root du conteneur peut la lire. Une sauvegarde du conteneur emporte donc toujours le contrat en vigueur au moment de la sauvegarde. Une seconde copie est conservée dans <code>/etc/pve/priv/proxmenux/oci</code>, un emplacement partagé par tous les nœuds du cluster et lisible uniquement par root sur l'hôte. Les deux copies sont écrites après chaque installation, mise à jour et modification."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "manage",
|
||
"title": "Gérer les applications OCI installées",
|
||
"intro": "Cette option de l'écran principal liste les instances enregistrées avec leur application et image. Chacun d'eux est vérifié par rapport à son contrat avant toute action; un CT qui ne correspond plus à son enregistrement n'est ni modifié ni supprimé. La même mise à jour et le même éditeur sont proposés dans l'onglet Mises à jour de <monitorLink>ProxMenux Monitor</monitorLink>.",
|
||
"blocks": [
|
||
{
|
||
"table": {
|
||
"headers": [
|
||
"Option",
|
||
"Ce qui change",
|
||
"Ce qui est gardé"
|
||
],
|
||
"rows": [
|
||
[
|
||
"Mettre à jour l'image avec la configuration enregistrée",
|
||
"Le rootfs est remplacé par l'image actuellement publiée sur le canal enregistré",
|
||
"Contrat, disques de conteneur, répertoires hôtes, réseau et appareils"
|
||
],
|
||
[
|
||
"Modifier : éditer les ressources, le réseau, les chemins et le GPU",
|
||
"L'éditeur s'ouvre avec le contrat actuel; le CT est reconstruit avec les modifications",
|
||
"Les données des disques de conteneur et des répertoires hôtes"
|
||
],
|
||
[
|
||
"Watchdog : redémarrer l'application lorsqu'elle plante",
|
||
"Détermine si l'application est relancée lorsqu'elle s'arrête d'elle-même. Rien n'est reconstruit",
|
||
"L'ensemble de l'installation ; seul le choix est sauvegardé dans le contrat"
|
||
],
|
||
[
|
||
"Supprimer: supprimer l'application et ses conteneurs",
|
||
"Le LXC, ou chaque membre d'une pile, et leurs contrats sont supprimés",
|
||
"Répertoires hôtes, avec leur contenu"
|
||
]
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"p": "Pour une application à plusieurs conteneurs, le menu propose <strong>Mettre à jour tous les conteneurs de l'application</strong>, <strong>Modifier les chemins et périphériques supplémentaires</strong>, <strong>Recréer tous les conteneurs avec leur configuration enregistrée</strong>, le watchdog et la suppression. Modifier ajoute ou supprime les chemins et périphériques supplémentaires du conteneur applicatif sans rien reconstruire et, pour Immich, change le composant qui exécute la reconnaissance. Recréer reconstruit chaque conteneur à partir de l'image utilisée lors de son installation, sans en chercher une plus récente."
|
||
},
|
||
{
|
||
"figure": {
|
||
"src": "/oci-manager/manage-menu.png",
|
||
"alt": "Liste des applications OCI installées, avec les options de mise à jour, de modification et de suppression",
|
||
"caption": "Gérer les applications OCI installées."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "update",
|
||
"title": "Comment se déroule une mise à jour et que se passe-t-il en cas d'échec",
|
||
"blocks": [
|
||
{
|
||
"p": "La mise à jour est transactionnelle : la nouvelle image est d'abord préparée et vérifiée ; une sauvegarde est ensuite créée et le système de fichiers de l'application est remplacé. La nouvelle version est validée uniquement après un contrôle de fonctionnement réussi. Si un échec survient après une modification du conteneur, une restauration de la sauvegarde précédente est tentée et son résultat est vérifié."
|
||
},
|
||
{
|
||
"mermaid": {
|
||
"chartCode": "---\nconfig:\n sequence:\n wrap: true\n actorFontSize: 18\n messageFontSize: 18\n width: 170\n actorMargin: 40\n useMaxWidth: false\n---\nsequenceDiagram\n autonumber\n participant U as {{user}}\n participant P as ProxMenux\n participant R as {{registry}}\n participant X as Proxmox VE\n U->>P: {{update}}\n P->>R: {{resolve}}\n R-->>P: {{image}}\n P->>P: {{verify}}\n P->>X: {{backup}}\n P->>X: {{import}}\n P->>X: {{reapply}}\n P->>X: {{start}}\n X-->>P: {{checked}}\n alt {{healthy}}\n P->>P: {{commit}}\n P-->>U: {{updated}}\n else {{failure}}\n P->>X: {{rollback}}\n alt {{recovered}}\n P-->>U: {{restored}}\n else {{restoreFailed}}\n P-->>U: {{manual}}\n end\n end",
|
||
"labels": {
|
||
"user": "Utilisateur",
|
||
"registry": "Registre d'images OCI",
|
||
"update": "Mettre à jour l'application",
|
||
"resolve": "Identifier la nouvelle version",
|
||
"image": "Télécharger la nouvelle image",
|
||
"verify": "Vérifier l'image et les prérequis",
|
||
"backup": "Arrêter le conteneur et le sauvegarder",
|
||
"import": "Installer le nouveau système de fichiers",
|
||
"reapply": "Réappliquer la configuration enregistrée",
|
||
"start": "Démarrer et vérifier l'application",
|
||
"checked": "Résultat du contrôle de fonctionnement",
|
||
"healthy": "L'application fonctionne",
|
||
"failure": "La mise à jour échoue",
|
||
"commit": "Enregistrer la nouvelle version et configuration",
|
||
"updated": "Mise à jour terminée",
|
||
"rollback": "Restaurer et vérifier la sauvegarde précédente",
|
||
"recovered": "Restauration vérifiée",
|
||
"restored": "Version précédente restaurée",
|
||
"restoreFailed": "Restauration non vérifiée",
|
||
"manual": "Restauration en attente : examiner l'erreur"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
"p": "Si la préparation ou les contrôles préalables échouent, la mise à jour s'arrête avant l'arrêt du conteneur. La restauration du conteneur ne rétablit pas les fichiers des répertoires partagés de l'hôte à une version antérieure."
|
||
},
|
||
{
|
||
"list": {
|
||
"items": [
|
||
"Lorsque le registre sert encore le digest installé, rien n'est téléchargé et l'instance n'est pas touchée.",
|
||
"La nouvelle image est vérifiée couche par couche avant l'arrêt du CT. Un téléchargement qui arrive endommagé est récupéré une deuxième fois ; une image déjà mise en cache qui échoue la vérification est à nouveau téléchargée.",
|
||
"Les paramètres modifiés dans Proxmox VE après l'installation (mémoire, swap, cœurs, limite et priorité du CPU, démarrage avec le nœud) sont conservés et intégrés au nouveau contrat.",
|
||
"L'interface LAN ajoutée par la suite Arr et les applications à plusieurs conteneurs (<code>net1</code>), ainsi que l'ordre de démarrage (<code>startup</code>), sont réappliqués tels quels au nouveau conteneur.",
|
||
"Un répertoire de l’hôte est reconnu par son chemin et par le système de fichiers sur lequel il se trouve, et non par le nom de périphérique que l’hôte donne à son disque : un disque USB ou réseau qui revient sous un autre nom reste donc le même répertoire. Lorsque son disque n’est pas connecté, la mise à jour s’arrête avant que le CT ne soit arrêté et indique le répertoire manquant.",
|
||
"Toute autre différence entre le CT et son contrat arrête la mise à jour avant que le CT ne soit arrêté."
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"flow": {
|
||
"nodes": [
|
||
{
|
||
"label": "Avant",
|
||
"detail": "rootfs A\n/config mp0\n/media répertoire de l’hôte"
|
||
},
|
||
{
|
||
"label": "Mise à jour",
|
||
"detail": "remplace uniquement\nle rootfs"
|
||
},
|
||
{
|
||
"label": "Après",
|
||
"detail": "rootfs B\n/config mp0\n/media répertoire de l’hôte"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"p": "Avant tout arrêt, l'opération vérifie l'espace nécessaire à la sauvegarde : les données utilisées sur les volumes inclus, plus une marge. La sauvegarde est écrite à côté de l'enregistrement de l'application, sur le disque système de l'hôte. Si l'espace y est insuffisant, le menu demande un autre stockage de l'hôte acceptant les sauvegardes. La sauvegarde y est créée puis supprimée à la fin de l'opération. Ce choix est mémorisé pour l'application, y compris pour les mises à jour planifiées. Si aucun stockage n'a assez de place, l'opération est refusée et l'application reste inchangée. L'espace nécessaire à la nouvelle image est également vérifié avant son téléchargement."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "recovery",
|
||
"title": "Récupération d'une opération interrompue",
|
||
"intro": "Une mise à jour et un changement utilisent une transaction persistante. Si le processus, le terminal ou le nœud est interrompu après l'arrêt du CT, l'opération n'est pas prise comme terminée.",
|
||
"blocks": [
|
||
{
|
||
"steps": {
|
||
"items": [
|
||
{
|
||
"title": "Marqueur en attente",
|
||
"body": "À l'ouverture de Gérer les applications OCI installées, l'état enregistré indique que le remplacement n'a jamais été publié."
|
||
},
|
||
{
|
||
"title": "Afficher l’état",
|
||
"body": "Affiche la phase qui a été atteinte sans changer de conteneur ou de données."
|
||
},
|
||
{
|
||
"title": "Récupérer l'installation précédente",
|
||
"body": "Restaure la sauvegarde native vérifiée réalisée avant le remplacement, ainsi que le contrat précédent."
|
||
},
|
||
{
|
||
"title": "Piles traitées comme une unité",
|
||
"body": "Pour une application multi-conteneurs, chaque membre est récupéré du même point de transaction, pas seulement celui sélectionné."
|
||
}
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"calloutWarning": {
|
||
"title": "Les répertoires de l’hôte sont exclus du retour arrière",
|
||
"body": "La sauvegarde couvre le rootfs et les disques du conteneur qui y sont inclus. Un répertoire de l’hôte n’est pas rétabli à son état précédent, car d’autres LXC peuvent utiliser ses données."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "watchdog",
|
||
"title": "Watchdog: redémarrer une application qui s'arrête",
|
||
"intro": "Proxmox n'a pas de politique de redémarrage : quand le processus d'un conteneur applicatif se termine, le conteneur reste arrêté. Si le watchdog est activé, une application qui s'arrête d'elle-même est relancée. Il joue pour une application OCI le rôle de <code>restart: unless-stopped</code> dans un fichier Compose.",
|
||
"blocks": [
|
||
{
|
||
"table": {
|
||
"headers": [
|
||
"Ce qui se passe",
|
||
"Avec le watchdog activé"
|
||
],
|
||
"rows": [
|
||
[
|
||
"L’application plante ou son processus se termine",
|
||
"Le conteneur est relancé en quelques secondes"
|
||
],
|
||
[
|
||
"Il est arrêté ou éteint depuis Proxmox, depuis le Monitor ou avec <code>pct</code>",
|
||
"Il reste arrêté jusqu’à ce que quelqu’un le démarre"
|
||
],
|
||
[
|
||
"Une sauvegarde, une migration ou une opération ProxMenux travaille dessus",
|
||
"Rien n'est fait jusqu'à la fin"
|
||
],
|
||
[
|
||
"Il était déjà arrêté au démarrage de l’hôte",
|
||
"Il reste arrêté ; cela dépend de <strong>Démarrer avec Proxmox</strong>"
|
||
],
|
||
[
|
||
"Il s’arrête systématiquement juste après son démarrage",
|
||
"Pour une application qui s’arrête quelques secondes après son démarrage ou qui ne démarre pas, cinq tentatives sont effectuées, séparées par des délais de 30 secondes, 1, 2 et 5 minutes. Elle reste ensuite arrêtée et une notification est envoyée"
|
||
]
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"p": "L'installateur pose la question dans les deux modes d'installation et propose la valeur déclarée par la recette de l'application. Ce réglage peut ensuite être modifié dans <strong>Gérer les applications OCI installées</strong> ou avec le commutateur <strong>Watchdog</strong> du conteneur dans <monitorLink>ProxMenux Monitor</monitorLink>. Il s'applique à tous les conteneurs d'une application à plusieurs conteneurs. Un seul service de l'hôte, <code>proxmenux-oci-watchdog.service</code>, surveille les applications pour lesquelles il est activé ; son installation figure dans l'onglet Modifications d'Audit & Report."
|
||
},
|
||
{
|
||
"calloutInfo": {
|
||
"title": "Ce que l'hôte ne peut pas dire",
|
||
"body": "Le code de sortie de l'application ne parvient pas à l'hôte. Un arrêt normal et un plantage sont donc indiscernables et entraînent tous deux un redémarrage, comme avec <code>always</code> et <code>unless-stopped</code> dans Docker. Un arrêt demandé en dehors de Proxmox, avec <code>lxc-stop</code> ou <code>systemctl</code>, ne laisse aucune tâche d'arrêt et est interprété comme un arrêt spontané."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "restore",
|
||
"title": "Sauvegarde, restauration et un autre hôte",
|
||
"intro": "Une sauvegarde réalisée avec vzdump ou Proxmox Backup Server contient le conteneur, les disques du conteneur sélectionnés pour la sauvegarde et la copie de son contrat. Les éléments conservés par l'installation sur l'hôte n'en font pas partie. <strong>Gérer les applications OCI installées</strong> détecte les conteneurs restaurés sur un hôte dépourvu de leur contrat, après une nouvelle installation de Proxmox ou sur un autre hôte, et propose de les enregistrer à nouveau.",
|
||
"blocks": [
|
||
{
|
||
"steps": {
|
||
"items": [
|
||
{
|
||
"title": "Restaurer les conteneurs dans Proxmox",
|
||
"body": "Depuis le stockage de sauvegarde, avec l’ID d’origine ou tout autre ID libre. Une application à plusieurs conteneurs nécessite tous ses conteneurs."
|
||
},
|
||
{
|
||
"title": "Ouvrir la gestion des applications OCI installées",
|
||
"body": "Les conteneurs restaurés sont listés et la récupération est proposée. Le bouton <strong>Récupérer</strong> de l’onglet Mises à jour de <monitorLink>ProxMenux Monitor</monitorLink> ouvre la même récupération."
|
||
},
|
||
{
|
||
"title": "Vérifier avant de changer",
|
||
"body": "La récupération vérifie que l'hôte a tout ce dont chaque application a besoin. Une application qui ne peut pas être récupérée entière est laissée comme elle a été trouvée, avec la raison."
|
||
},
|
||
{
|
||
"title": "Enregistrer et démarrer",
|
||
"body": "Le contrat est enregistré sur cet hôte et les éléments que l'installation y conservait sont réécrits. Le démarrage des applications fait l'objet d'une question distincte, à laquelle il faut répondre Non si les conteneurs d'origine fonctionnent encore sur un autre hôte."
|
||
}
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"table": {
|
||
"headers": [
|
||
"Ce que l'hôte a gardé",
|
||
"Après la récupération"
|
||
],
|
||
"rows": [
|
||
[
|
||
"Contrat d’instance",
|
||
"Enregistré à partir de la copie conservée dans le conteneur et vérifié par rapport à la configuration restaurée par Proxmox"
|
||
],
|
||
[
|
||
"Réseau privé d'une application multiconteneurs",
|
||
"Recréé avec le même pont et sous-réseau ; les adresses fixes des conteneurs ne changent pas"
|
||
],
|
||
[
|
||
"Ordre de démarrage d'une application multi-conteneurs",
|
||
"Le hookscript de dépendance et son contrat sont à nouveau installés ; les extraits sont activés sur le stockage <code>local</code> quand aucun stockage ne les accepte"
|
||
],
|
||
[
|
||
"Sysctls réseau et fichier host-monitor",
|
||
"Ecrit à nouveau en <code>/etc/pve/proxmenux</code>"
|
||
],
|
||
[
|
||
"Environnement d’exécution NVIDIA",
|
||
"Le hook d’un conteneur non privilégié est réinstallé. Un conteneur privilégié reçoit les fichiers de pilote de cet hôte à la place de ceux de son hôte d’origine"
|
||
],
|
||
[
|
||
"Rclone montage",
|
||
"Le hookscript et les programmes qui publient le montage sont à nouveau écrits, avec les mêmes vues sur l'hôte"
|
||
],
|
||
[
|
||
"Règle du pare-feu d'un moniteur hôte",
|
||
"Une nouvelle confirmation est demandée pour son port web et le sous-réseau du pont sur cet hôte"
|
||
],
|
||
[
|
||
"<code>lost+found</code> de chaque disque restauré",
|
||
"Supprimé s’il est vide ; une restauration le crée et certaines applications ne démarrent pas s’il figure dans leurs données"
|
||
],
|
||
[
|
||
"Disques restaurés sur un autre stockage",
|
||
"Le contrat est mis à jour pour refléter le stockage sur lequel ils se trouvent maintenant"
|
||
]
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"p": "Un conteneur restauré avec un autre ID conserve son application. Le contrat, son journal de console, ses paramètres sysctl réseau, le hookscript d'un montage Rclone et l'ordre de démarrage d'une application à plusieurs conteneurs sont enregistrés avec les ID des conteneurs sur cet hôte."
|
||
},
|
||
{
|
||
"table": {
|
||
"headers": [
|
||
"Ce qui empêche une récupération",
|
||
"Que faire"
|
||
],
|
||
"rows": [
|
||
[
|
||
"Il manque un conteneur d'une application multiconteneurs",
|
||
"Restaurer aussi; l'application est récupérée entière"
|
||
],
|
||
[
|
||
"Le sous-réseau privé est déjà utilisé sur cet hôte",
|
||
"La récupération est annulée et rien n’est modifié : les adresses des conteneurs sont fixes et ne sont pas déplacées vers un autre sous-réseau"
|
||
],
|
||
[
|
||
"Un répertoire hôte n'existe pas",
|
||
"Monter ou créer avec ses données; une sauvegarde du conteneur n'inclut pas les répertoires hôtes"
|
||
],
|
||
[
|
||
"Un périphérique n'existe pas sur cet hôte",
|
||
"Connectez-le ou retirez-le du conteneur dans Proxmox"
|
||
],
|
||
[
|
||
"Une application avec NVIDIA sur un hôte sans pilote",
|
||
"Installez le pilote NVIDIA et le Container Toolkit"
|
||
],
|
||
[
|
||
"La sauvegarde a été effectuée avant l'existence de la copie du contrat",
|
||
"Le conteneur reste en tant que LXC ordinaire et n'est pas offert à nouveau"
|
||
]
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"calloutInfo": {
|
||
"title": "Un conteneur qui revient",
|
||
"body": "Un conteneur restauré sur lui-même à partir d'une ancienne sauvegarde, retourné à un instantané ou retourné d'un autre noeud porte le contrat de l'état dans lequel il est. Lorsqu'il est sélectionné pour une opération et que son contrat diffère de celui de cet hôte, l'opération ne démarre pas et le conteneur est offert pour récupération."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "remove",
|
||
"title": "Supprimer une application OCI",
|
||
"blocks": [
|
||
{
|
||
"p": "Avant la confirmation, un résumé est établi à partir de la configuration réelle : les conteneurs supprimés, les données supprimées avec eux, le réseau privé libéré et les répertoires de l’hôte conservés. La réponse par défaut est <strong>Non</strong>, car les données des disques supprimés ne pourront pas être récupérées ensuite."
|
||
},
|
||
{
|
||
"table": {
|
||
"headers": [
|
||
"Ressource",
|
||
"À la suppression",
|
||
"Motifs"
|
||
],
|
||
"rows": [
|
||
[
|
||
"rootfs et disques du conteneur",
|
||
"Supprimés",
|
||
"Ils appartiennent seulement au conteneur"
|
||
],
|
||
[
|
||
"Répertoire de l'hôte",
|
||
"Conservé, avec son contenu",
|
||
"D'autres applications peuvent l'utiliser"
|
||
],
|
||
[
|
||
"Fichiers hôtes du conteneur",
|
||
"Supprimés",
|
||
"Son journal de console, ses paramètres sysctl réseau, le hookscript du montage Rclone et son inscription dans l’onglet App de ProxMenux Monitor ne servent à aucun autre conteneur"
|
||
],
|
||
[
|
||
"Fichiers partagés par plusieurs installations",
|
||
"Supprimé avec la dernière installation qui les utilise",
|
||
"Le fichier de surveillance de l’hôte et le hookscript des dépendances des applications à plusieurs conteneurs"
|
||
],
|
||
[
|
||
"Contrat d’instance",
|
||
"Supprimé après une suppression réussie",
|
||
"Aucun CT ne lui est plus associé"
|
||
],
|
||
[
|
||
"Pont privé d'une pile",
|
||
"Relâché avec la pile",
|
||
"Il n'y a plus de membres pour se connecter"
|
||
],
|
||
[
|
||
"Réseau partagé par la suite Arr",
|
||
"Libéré lors de la suppression de la dernière application de la suite",
|
||
"Chaque application de la suite est indépendante et se supprime séparément"
|
||
],
|
||
[
|
||
"Un seul membre d'une pile",
|
||
"Non enlevé seul",
|
||
"Toute l'application est retirée, donc aucune pile n'est laissée incomplète"
|
||
],
|
||
[
|
||
"Un conteneur sur un autre noeud du cluster",
|
||
"Non enlevé",
|
||
"Son enregistrement et ses fichiers sur l’hôte se trouvent sur le nœud où il a été installé : il faut le supprimer là-bas, après l’y avoir remigré"
|
||
]
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"figure": {
|
||
"src": "/oci-manager/remove-summary.png",
|
||
"alt": "Résumé de suppression avec les conteneurs, les données et les répertoires hôtes touchés",
|
||
"caption": "Le résumé de suppression, construit à partir de la configuration réelle."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "archives",
|
||
"title": "Images téléchargées et espace hôte",
|
||
"blocks": [
|
||
{
|
||
"p": "L’archive OCI sert à construire le rootfs ; le CT en cours d’exécution ne la lit pas. Après une installation ou une mise à jour, les archives téléchargées pendant cette opération sont listées avec leur taille et leur suppression est proposée. Les supprimer libère de l’espace sans affecter le conteneur ni ses données."
|
||
},
|
||
{
|
||
"calloutInfo": {
|
||
"title": "Les mises à jour ne nécessitent pas l'archive",
|
||
"body": "Sans l'archive, une mise à jour résout le canal enregistré et télécharge le nouveau digest. Avec elle, une archive n'est réutilisée que lorsque sa référence et son intégrité correspondent à ce qui est demandé."
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "registry",
|
||
"title": "Registre et nettoyage",
|
||
"blocks": [
|
||
{
|
||
"p": "À l'ouverture de <strong>Gérer les applications OCI installées</strong>, les restes des conteneurs absents de tous les nœuds du cluster sont d'abord supprimés : l'enregistrement conservé comme historique après une suppression depuis l'interface Proxmox, et les fichiers de l'hôte laissés par une suppression. Un enregistrement lié à une opération interrompue est conservé, car sa sauvegarde peut encore être nécessaire. Les volumes et répertoires de l'hôte ne sont jamais supprimés par déduction."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "cluster",
|
||
"title": "Dans un cluster : migration et haute disponibilité",
|
||
"intro": "Un conteneur OCI est un LXC Proxmox ordinaire : il peut être migré ou géré par HA comme les autres, avec les mêmes limites. Les éléments nécessaires à son démarrage sont conservés à un emplacement accessible à tous les nœuds du cluster.",
|
||
"blocks": [
|
||
{
|
||
"table": {
|
||
"headers": [
|
||
"Partie",
|
||
"Sur un autre noeud du cluster"
|
||
],
|
||
"rows": [
|
||
[
|
||
"Journal de console",
|
||
"Le conteneur crée <code>/var/log/proxmenux/oci</code> avant de démarrer, quel que soit le nœud qui l’exécute. Chaque nœud conserve le journal des démarrages qu’il a effectués."
|
||
],
|
||
[
|
||
"Paramètres sysctl réseau et surveillance de l’hôte",
|
||
"Conservés dans <code>/etc/pve/proxmenux</code>, partagé par tous les nœuds du cluster, afin qu’un conteneur migré les retrouve."
|
||
],
|
||
[
|
||
"Disques du conteneur",
|
||
"Proxmox les déplace avec le conteneur. HA nécessite que leurs données soient disponibles sur le nœud cible, via un stockage partagé ou une configuration de réplication prise en charge."
|
||
],
|
||
[
|
||
"Répertoires et périphériques de l'hôte",
|
||
"Les mêmes règles que n'importe quel LXC : un répertoire hôte doit exister sur le nœud cible et être marqué comme partagé, et un GPU, Coral ou NPU doit y être présent."
|
||
],
|
||
[
|
||
"Enregistrement ProxMenux",
|
||
"Le contrat reste sur le nœud où l'application a été installée, et chaque nœud lit la copie conservée dans <code>/etc/pve/priv/proxmenux/oci</code>. Une application à un seul conteneur est enregistrée sur son nœud de destination après migration lors de l'ouverture de <strong>Gérer les applications OCI installées</strong> ou du lancement d'une opération la concernant. Une application à plusieurs conteneurs y est proposée à la récupération, car son réseau privé doit être créé sur ce nœud."
|
||
]
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"calloutWarning": {
|
||
"title": "Pas pour une disponibilité élevée",
|
||
"body": "Une application à plusieurs conteneurs relie ses membres par un pont privé du nœud sur lequel elle a été installée ; ses membres restent donc sur ce nœud. Un outil de surveillance de l’hôte, comme Glances en mode hôte ou Netdata, surveille le nœud qui l’exécute ; le déplacer reviendrait à surveiller un autre nœud."
|
||
}
|
||
},
|
||
{
|
||
"p": "Une sauvegarde restaurée à l'extérieur du cluster obtient les fichiers de <code>/etc/pve/proxmenux</code> que le conteneur utilise lorsque l'application est récupérée."
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "channel",
|
||
"title": "Une étiquette évolutive n’est pas une mise à jour sans surveillance",
|
||
"blocks": [
|
||
{
|
||
"p": "Le catalogue installe l’étiquette évolutive publiée par son responsable, mais le digest effectif est résolu et enregistré, puis modifié uniquement lors d’une mise à jour explicite avec contrôles préalables et retour arrière. <monitorLink>ProxMenux Monitor</monitorLink> compare le digest installé à celui publié par le registre et affiche une indication et une notification lorsqu’une nouvelle image est disponible."
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|