Aller au contenu
Configuration des services

Configuration des services

Chaque service réside dans un répertoire de premier niveau à l’intérieur du dépôt du contrôleur. Un répertoire de service contient composia-meta.yaml et un ou plusieurs fichiers Docker Compose.

Service minimal :

composia-meta.yaml
name: my-app
nodes:
  - main

Avec le comportement par défaut, Composia cherche docker-compose.yaml dans le même répertoire.

Clés de niveau supérieur

CléTypeRequisDescription
namestringOuiNom unique du service.
project_namestringNonRemplacement du nom de projet Docker Compose. Par défaut, un nom de service normalisé.
compose_files[]stringNonChemins des fichiers Compose relatifs au répertoire du service.
enabledboolNonSi le service est actif. Par défaut true.
nodes[]stringOuiIDs des nœuds cibles. Chacun doit exister dans controller.nodes.
infraobjectNonDéclare ce service comme infrastructure Caddy, Rustic ou config-only.
networkobjectNonParamètres Caddy et DNS.
updateobjectNonParamètres de mise à jour d’images.
data_protectobjectNonDéfinitions de données de sauvegarde et de restauration.
backupobjectNonSauvegardes planifiées pour les données protégées.
migrateobjectNonDonnées protégées activées pour la migration.
auto_deployboolNonDéployer automatiquement ce service après des modifications du dépôt.

Les entrées compose_files doivent être des chemins relatifs, doivent rester à l’intérieur du répertoire du service et ne doivent pas être dupliquées.

Services d’infrastructure

infra.caddy

Déclare le service d’infrastructure Caddy du dépôt.

infra:
  caddy:
    compose_service: caddy
    config_dir: /etc/caddy
CléTypeDescription
compose_servicestringNom du service Compose. Par défaut caddy.
config_dirstringRépertoire de configuration Caddy. Par défaut /etc/caddy.

Un seul service peut être déclaré comme infrastructure Caddy.

infra.rustic

Déclare le service d’infrastructure Rustic du dépôt.

infra:
  rustic:
    compose_service: rustic
    profile: default
    data_protect_dir: /data-protect
    init_args:
      - --set-version
      - "2"
CléTypeDescription
compose_servicestringNom du service Compose. Par défaut rustic.
profilestringNom du profil Rustic.
data_protect_dirstringChemin dans le conteneur mappé vers {StateDir}/data-protect de l’agent.
init_args[]stringArguments supplémentaires passés à rustic init. Les entrées vides sont rejetées.

Un seul service peut être déclaré comme infrastructure Rustic.

infra.config

Déclare un service d’infrastructure de configuration uniquement.

infra:
  config: {}

Les services config-only ne peuvent pas être combinés avec infra.caddy ou infra.rustic. Leurs actions data_protect ne peuvent utiliser que files.copy.

Réseau

network.caddy

network:
  caddy:
    enabled: true
    source: Caddyfile
CléTypeRequisDescription
enabledboolNonActive la gestion Caddy. Par défaut false.
sourcestringCond.Chemin du Caddyfile relatif au répertoire du service. Requis lorsque activé.

network.dns

network:
  dns:
    provider: cloudflare
    hostname: app.example.com
    record_type: A
    value: 203.0.113.10
    proxied: true
    ttl: 120
    comment: Managed by Composia
CléTypeRequisDescription
providerstringOuicloudflare, alidns, dnspod, route53 ou huaweicloud.
hostnamestringOuiNom d’hôte DNS.
record_typestringNonVide, A, AAAA ou CNAME.
valuestringNonValeur de l’enregistrement DNS. Les services multi-nœuds devraient le définir explicitement.
proxiedboolNonBascule de proxy spécifique au fournisseur, actuellement pertinent pour Cloudflare.
ttluint32NonTTL DNS.
commentstringNonCommentaire de l’enregistrement DNS.

Mises à jour d’images

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:
      sources:
        - type: github
          repo: owner/repo
      combine: first_success
      include_prerelease: false
  images:
    app:
      image: ghcr.io/example/app
      current:
        env:
          file: .env
          key: APP_VERSION
      discovery: upstream
      filter:
        type: semver
        allow:
          - patch
          - minor

update

