5.14. Trigger
브로커는 트리거와 함께 이벤트 소스에서 이벤트 싱크로 이벤트를 전달하는 데 사용할 수 있습니다. 이벤트는 HTTP POST
요청으로 이벤트 소스에서 브로커로 전송됩니다. 이벤트가 브로커에 진입하면 트리거를 사용하여 CloudEvent 속성에 의해 필터링되고 이벤트 싱크에 HTTP POST
요청으로 전송할 수 있습니다.
Kafka 브로커를 사용하는 경우 트리거에서 이벤트 싱크로 이벤트 전달 순서를 구성할 수 있습니다. 트리거의 이벤트 전달 순서 구성을 참조하십시오.
5.14.1. 웹 콘솔을 사용하여 트리거 생성
OpenShift Container Platform 웹 콘솔을 사용하면 간소화되고 직관적인 사용자 인터페이스를 사용하여 트리거를 생성할 수 있습니다. Knative Eventing이 클러스터에 설치되고 브로커를 생성한 후 웹 콘솔을 사용하여 트리거를 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator, Knative Serving, Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
- 웹 콘솔에 로그인했습니다.
- 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
- 트리거에 연결할 브로커 및 Knative 서비스 또는 기타 이벤트 싱크를 생성했습니다.
절차
- 개발자 화면에서 토폴로지 페이지로 이동합니다.
- 트리거를 생성할 브로커 위로 마우스 커서를 이동한 후 화살표를 끕니다. 트리거 추가 옵션이 표시됩니다.
- 트리거 추가를 클릭합니다.
- Subscriber 목록에서 싱크를 선택합니다.
- 추가를 클릭합니다.
검증
- 서브스크립션이 생성되면 Topology 페이지에서 브로커를 이벤트 싱크에 연결하는 선으로 표시할 수 있습니다.
트리거 삭제
- 개발자 화면에서 토폴로지 페이지로 이동합니다.
- 삭제할 트리거를 클릭합니다.
- 작업 컨텍스트 메뉴에서 트리거 삭제를 선택합니다.
5.14.2. Knative CLI를 사용하여 트리거 생성
Knative(kn
) CLI를 사용하여 트리거를 생성하면 YAML 파일을 직접 수정하는 것보다 더 간소화되고 직관적인 사용자 인터페이스를 제공합니다. kn trigger create
명령을 사용하여 트리거를 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
트리거를 생성합니다.
$ kn trigger create <trigger_name> --broker <broker_name> --filter <key=value> --sink <sink_name>
또는 트리거를 생성하고 브로커 삽입을 사용하여
default
브로커를 동시에 생성할 수 있습니다.$ kn trigger create <trigger_name> --inject-broker --filter <key=value> --sink <sink_name>
기본적으로 트리거는 브로커에 전송된 모든 이벤트를 해당 브로커에 가입된 싱크로 전달합니다. 트리거에
--filter
특성을 사용하면 브로커의 이벤트를 필터링하여 구독자에게 정의된 기준에 따라 일부 이벤트만 제공할 수 있습니다.
5.14.3. Knative CLI를 사용하여 트리거 나열
Knative(kn
) CLI를 사용하여 트리거를 나열하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다. kn trigger list
명령을 사용하여 클러스터의 기존 트리거를 나열할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다.
절차
사용 가능한 트리거 목록을 인쇄합니다.
$ kn trigger list
출력 예
NAME BROKER SINK AGE CONDITIONS READY REASON email default ksvc:edisplay 4s 5 OK / 5 True ping default ksvc:edisplay 32s 5 OK / 5 True
선택 사항: JSON 형식으로 트리거 목록을 인쇄합니다.
$ kn trigger list -o json
5.14.4. Knative CLI를 사용하여 트리거 설명
Knative(kn
) CLI를 사용하여 트리거를 설명하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다. kn trigger describe
명령을 사용하여 Knative CLI를 사용하여 클러스터의 기존 트리거에 대한 정보를 출력할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 트리거를 생성했습니다.
절차
명령을 입력합니다.
$ kn trigger describe <trigger_name>
출력 예
Name: ping Namespace: default Labels: eventing.knative.dev/broker=default Annotations: eventing.knative.dev/creator=kube:admin, eventing.knative.dev/lastModifier=kube:admin Age: 2m Broker: default Filter: type: dev.knative.event Sink: Name: edisplay Namespace: default Resource: Service (serving.knative.dev/v1) Conditions: OK TYPE AGE REASON ++ Ready 2m ++ BrokerReady 2m ++ DependencyReady 2m ++ Subscribed 2m ++ SubscriberResolved 2m
5.14.5. Knative CLI를 사용하여 트리거로 이벤트 필터링
Knative(kn
) CLI를 사용하여 이벤트를 필터링하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다. kn trigger create
명령을 적절한 플래그와 함께 사용하여 트리거를 사용하여 이벤트를 필터링할 수 있습니다.
다음 트리거 예제에서는 type: dev.knative.samples.helloworld
속성이 있는 이벤트만 이벤트 싱크로 전송됩니다.
$ kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink ksvc:<service_name>
여러 특성을 사용하여 이벤트를 필터링할 수도 있습니다. 다음 예제에서는 유형, 소스 및 확장 특성을 사용하여 이벤트를 필터링하는 방법을 보여줍니다.
$ kn trigger create <trigger_name> --broker <broker_name> --sink ksvc:<service_name> \ --filter type=dev.knative.samples.helloworld \ --filter source=dev.knative.samples/helloworldsource \ --filter myextension=my-extension-value
5.14.6. Knative CLI를 사용하여 트리거 업데이트
Knative(kn
) CLI를 사용하여 트리거를 업데이트하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다. kn trigger update
명령을 특정 플래그와 함께 사용하여 트리거의 특성을 업데이트할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
태그를 업데이트합니다.
$ kn trigger update <trigger_name> --filter <key=value> --sink <sink_name> [flags]
트리거를 업데이트하여 수신 이벤트와 정확히 일치하는 이벤트 특성을 필터링할 수 있습니다. 예를 들면
type
특성을 사용합니다.$ kn trigger update <trigger_name> --filter type=knative.dev.event
트리거에서 필터 특성을 제거할 수 있습니다. 예를 들어
type
키를 사용하여 필터 특성을 제거할 수 있습니다.$ kn trigger update <trigger_name> --filter type-
--sink
매개변수를 사용하여 트리거의 이벤트 싱크를 변경할 수 있습니다.$ kn trigger update <trigger_name> --sink ksvc:my-event-sink
5.14.7. Knative CLI를 사용하여 트리거 삭제
Knative(kn
) CLI를 사용하여 트리거를 삭제하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다. kn trigger delete
명령을 사용하여 트리거를 삭제할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
트리거를 삭제합니다.
$ kn trigger delete <trigger_name>
검증
기존 트리거를 나열합니다.
$ kn trigger list
트리거가 더 이상 존재하지 않는지 확인합니다.
출력 예
No triggers found.
5.14.8. 트리거의 이벤트 전달 순서 구성
Kafka 브로커를 사용하는 경우 트리거에서 이벤트 싱크로 이벤트 전달 순서를 구성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator, Knative Eventing, Knative Kafka가 OpenShift Container Platform 클러스터에 설치되어 있습니다.
- Kafka 브로커는 클러스터에서 사용할 수 있도록 활성화되며 Kafka 브로커를 생성했습니다.
- 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
-
OpenShift(
oc
) CLI를 설치했습니다.
절차
Trigger
오브젝트를 생성하거나 수정하고kafka.eventing.knative.dev/delivery.order
주석을 설정합니다.apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: <trigger_name> annotations: kafka.eventing.knative.dev/delivery.order: ordered ...
지원되는 소비자 제공 보장은 다음과 같습니다.
순서가 지정되지 않음
- 순서가 지정되지 않은 소비자는 적절한 오프셋 관리를 유지하면서 순서가 지정되지 않은 메시지를 전달하는 비차단 소비자입니다.
ordered
순서가 지정된 소비자는 CloudEvent 구독자의 성공적인 응답을 기다린 후 파티션의 다음 메시지를 전달하기 전에 대기 중인 소비자별 소비자입니다.
기본 주문 보장은 순서가
지정되지
않습니다.
Trigger
오브젝트를 적용합니다.$ oc apply -f <filename>
5.14.9. 다음 단계
- 이벤트가 이벤트 싱크로 전달되지 않는 경우 적용되는 이벤트 전달 매개변수를 구성합니다. 이벤트 전달 매개변수 구성 예를 참조하십시오.