Aller au contenu

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 :

Terminal window
imglife --config /etc/imglife/config.yaml sync
imglife --check # valider sans exécuter

La variable d’environnement IMGLIFE_CONFIG est aussi supportée :

Terminal window
export IMGLIFE_CONFIG=/etc/imglife/config.yaml
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.

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.
registry:
url: https://gitlab.example.com
project_id: 42
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