8.2. Kubernetes 리소스 트리거

Kubernetes 리소스에는 API 정의의 일부로 트리거 제어를 위한 필드 집합을 포함하는 배포 및 빌드 구성과 달리 트리거를 위한 필드가 없습니다. 대신 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는 기본적으로 개체의 네임스페이스로 설정됩니다.
4
필수: fieldPath는 변경할 JSON 경로입니다. 이 필드는 제한되어 ID 또는 인덱스로 컨테이너와 정확히 일치하는 JSON 경로식만 허용됩니다. Pod의 경우 JSON 경로는 spec.containers[?(@.name='web')].image 입니다.
5
선택 사항: paused는 트리거가 일시 정지되었는지 여부이며 기본값은 false입니다. 이 트리거를 일시적으로 비활성화하려면 pausedtrue로 설정합니다.

코어 Kubernetes 리소스 중 하나에 pod 템플릿과 이 주석이 모두 포함된 경우 OpenShift Container Platform은 트리거에서 참조하는 이미지 스트림 태그와 현재 연결된 이미지를 사용하여 개체의 업데이트를 시도합니다. 업데이트는 지정된 fieldPath에 대해 수행됩니다.

pod 템플릿 및 주석을 모두 포함하는 코어 Kubernetes 리소스의 예는 다음과 같습니다.

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