Manifeste de job
Exemple minimal
Section intitulée « Exemple minimal »apiVersion: odysseus/v1kind: Jobmetadata: name: api-migratespec: image: registry.delta-telematics.ca/acme/api:1.4.2 command: ["/app/migrate", "up"] networks: [acme-network] restartPolicy: "no" # quoted — bare no is YAML false backoffLimit: 2 activeDeadlineSeconds: 600 ttlAfterFinished: 1h secrets: - name: DB vaultPath: deployments/api/dbJobManifest · testdata/docs-examples/migration-job.yamlSpécification de job
Section intitulée « Spécification de job »Generated from JobSpec. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Champ | Type | Requis | Défaut | Mutabilité | Depuis |
|---|---|---|---|---|---|
activeDeadlineSeconds |
integer | non | — | in-place | 0.7.6 |
backoffLimit |
integer | non | — | in-place | 0.7.6 |
command |
string[] | non | — | recreate | 0.7.6 |
entrypoint |
string[] | non | — | recreate | 0.7.6 |
environment |
object | non | — | recreate | 0.7.6 |
healthCheck |
HealthCheckSpec | non | — | recreate | 0.7.6 |
image |
string | non | — | recreate | 0.7.6 |
init |
boolean | non | — | recreate | 0.21.1 |
networks |
string[] | non | — | recreate | 0.7.6 |
placement |
PlacementSpec | non | — | recreate | 0.7.6 |
resources |
ResourceSpec | non | — | recreate | 0.7.6 |
restartPolicy |
string | non | — | recreate | 0.7.6 |
secrets |
SecretSpec[] | non | — | recreate | 0.7.6 |
ttlAfterFinished |
string | non | — | in-place | 0.7.6 |
ulimits |
Ulimit[] | non | — | recreate | 0.21.1 |
volumes |
VolumeSpec[] | non | — | recreate | 0.7.6 |
workingDir |
string | non | — | recreate | 0.7.6 |
activeDeadlineSeconds: 0 = pas de délai
backoffLimit: nil → 3 (JD6)
command: La commande remplace la CMD de l’image, sous forme d’argv. Une valeur vide laisse l’image par défaut.
entrypoint: Entrypoint remplace l’ENTRYPOINT de l’image, sous forme de argv.
environment: Environment sont des variables d’environnement simples définies sur chaque conteneur. Ne mettez jamais d’identifiant ici — utilisez secrets:, qui se résout depuis Vault à la distribution et ne stocke jamais la valeur.
healthCheck: HealthCheck est la sonde du conteneur. Seul le type: exec produit un véritable healthcheck ; une déclaration http ou tcp est refusée plutôt que laissée inactive.
image: Image est la référence complète de l’image de conteneur, incluant un tag explicite. Jamais “:latest” en production : un tag non épinglé rend un rollback impossible à décrire.
init: Init exécute le petit init de Docker en tant que PID 1 afin que les processus orphelins soient récupérés. Omettez-le pour prendre la valeur par défaut de la plateforme, qui est activée ; définissez false uniquement pour une image qui exécute déjà son propre init.
networks: Networks sont les réseaux Docker auxquels le conteneur se joint. Les noms sont préfixés par le locataire pour vous ; un backend doit rester hors de traefik-public.
placement: SP-4 ; partagé : Jobs place aussi
resources: Resources sont les limites et requêtes de CPU et de mémoire, écrites comme limits/requests plutôt que comme quatre clés plates.
restartPolicy: RestartPolicy est ce que Docker fait lorsque le conteneur se termine. Les valeurs acceptées diffèrent selon le type et sont appliquées par le validateur propre à chaque type.
secrets: Secrets sont des références à du matériel dans Vault, injectées comme variables d’environnement à la distribution. La valeur n’apparaît jamais dans ce document.
ttlAfterFinished: durée ; “” = conserver
ulimits: Ulimits sont les limites de ressources POSIX du conteneur. Un ulimit par conteneur remplace les valeurs par défaut du démon, ce qui est la méthode prise en charge pour augmenter un plafond de descripteur de fichier — jamais un daemon.json édité à la main.
volumes: Volumes sont les volumes nommés et les montages liés attachés à chaque conteneur.
workingDir: WorkingDir est le répertoire dans lequel le processus démarre, remplaçant le WORKDIR de l’image.
ressources
Section intitulée « ressources »Generated from ResourceSpec. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Champ | Type | Requis | Défaut | Mutabilité | Depuis |
|---|---|---|---|---|---|
limits |
ResourceValues | non | — | recreate | 0.1.0 |
requests |
ResourceValues | non | — | recreate | 0.1.0 |
Generated from Ulimit. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Champ | Type | Requis | Défaut | Mutabilité | Depuis |
|---|---|---|---|---|---|
hard |
integer | non | — | recreate | 0.21.1 |
name |
string | non | — | recreate | 0.21.1 |
soft |
integer | non | — | recreate | 0.21.1 |
healthCheck
Section intitulée « healthCheck »Generated from HealthCheckSpec. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Champ | Type | Requis | Défaut | Mutabilité | Depuis |
|---|---|---|---|---|---|
command |
any | non | — | recreate | 0.1.0 |
interval |
string | non | — | recreate | 0.1.0 |
path |
string | non | — | recreate | 0.1.0 |
port |
integer | non | — | recreate | 0.1.0 |
retries |
integer | non | — | recreate | 0.1.0 |
startPeriod |
string | non | — | recreate | 0.1.0 |
timeout |
string | non | — | recreate | 0.1.0 |
type |
string | non | — | recreate | 0.1.0 |
command: Command est la commande de sonde, sous forme de chaîne shell ou de liste argv (voir ShellOrArgv). Les deux aboutissent au même []string stocké.
interval — Il n’y a pas de valeur minimale. Plafonner un intervalle vers le haut retarderait la détection des défaillances, donc
contrairement au délai d’attente, il n’est pas monotone en termes de sécurité — un délai d’attente plus long ne peut que réduire
les arrêts intempestifs, un intervalle plus long ne peut que ralentir la détection. odysseus spec-audit
rapporte la valeur ; rien ne la rejette ou ne la modifie.
timeout — Il y a une valeur minimale de 10s pour les sondes exec : un exec ayant dépassé le délai reçoit SIGKILL et est reparenté à un
PID 1 qui ne le récupère jamais, donc une valeur plus courte est refusée directement à la création (code
healthcheck_timeout_below_floor). Sur une mise à jour de DÉPLOIEMENT qui omet healthCheck
entièrement, la valeur stockée est d’abord restaurée puis ENSUITE augmentée à la valeur minimale si elle
est antérieure à cette règle — silencieusement, sauf si vous lisez la réponse, où elle est
révélée comme healthcheck_timeout_clamped. Omettez le délai d’attente pour prendre la valeur par défaut de 30s de Docker,
qui dépasse déjà la valeur minimale ; indiquez-la explicitement uniquement pour définir une borne plus stricte que
la valeur par défaut.
type: http, tcp, exec
Generated from VolumeSpec. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Champ | Type | Requis | Défaut | Mutabilité | Depuis |
|---|---|---|---|---|---|
distributedVolumeId |
string | non | — | recreate | 0.63.0 |
readOnly |
boolean | non | — | recreate | 0.1.0 |
source |
string | non | — | recreate | 0.1.0 |
target |
string | non | — | recreate | 0.1.0 |
distributedVolumeId: DistributedVolumeID monte un volume DVM par son ID typé (#414). Sa
PRÉSENCE est le discriminateur — la surface du manifeste n’a délibérément pas
de clé type (chaque volume de manifeste simple est un montage de liaison, voir
convertVolumeSpecs), donc exactement l’un des source/distributedVolumeId est
défini, et le validateur de forme en aval rejette les deux ou aucun.
Generated from SecretSpec. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Champ | Type | Requis | Défaut | Mutabilité | Depuis |
|---|---|---|---|---|---|
anchor |
string | non | — | recreate | 0.37.0 |
mountPath |
string | non | — | recreate | 0.1.0 |
name |
string | non | — | recreate | 0.1.0 |
rotation |
string | non | — | recreate | 0.1.0 |
vaultPath |
string | non | — | recreate | 0.1.0 |
anchor: Ancrage : volume(<id>) | processus | externe — WP18 S10.
placement
Section intitulée « placement »Generated from PlacementSpec. Hand edits to this table are overwritten on the next build — change the Go doc comment, or the generator.
| Champ | Type | Requis | Défaut | Mutabilité | Depuis |
|---|---|---|---|---|---|
affinity |
PlacementSelector | non | — | recreate | 0.7.6 |
antiAffinity |
PlacementSelector | non | — | recreate | 0.7.6 |
node |
string | non | — | recreate | 0.7.6 |
preferredZone |
string | non | — | recreate | 0.7.6 |
residency |
ResidencySpec | non | — | recreate | 0.74.0 |
affinity: L’affinité oriente le placement VERS les nœuds portant une étiquette. C’est une préférence que le scoreur pondère, pas un filtre qui refuse — un déploiement avec une affinité insatisfaisable est tout de même placé, juste pas là où il le demandait.
antiAffinity: AntiAffinity oriente le placement LOIN des nœuds portant une étiquette, avec la même sémantique de pondération sans refus que l’affinité.
node: Le nœud épingle la charge de travail à un nœud par son nom, atterrissant sur Deployment.NodeID.
Laissez-le non défini pour laisser l’ordonnanceur choisir ; une valeur vide ne supprime jamais une affectation que l’ordonnanceur a déjà faite.
preferredZone: PreferredZone nomme une zone périphérique que le scoreur préfère.
NOTE, pour que personne ne débogue cela deux fois : aucune zone n’est déclarée dans la configuration du plan de contrôle livrée aujourd’hui, donc cela ne s’évalue actuellement contre rien. C’est une constatation réelle avec son propre ticket, pas un défaut dans ce bloc.
residency: La résidence est l’endroit où la charge de travail a le droit légal de s’exécuter (S19, #557).