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
です。このトリガーを一時的に無効にするには、paused
をtrue
に設定します。
コア Kubernetes リソースの 1 つに Pod テンプレートとこのアノテーションの両方が含まれる場合、OpenShift Container Platform は現時点でトリガーで参照されるイメージストリームタグに関連付けられているイメージを使用してオブジェクトの更新を試行します。この更新は、指定の fieldPath
に対して実行されます。
Pod テンプレートおよびアノテーションの両方が含まれるコア Kubernetes リソースの例には、以下が含まれます。
-
CronJobs
-
Deployments
-
StatefulSets
-
DaemonSets
-
Jobs
-
ReplicationControllers
-
Pods