Zum Inhalt springen

Image-Updates

Composia erkennt neue Image-Tags und kann Updates automatisch anwenden. Image-Check-Aufgaben laufen auf dem Agenten und melden die Ergebnisse an den Controller.

Wie es funktioniert

Der Controller plant regelmäßige image_check-Aufgaben gemäß der Update-Konfiguration des Dienstes. Jede Prüfung:

  1. Der Agent lädt das Dienstpaket herunter.
  2. Liest docker compose config --format json, um laufende Images zu erkennen.
  3. Meldet lokale und entfernte Digests für jedes Image.
  4. Für Images, die in update.images konfiguriert sind, prüft es auf neue Kandidaten-Tags unter Verwendung der konfigurierten Erkennungsquellen.
  5. Meldet die Ergebnisse an den Controller. Der Controller zeichnet verfügbare Updates auf und kann sie automatisch anwenden.

Controller-Standardwerte

Globale Standardwerte werden in der Controller-Konfiguration gesetzt:

controller:
  updates:
    default_check_schedule: "0 */6 * * *"
    auto_apply: false
    backup_before_update: true
    digest_pin: false
    semver:
      default_allow:
        - patch
        - minor
    forge_auth:
      github:
        url: "https://github.com"
        token: "REPLACE"
        api_url: "https://api.github.com"

Der dienstspezifische update-Abschnitt überschreibt diese Standardwerte.

Dienstkonfiguration

update:
  enabled: true
  auto_apply: false
  check_schedule: "0 */6 * * *"
  backup_before_update: true
  digest_pin: false
  backup_data:
    - name: db
      enabled: true
  discovery_sources:
    upstream-gh:
      sources:
        - type: github
          repo: owner/repo
      combine: first_success
      include_prerelease: false
  images:
    api:
      image: ghcr.io/example/api
      current:
        env:
          file: .env
          key: API_VERSION
      discovery: upstream-gh
      filter:
        type: semver
        allow:
          - patch
          - minor

update oberste Ebene

SchlüsselTypBeschreibung
enabledboolAktiviert Update-Prüfungen für diesen Dienst.
auto_applyboolWendet erkannte Updates automatisch an.
check_schedulestringCron-Zeitplan für Update-Prüfungen.
backup_before_updateboolFührt ein Backup vor dem Anwenden eines Updates aus.
backup_data[]objectGeschützte Datenelemente, die vor dem Update gesichert werden sollen. Jedes Element hat einen name und optional enabled.
digest_pinboolFixiert Images per Digest für Reproduzierbarkeit.
discovery_sourcesmap[string]objectBenannte wiederverwendbare Erkennungskonfigurationen.
imagesmap[string]objectUpdate-Konfiguration pro Image. Schlüssel sind beliebige Namen, die den zu prüfenden Images entsprechen.

images.<name>

SchlüsselTypErforderlichBeschreibung
imagestringJaVollständige Image-Referenz, zum Beispiel ghcr.io/example/api.
auto_applyboolNeinPer-Image-Override für automatisches Anwenden.
check_schedulestringNeinPer-Image-Prüfzeitplan.
backup_before_updateboolNeinPer-Image-Backup-Umschalter.
digest_pinboolNeinPer-Image-Digest-Pin-Umschalter.
currentobjectJaWie die aktuell deployte Version gefunden wird.
discoveryobject oder stringJaErkennungskonfiguration oder Verweis auf einen benannten discovery_sources-Eintrag.
filterobjectBed.Versionsfilter. Erforderlich, es sei denn, der Erkennungsmodus ist digest.

current

Genau eine dieser Quellen muss angegeben werden:

Statischer Tag:

current:
  tag: "v1.2.3"

Umgebungsdatei:

current:
  env:
    file: .env
    key: APP_VERSION

Der file-Pfad ist relativ zum Dienstverzeichnis. Composia liest die Datei, sucht nach SCHLÜSSEL=WERT-Zeilen und extrahiert den Wert.

YAML-Datei:

current:
  yaml:
    file: values.yaml
    path: app.image.tag

Der path ist ein durch Punkte getrennter Pfad in den YAML-Dokumentbaum. Der Wert an diesem Pfad muss ein Skalar sein.

Erkennung

Erkennungsquellen können sein:

Benannte Referenz auf einen discovery_sources-Eintrag:

discovery: upstream-gh

Inline-Definition:

discovery:
  sources:
    - type: probe
  combine: first_success
  include_prerelease: false

Erkennungsquellentypen:

TypErforderliche SchlüsselVerhalten
probeKeineSemver-Sondierung: Sucht nach höheren Versionen durch Sondieren von Registry-Manifesten. Erfordert einen semver-Filter.
registryKeineListet alle Tags aus der Image-Registry auf.
autoKeine (optional repo_url)Versucht probe, dann registry als zusammengeführte Erkennung. Muss die einzige Quelle in einer Erkennungskonfiguration sein.
digestKeineVergleicht nur den entfernten Digest mit dem lokalen Digest. Kein Tag-Vergleich. filter muss weggelassen werden. Muss die einzige Quelle sein.
githubrepo (owner/repo)Fragt GitHub-Releases ab. Wird auf der Controller-Seite verarbeitet.
gitlabprojectFragt GitLab-Releases ab. Wird auf der Controller-Seite verarbeitet.
forgejorepo (owner/repo)Fragt Forgejo-Releases ab. Wird auf der Controller-Seite verarbeitet.

combine akzeptiert merge (Vereinigung aller Quellergebnisse) oder first_success (erste Quelle, die Ergebnisse liefert, gewinnt).

include_prerelease schließt Vorabversionen in GitHub-, GitLab- und Forgejo-Release-Abfragen ein.

Filter

TypErforderliche SchlüsselVerhalten
semverKeineFiltert nach semantischer Version. allow kann patch, minor, major enthalten.
dateformatParst Tags als Daten mit dem angegebenen Format.
regexpattern, orderFiltert nach Regex. Order muss numeric oder lexicographic sein.
latestKeineNimmt den neuesten Tag ohne Filterung.

Semver-Sondierung

Mit type: probe und einem semver-Filter sucht Composia nach Kandidaten-Tags, indem es Versionsnummern konstruiert und prüft, ob das entsprechende Registry-Manifest existiert. Es sondiert Patch-, Minor- und Major-Sprünge gemäß der allow-Liste unter Verwendung einer exponentiellen Suche mit binärer Verfeinerung, um die höchste verfügbare Version zu finden.

Digest-Modus

Wenn alle Erkennungsquellen in einer Konfiguration type: digest haben, wird kein Tag-Vergleich durchgeführt. Composia vergleicht nur den entfernten Image-Digest mit dem lokalen Digest:

discovery:
  sources:
    - type: digest

Wenn digest als Erkennungsmodus gesetzt ist, muss filter weggelassen werden. Wenn ein Digest abweicht, wird ein Update als verfügbar betrachtet.

Image-Beobachtungen

Während Deploy- und Update-Aufgaben sammelt der Agent auch Image-Beobachtungen für alle Compose-Dienste. Diese umfassen lokale und entfernte Digests, die unabhängig davon an den Controller gemeldet werden, ob update.images konfiguriert ist. Dies bietet Einblick in den Image-Zustand in der Web-UI und CLI.

Zuletzt aktualisiert am • Renovate Bot