8.2. Kubernetes 리소스 트리거
Kubernetes 리소스에는 API 정의의 일부로 트리거 제어를 위한 필드 집합을 포함하는 배포 및 빌드 구성과 달리 트리거를 위한 필드가 없습니다. 대신 AWS의 Red Hat OpenShift Service에서 주석을 사용하여 트리거를 요청할 수 있습니다.
주석은 다음과 같이 정의됩니다.
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
입니다. 이 트리거를 일시적으로 비활성화하려면paused
를true
로 설정합니다.
핵심 Kubernetes 리소스 중 하나에 pod 템플릿과 이 주석이 모두 포함된 경우 AWS의 Red Hat OpenShift Service는 트리거에서 참조하는 이미지 스트림 태그와 현재 연결된 이미지를 사용하여 오브젝트를 업데이트하려고 합니다. 업데이트는 지정된 fieldPath
에 대해 수행됩니다.
pod 템플릿 및 주석을 모두 포함하는 코어 Kubernetes 리소스의 예는 다음과 같습니다.
-
CronJobs
-
Deployments
-
StatefulSets
-
DaemonSets
-
Jobs
-
ReplicationControllers
-
Pods