8.2. Déclenchement des ressources Kubernetes

Les ressources Kubernetes n'ont pas de champs pour le déclenchement, contrairement aux configurations de déploiement et de construction, qui incluent dans leur définition d'API un ensemble de champs pour contrôler les déclencheurs. Au lieu de cela, vous pouvez utiliser des annotations dans OpenShift Container Platform pour demander un déclenchement.

L'annotation est définie comme suit :

Key: image.openshift.io/triggers
Value:
[
 {
   "from": {
     "kind": "ImageStreamTag", 1
     "name": "example:latest", 2
     "namespace": "myapp" 3
   },
   "fieldPath": "spec.template.spec.containers[?(@.name==\"web\")].image", 4
   "paused": false 5
 },
 ...
]
1
Requis : kind est la ressource à partir de laquelle le déclencheur doit être ImageStreamTag.
2
Obligatoire : name doit être le nom d'une balise de flux d'images.
3
Facultatif : namespace indique par défaut l'espace de noms de l'objet.
4
Obligatoire : fieldPath est le chemin JSON à modifier. Ce champ est limité et n'accepte qu'une expression de chemin JSON qui correspond précisément à un conteneur par ID ou index. Pour les pods, le chemin JSON est "spec.containers[ ?(@.name='web')].image".
5
Facultatif : paused indique si le déclencheur est mis en pause ou non, la valeur par défaut étant false. Définissez paused à true pour désactiver temporairement ce déclencheur.

Lorsqu'une des ressources principales de Kubernetes contient à la fois un modèle de pod et cette annotation, OpenShift Container Platform tente de mettre à jour l'objet en utilisant l'image actuellement associée à la balise de flux d'images qui est référencée par le déclencheur. La mise à jour est effectuée par rapport à l'adresse fieldPath spécifiée.

Voici quelques exemples de ressources de base de Kubernetes qui peuvent contenir à la fois un modèle de pod et une annotation :

  • CronJobs
  • Deployments
  • StatefulSets
  • DaemonSets
  • Jobs
  • ReplicationControllers
  • Pods