Vue d'ensemble de la configuration
imglife est piloté par un seul fichier de configuration YAML. Par défaut, il cherche imglife.yaml dans le répertoire courant. Surchargez avec --config :
imglife --config /etc/imglife/config.yaml syncimglife --check # valider sans exécuterLa variable d’environnement IMGLIFE_CONFIG est aussi supportée :
export IMGLIFE_CONFIG=/etc/imglife/config.yamlStructure globale
Section intitulée « Structure globale »registry: {} # Connexion au Package Registry (obligatoire)sync: {} # Images miroirs à synchroniser (optionnel)build: {} # Images de base à construire (optionnel)retention: {} # Politique de rétention (optionnel, valeurs par défaut)lifecycle: {} # Source de données EOL (optionnel, valeurs par défaut)status: {} # Options du rapport d'état (optionnel)Toutes les sections sauf registry sont optionnelles. Une configuration minimale qui ne fait que synchroniser des miroirs n’a besoin que de registry et sync.
Exemple annoté
Section intitulée « Exemple annoté »Ci-dessous une configuration complète illustrant toutes les fonctionnalités. Chaque sous-section renvoie vers sa référence détaillée.
# ─── Package Registry ──────────────────────────────────────────────────────────# Stocke les build records des images applicatives.# Credentials via variables d'environnement — jamais dans le YAML.registry: url: https://gitlab.example.com # instance GitLab self-hosted project_id: 42 # Settings > General > Project ID
# ─── Sync ──────────────────────────────────────────────────────────────────────# Copie les images publiques upstream vers votre registry privé.sync: hooks: post_sync: - cmd: echo "Sync terminée"
entries: - source: docker.io/library/alpine tag_regex: '^3\.\d+\.\d+$' # synchroniser tous les tags 3.x.y keep_last: 3 # ne garder que les 3 plus récents target: registry.example.com/mirrors/alpine lifecycle: product: alpine # clé produit EOL sur endoflife.date track: minor # "3.21.3" → cycle "3.21"
- source: docker.io/library/golang tag_regex: '^1\.\d+\.\d+-alpine3\.\d+$' keep_last: 2 target: registry.example.com/mirrors/golang
# ─── Build ─────────────────────────────────────────────────────────────────────# Génère les Dockerfiles depuis des templates et pousse les images de base.build: core_version: "1.2.0" # incrémenté quand la config org change registry: registry.example.com/bases # destination de push platforms: [linux/amd64, linux/arm64] # défaut pour toutes les images sbom: true # attestation SBOM via buildx tag_format: "{registry}/{folder}:{mirror-tag}-{build_name}" # format de tag par défaut
images: - name: alpine folder: images/alpine type: core mirror_image: registry.example.com/mirrors/alpine mirror_tag: "3.21.3" version: "3.21.3"
- name: alpine-dev folder: images/alpine-dev type: spe-dev # variante dev — non vérifiée EOL mirror_image: registry.example.com/mirrors/alpine mirror_tag: "3.21.3" version: "3.21.3"
- name: golang folder: images/golang type: core mirror_image: registry.example.com/mirrors/golang mirror_tag: "1.22.3-alpine3.21" version: "1.22.3-alpine3.21" platforms: [linux/amd64] # surcharge : architecture unique
# ─── Rétention ─────────────────────────────────────────────────────────────────# Politique de nettoyage appliquée par `imglife cleanup`.retention: keep_last: 5 # garder les 5 tags les plus récents par image max_age_days: 90 # supprimer les tags de plus de 90 jours exclude_tags: - latest - stable
archive: enabled: true registry: registry.example.com/archive # chemin de registry séparé keep_days: 180 # garder les tags archivés 180 jours
# ─── Lifecycle ─────────────────────────────────────────────────────────────────# Configuration de la source de données EOL.lifecycle: eol_provider: endoflife # récupérer depuis endoflife.date (défaut) eol_target: git # stocker le cache dans eol-data.yaml dans git eol_data_file: eol-data.yaml
# ─── Statut ────────────────────────────────────────────────────────────────────# Options du README Markdown généré.status: client_zone: | ## Informations complémentaires Mis à jour quotidiennement à 06h00 UTC par le pipeline CI base-images. Questions ? Contactez l'équipe plateforme dans #platform-images.Configurations registry par provider
Section intitulée « Configurations registry par provider »registry: url: https://gitlab.example.com project_id: 42registry: url: https://registry.gitlab.com api_url: https://gitlab.com project_id: 42registry: provider: gitea url: https://gitea.example.com owner: myorg repo: base-imagesregistry: provider: s3 url: http://garage.internal:3900 # omettre pour AWS S3 standard bucket: imglife-builds region: garage prefix: buildsRéférence des sections
Section intitulée « Référence des sections »| Section | Rôle | Obligatoire |
|---|---|---|
registry |
Backend Package Registry | Oui |
sync |
Images miroirs | Non |
build |
Construction images de base | Non |
retention |
Politique de nettoyage | Non (valeurs par défaut) |
lifecycle |
Source données EOL | Non (valeurs par défaut) |
status |
Génération README | Non |