CléTypeDescription
enabledboolActive les vérifications de mise à jour pour ce service.
auto_applyboolApplique automatiquement les mises à jour détectées.
check_schedulestringPlanification cron pour les vérifications de mise à jour.
backup_before_updateboolExécute des sauvegardes avant d’appliquer les mises à jour.
backup_data[]objectÉléments de données protégés à sauvegarder avant la mise à jour.
digest_pinboolÉpingler les images par empreinte.
discovery_sourcesmap[string]objectSources de découverte réutilisables. Les sources nommées ne peuvent pas référencer une autre source.
imagesmap[string]objectDéfinitions de mise à jour par image.

update.backup_data[]

CléTypeDescription
namestringNom de l’élément de données protégé.
enabledboolInclure ou exclure cet élément.

update.images.<nom>

CléTypeRequisDescription
imagestringOuiDépôt d’image.
auto_applyboolNonRemplacement auto-apply par image.
check_schedulestringNonPlanification de vérification par image.
backup_before_updateboolNonActivation de la sauvegarde par image.
digest_pinboolNonActivation de l’épinglage par empreinte par image.
currentobjectOuiSource de la version actuelle.
discoveryobject ou stringOuiConfiguration de découverte ou référence à une source de découverte nommée.
filterobjectCond.Requis sauf si la découverte est digest.

current

Spécifiez exactement l’une des options suivantes :

CléDescription
tagBalise actuelle statique.
env.file + env.keyLire la balise actuelle depuis un fichier d’environnement. file doit être relatif et rester à l’intérieur du répertoire du service.
yaml.file + yaml.pathLire la balise actuelle depuis un fichier YAML. file doit être relatif et rester à l’intérieur du répertoire du service.

discovery

CléTypeDescription
sources[]objectAu moins une source.
combinestringVide, merge ou first_success.
include_prereleaseboolInclure les versions préliminaires.

Types de sources de découverte :

TypeClés requisesNotes
autoAucunerepo_url est optionnel et doit être une URL valide si défini. Doit être la seule source.
probeAucuneNécessite un filtre semver lorsqu’un filtre est présent.
registryAucuneDécouverte des balises du registre.
digestAucuneDoit être la seule source. filter doit être omis.
githubreporepo est owner/repo.
gitlabprojectID ou chemin du projet GitLab.
forgejoreporepo est owner/repo.

filter

TypeClés requisesNotes
semverAucuneallow peut contenir patch, minor, major.
dateformatFormat de date utilisé pour analyser les balises.
regexpattern, orderorder doit être numeric ou lexicographic.
latestAucuneUtilise le dernier candidat.

Protection des données

data_protect:
  data:
    - name: db
      backup:
        strategy: database.pgdumpall
        service: postgres
      restore:
        strategy: database.pgimport
        service: postgres
    - name: uploads
      backup:
        strategy: files.copy_after_stop
        include:
          - ./uploads
      restore:
        strategy: files.copy
        include:
          - ./uploads

data_protect.data[]

CléTypeRequisDescription
namestringOuiNom unique de l’élément de données.
backupobjectNonAction de sauvegarde.
restoreobjectNonAction de restauration.

Action de données

CléTypeRequisDescription
strategystringOuifiles.copy, files.copy_after_stop, database.pgdumpall ou database.pgimport.
servicestringCond.Requis pour les stratégies database.*. Nom du service Compose.
include[]stringCond.Requis pour les stratégies files.*. ./... ou les chemins contenant / sont des chemins de service ; les noms simples sont des volumes Docker.

Sauvegardes

backup:
  data:
    - name: db
      provider: rustic
      enabled: true
      schedule: "0 2 * * *"
CléTypeRequisDescription
namestringOuiDoit référencer un data_protect.data[].name avec une action de sauvegarde.
providerstringNonNom du fournisseur de sauvegarde.
enabledboolNonActiver ou désactiver cette entrée de sauvegarde.
schedulestringNonPlanification cron.

Migration

migrate:
  data:
    - name: db
      enabled: true
CléTypeRequisDescription
namestringOuiDoit référencer un data_protect.data[].name avec les deux actions de sauvegarde et de restauration.
enabledboolNonActiver ou désactiver la migration pour cet élément.
Dernière modification • Renovate Bot