8.2. Kubernetes リソースのトリガー
Deployments および StatefulSet などの Kubernetes リソースが新しいイメージバージョンをシームレスに消費できるようにするには、Red Hat OpenShift Service on AWS でイメージストリームの変更トリガーを設定します。これにより、関連付けられたイメージストリームが変更を検出すると、アプリケーションのデプロイメントが自動的に更新されます。
API 定義の一部としてトリガーを制御するためのフィールドセットを含むデプロイメントおよびビルド設定とは異なり、Kubernetes リソースにはトリガー用のフィールドがありません。代わりに、Red Hat OpenShift Service on AWS のアノテーションを使用してトリガーを要求できます。
アノテーションは以下のように定義されます。
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 テンプレートとこのアノテーションの両方が含まれている場合、Red Hat OpenShift Service on AWS は、トリガーによって参照されるイメージストリームタグに現在関連付けられているイメージを使用してオブジェクトを更新しようとします。この更新は、指定の fieldPath に対して実行されます。
Pod テンプレートおよびアノテーションの両方が含まれるコア Kubernetes リソースの例には、以下が含まれます。
-
CronJobs -
Deployments -
StatefulSets -
DaemonSets -
Jobs -
ReplicationControllers -
Pods