8.2. Kubernetes リソースのトリガー
デプロイメント や ステートフルセット などの Kubernetes リソースが新しいイメージバージョンをシームレスに利用できるようにするには、OpenShift Container Platform でイメージストリームの変更トリガーを設定します。これにより、関連付けられたイメージストリームが変更を検出すると、アプリケーションのデプロイメントが自動的に更新されます。
API 定義の一部としてトリガーを制御するためのフィールドセットを含むデプロイメントおよびビルド設定とは異なり、Kubernetes リソースにはトリガー用のフィールドがありません。その代わりに、OpenShift Container Platform でアノテーションを使用してトリガーを要求できるようにします。
アノテーションは以下のように定義されます。
apiVersion: v1
kind: Pod
metadata:
annotations:
image.openshift.io/triggers:
[
{
"from": {
"kind": "ImageStreamTag",
"name": "example:latest",
"namespace": "myapp"
},
"fieldPath": "spec.template.spec.containers[?(@.name==\"web\")].image",
"paused": false
},
# ...
]
# ...
ここでは、以下のようになります。
kind-
トリガーの発生元となるリソースを指定します。値は必ず
ImageStreamTagとします。 name- イメージストリームタグの名前を指定します。
namespace- オブジェクトの namespace を指定します。このフィールドは任意です。
fieldPath-
変更する JSON パスを指定します。このフィールドは制限され、ID またはインデックスでコンテナーに正確に一致する JSON パス式のみを受け入れます。Pod の場合、JSON パスは
spec.containers[?(@.name='web')].imageです。 paused-
トリガーを一時停止するか指定します。これはオプションのフィールドで、デフォルト値は
falseです。このトリガーを一時的に無効にするには、値をtrueに設定します。
コア Kubernetes リソースの 1 つに Pod テンプレートとこのアノテーションの両方が含まれる場合、OpenShift Container Platform は現時点でトリガーで参照されるイメージストリームタグに関連付けられているイメージを使用してオブジェクトの更新を試行します。この更新は、指定の fieldPath に対して実行されます。
Pod テンプレートおよびアノテーションの両方が含まれるコア Kubernetes リソースの例には、以下が含まれます。
-
CronJobs -
Deployments -
StatefulSets -
DaemonSets -
Jobs -
ReplicationControllers -
Pods