8.2. Kubernetes リソースのトリガー

API 定義の一部としてトリガーを制御するためのフィールドセットを含むデプロイメントおよびビルド設定とは異なり、Kubernetes リソースにはトリガー用のフィールドがありません。その代わりに、OpenShift Container Platform でアノテーションを使用してトリガーを要求できるようにします。

アノテーションは以下のように定義されます。

apiVersion: v1
kind: Pod
metadata:
  annotations:
    image.openshift.io/triggers:
      [
       {
         "from": {
           "kind": "ImageStreamTag", 1
           "name": "example:latest", 2
           "namespace": "myapp" 3
         },
         "fieldPath": "spec.template.spec.containers[?(@.name==\"web\")].image", 4
         "paused": false 5
       },
      # ...
      ]
# ...
1
必須: kind は、トリガーするリソースであり、ImageStreamTag である必要があります。
2
必須: name はイメージストリームタグの名前である必要があります。
3
オプション: namespace はデフォルトでオブジェクトの namespace に設定されます。
4
必須: fieldPath は変更する JSON パスです。このフィールドは制限され、ID またはインデックスでコンテナーに正確に一致する JSON パス式のみを受け入れます。Pod の場合、JSON パスは spec.containers[?(@.name='web')].image です。
5
オプション: paused はトリガーが一時停止されるかどうかを意味し、デフォルト値は false です。このトリガーを一時的に無効にするには、pausedtrue に設定します。

コア Kubernetes リソースの 1 つに Pod テンプレートとこのアノテーションの両方が含まれる場合、OpenShift Container Platform は現時点でトリガーで参照されるイメージストリームタグに関連付けられているイメージを使用してオブジェクトの更新を試行します。この更新は、指定の fieldPath に対して実行されます。

Pod テンプレートおよびアノテーションの両方が含まれるコア Kubernetes リソースの例には、以下が含まれます。

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