5.5. Trigger
5.5.1. 트리거 개요
브로커는 트리거와 함께 이벤트를 이벤트 소스에서 이벤트 싱크로 전달하는 데 사용할 수 있습니다. 이벤트는 HTTP POST
요청으로 이벤트 소스에서 브로커로 전송됩니다. 이벤트가 브로커에 진입하면 트리거를 사용하여 CloudEvent 특성에 따라 필터링하고 이벤트 싱크에 HTTP POST
요청으로 전송할 수 있습니다.
Kafka 브로커를 사용하는 경우 트리거에서 이벤트 싱크로 이벤트의 전달 순서를 구성할 수 있습니다. 트리거에 대한 이벤트 전달 순서 구성을 참조하십시오.
5.5.1.1. 트리거에 대한 이벤트 전달 순서 구성
Kafka 브로커를 사용하는 경우 트리거에서 이벤트 싱크로 이벤트의 전달 순서를 구성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator, Knative Eventing, Knative Kafka가 OpenShift Dedicated 클러스터에 설치되어 있습니다.
- Kafka 브로커는 클러스터에서 사용할 수 있도록 활성화되며 Kafka 브로커를 생성했습니다.
- 프로젝트를 생성했거나 OpenShift Dedicated에서 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
-
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 ...
지원되는 소비자 전달 보장은 다음과 같습니다.
순서 없음
- 정렬되지 않은 소비자는 적절한 오프셋 관리를 유지하면서 순서가 없는 메시지를 전달하는 비차단 소비자입니다.
순서
정렬된 소비자는 파티션의 다음 메시지를 전달하기 전에 CloudEvent 구독자의 성공적인 응답을 기다리는 파티션별 차단 소비자입니다.
기본 순서 보장은
순서가 지정되지 않습니다
.
Trigger
오브젝트를 적용합니다.$ oc apply -f <filename>
5.5.1.2. 다음 단계
- 이벤트를 이벤트 싱크로 전달하지 못하는 경우 적용되는 이벤트 전달 매개변수를 구성합니다. 이벤트 전달 매개변수 구성 예를 참조하십시오.
5.5.2. 트리거 생성
브로커는 트리거와 함께 이벤트를 이벤트 소스에서 이벤트 싱크로 전달하는 데 사용할 수 있습니다. 이벤트는 HTTP POST
요청으로 이벤트 소스에서 브로커로 전송됩니다. 이벤트가 브로커에 진입하면 트리거를 사용하여 CloudEvent 특성에 따라 필터링하고 이벤트 싱크에 HTTP POST
요청으로 전송할 수 있습니다.
5.5.2.1. 관리자 화면을 사용하여 트리거 생성
OpenShift Dedicated 웹 콘솔을 사용하면 간소화되고 직관적인 사용자 인터페이스를 통해 트리거를 생성할 수 있습니다. Knative Eventing이 클러스터에 설치되고 브로커를 생성한 후 웹 콘솔을 사용하여 트리거를 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Dedicated 클러스터에 설치되어 있습니다.
- 웹 콘솔에 로그인한 후 관리자 화면에 있습니다.
- OpenShift Dedicated에 대한 클러스터 또는 전용 관리자 권한이 있습니다.
- Knative 브로커를 생성했습니다.
- 구독자로 사용할 Knative 서비스를 생성했습니다.
절차
-
OpenShift Dedicated 웹 콘솔의 관리자 화면에서 Serverless
Eventing 으로 이동합니다. - 브로커 탭에서 트리거를 추가할 브로커의 옵션 메뉴 를 선택합니다.
- 목록에서 트리거 추가를 클릭합니다.
- 트리거 추가 대화 상자에서 트리거에 대한 구독자를 선택합니다. 구독자는 브로커에서 이벤트를 수신하는 Knative 서비스입니다.
- 추가를 클릭합니다.
5.5.2.2. 개발자 화면을 사용하여 트리거 생성
OpenShift Dedicated 웹 콘솔을 사용하면 간소화되고 직관적인 사용자 인터페이스를 통해 트리거를 생성할 수 있습니다. Knative Eventing이 클러스터에 설치되고 브로커를 생성한 후 웹 콘솔을 사용하여 트리거를 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator, Knative Serving, Knative Eventing이 OpenShift Dedicated 클러스터에 설치되어 있습니다.
- 웹 콘솔에 로그인했습니다.
- 프로젝트를 생성했거나 OpenShift Dedicated에서 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
- 트리거에 연결할 브로커 및 Knative 서비스 또는 기타 이벤트 싱크를 생성했습니다.
절차
- 개발자 화면에서 토폴로지 페이지로 이동합니다.
- 트리거를 생성할 브로커 위로 마우스 커서를 이동한 후 화살표를 끕니다. 트리거 추가 옵션이 표시됩니다.
- 트리거 추가를 클릭합니다.
- 구독자 목록에서 싱크를 선택합니다.
- 추가를 클릭합니다.
검증
- 서브스크립션이 생성되면 토폴로지 페이지에서 브로커를 이벤트 싱크에 연결하는 선으로 표시할 수 있습니다.
트리거 삭제
- 개발자 화면에서 토폴로지 페이지로 이동합니다.
- 삭제할 트리거를 클릭합니다.
- 작업 컨텍스트 메뉴에서 트리거 삭제를 선택합니다.
5.5.2.3. Knative CLI를 사용하여 트리거 생성
kn trigger create
명령을 사용하여 트리거를 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Dedicated 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Dedicated에서 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
트리거를 생성합니다.
$ 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.5.3. 명령줄에서 트리거 나열
Knative(kn
) CLI를 사용하여 트리거를 나열하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다.
5.5.3.1. Knative CLI를 사용하여 트리거 나열
kn trigger list
명령을 사용하여 클러스터의 기존 트리거를 나열할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Dedicated 클러스터에 설치되어 있습니다.
-
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.5.4. 명령줄에서 트리거 설명
Knative(kn
) CLI를 사용하여 트리거를 설명하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다.
5.5.4.1. Knative CLI를 사용하여 트리거 설명
kn trigger describe
명령을 사용하여 Knative CLI를 사용하여 클러스터의 기존 트리거에 대한 정보를 출력할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Dedicated 클러스터에 설치되어 있습니다.
-
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.5.5. 트리거를 싱크에 연결
트리거를 싱크로 보내기 전에 브로커의 이벤트가 필터링되도록 트리거를 싱크에 연결할 수 있습니다. 트리거에 연결된 싱크는 Trigger
오브젝트의 리소스 사양에 구독자
로 구성됩니다.
Kafka 싱크에 연결된 Trigger
오브젝트의 예
apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: <trigger_name> 1 spec: ... subscriber: ref: apiVersion: eventing.knative.dev/v1alpha1 kind: KafkaSink name: <kafka_sink_name> 2
5.5.6. 명령줄에서 트리거 필터링
Knative(kn
) CLI를 사용하여 트리거를 사용하여 이벤트를 필터링하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다. kn trigger create
명령을 적절한 플래그와 함께 사용하여 트리거를 사용하여 이벤트를 필터링할 수 있습니다.
5.5.6.1. Knative CLI를 사용하여 트리거로 이벤트 필터링
다음 트리거 예제에서는 type: dev.knative.samples.helloworld
특성이 있는 이벤트만 이벤트 싱크로 전송됩니다.
$ kn trigger create <trigger_name> --broker <broker_name> --filter type=dev.knative.samples.helloworld --sink ksvc:<service_name>
여러 속성을 사용하여 이벤트를 필터링할 수도 있습니다. 다음 예제에서는 type, source 및 extension 특성을 사용하여 이벤트를 필터링하는 방법을 보여줍니다.
$ 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.5.7. 명령줄에서 트리거 업데이트
Knative(kn
) CLI를 사용하여 트리거를 업데이트하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다.
5.5.7.1. Knative CLI를 사용하여 트리거 업데이트
kn trigger update
명령을 특정 플래그와 함께 사용하여 트리거의 특성을 업데이트할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Dedicated 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Dedicated에서 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
태그를 업데이트합니다.
$ 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.5.8. 명령줄에서 트리거 삭제
Knative(kn
) CLI를 사용하여 트리거를 삭제하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다.
5.5.8.1. Knative CLI를 사용하여 트리거 삭제
kn trigger delete
명령을 사용하여 트리거를 삭제할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Dedicated 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Dedicated에서 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
트리거를 삭제합니다.
$ kn trigger delete <trigger_name>
검증
기존 트리거를 나열합니다.
$ kn trigger list
트리거가 더 이상 존재하지 않는지 확인합니다.
출력 예
No triggers found.