5.7. 서브스크립션
5.7.1. 서브스크립션 생성
채널 및 이벤트 싱크를 생성한 후 이벤트 전달을 활성화하는 서브스크립션을 생성할 수 있습니다. 서브스크립션은 이벤트를 전달할 채널 및 싱크(서브스크립션자라고도 함)를 지정하는 Subscription
오브젝트를 구성하여 생성합니다.
5.7.1.1. 관리자 화면을 사용하여 서브스크립션 생성
채널과 구독자 라고도 하는 이벤트 싱크를 생성한 후에는 서브스크립션을 생성하여 이벤트 전달을 활성화할 수 있습니다. 서브스크립션은 이벤트를 전달할 채널과 구독자를 지정하는 Subscription
오브젝트를 구성하여 생성합니다. 또한 오류를 처리하는 방법과 같은 몇 가지 구독자별 옵션을 지정할 수도 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
- 웹 콘솔에 로그인한 후 관리자 화면에 있습니다.
- OpenShift Container Platform에 대한 클러스터 관리자 권한이 있습니다.
- Knative 채널을 생성했습니다.
- 구독자로 사용할 Knative 서비스를 생성했습니다.
절차
-
OpenShift Container Platform 웹 콘솔의 관리자 화면에서 Serverless
Eventing으로 이동합니다. - 채널 탭에서 서브스크립션을 추가할 채널의 옵션 메뉴 를 선택합니다.
- 목록에서 서브스크립션 추가를 클릭합니다.
- 서브스크립션 추가 대화 상자에서 서브스크립션에 대한 구독자를 선택합니다. 구독자는 채널에서 이벤트를 수신하는 Knative 서비스입니다.
- 추가를 클릭합니다.
5.7.1.2. 개발자 화면을 사용하여 서브스크립션 생성
채널 및 이벤트 싱크를 생성한 후 이벤트 전달을 활성화하는 서브스크립션을 생성할 수 있습니다. OpenShift Container Platform 웹 콘솔을 사용하면 간결하고 직관적인 사용자 인터페이스를 사용하여 서브스크립션을 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator, Knative Serving, Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
- 웹 콘솔에 로그인했습니다.
- 이벤트 싱크(예: Knative 서비스) 및 채널을 생성했습니다.
- 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
- 개발자 화면에서 토폴로지 페이지로 이동합니다.
다음 방법 중 하나를 사용하여 서브스크립션을 생성합니다.
서브스크립션을 생성할 채널 위로 마우스 커서를 이동하고 화살표를 끕니다. 서브스크립션 추가 옵션이 표시됩니다.
- Subscriber 목록에서 싱크를 선택합니다.
- 추가를 클릭합니다.
- 채널과 동일한 네임스페이스 또는 프로젝트의 토폴로지 보기에서 서비스를 사용할 수 있는 경우, 서브스크립션을 생성할 채널을 클릭하고 화살표를 서비스로 직접 끌어 채널에서 해당 서비스로의 서브스크립션을 즉시 생성합니다.
검증
서브스크립션이 생성되면 토폴로지 보기에 채널을 서비스에 연결하는 선이 표시되어 이를 확인할 수 있습니다.
5.7.1.3. YAML을 사용하여 서브스크립션 생성
채널 및 이벤트 싱크를 생성한 후 이벤트 전달을 활성화하는 서브스크립션을 생성할 수 있습니다. YAML 파일을 사용하여 Knative 리소스를 생성하면 선언적 방식으로 서브스크립션을 설명할 수 있으며 재현 가능한 방식으로 서브스크립션을 설명할 수 있습니다. YAML을 사용하여 서브스크립션을 생성하려면 Subscription
오브젝트를 정의하는 YAML 파일을 생성한 다음 oc apply
명령을 사용하여 적용해야 합니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 클러스터에 설치되어 있습니다.
-
OpenShift CLI(
oc
)를 설치합니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
서브스크립션
오브젝트를 생성합니다.YAML 파일을 생성하고 다음 샘플 코드를 여기에 복사합니다.
apiVersion: messaging.knative.dev/v1beta1 kind: Subscription metadata: name: my-subscription 1 namespace: default spec: channel: 2 apiVersion: messaging.knative.dev/v1beta1 kind: Channel name: example-channel delivery: 3 deadLetterSink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: error-handler subscriber: 4 ref: apiVersion: serving.knative.dev/v1 kind: Service name: event-display
YAML 파일을 적용합니다.
$ oc apply -f <filename>
5.7.1.4. Knative CLI를 사용하여 서브스크립션 생성
채널 및 이벤트 싱크를 생성한 후 이벤트 전달을 활성화하는 서브스크립션을 생성할 수 있습니다. Knative(kn
) CLI를 사용하여 서브스크립션을 생성하면 YAML 파일을 직접 수정하는 것보다 더 간소화되고 직관적인 사용자 인터페이스를 제공합니다. kn subscription create
명령을 적절한 플래그와 함께 사용하여 서브스크립션을 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
싱크를 채널에 연결하는 서브스크립션을 생성합니다.
$ kn subscription create <subscription_name> \ --channel <group:version:kind>:<channel_name> \ 1 --sink <sink_prefix>:<sink_name> \ 2 --sink-dead-letter <sink_prefix>:<sink_name> 3
- 1
--channel은
처리해야 하는 클라우드 이벤트의 소스를 지정합니다. 채널 이름을 제공해야 합니다. 채널 사용자 정의 리소스에서 지원하는 기본InMemoryChannel
채널을 사용하지 않는 경우Channel
이름 앞에 지정된 채널 유형에 대해<group:version:kind>
를 추가해야 합니다. 예를 들어 Kafka 백업 채널의 경우messaging.knative.dev:v1beta1:KafkaChannel
이 됩니다.- 2
--sink는
이벤트를 전달해야 하는 대상 대상을 지정합니다. 기본적으로<sink_name>
은 서브스크립션과 동일한 네임스페이스에서 이 이름의 Knative 서비스로 해석됩니다. 다음 접두사 중 하나를 사용하여 싱크 유형을 지정할 수 있습니다.ksvc
- Knative 서비스입니다.
channel
- 대상으로 사용해야 하는 채널입니다. 여기에서는 기본 채널 유형만 참조할 수 있습니다.
broker
- Eventing 브로커입니다.
- 3
- 선택 사항:
--sink-dead-letter
는 이벤트를 전달하지 못하는 경우 이벤트를 전송해야 하는 싱크를 지정하는 데 사용할 선택적 플래그입니다. 자세한 내용은 OpenShift Serverless Event 제공 설명서를 참조하십시오.명령 예
$ kn subscription create mysubscription --channel mychannel --sink ksvc:event-display
출력 예
Subscription 'mysubscription' created in namespace 'default'.
검증
채널이 서브스크립션을 통해 이벤트 싱크 또는 구독자에 연결되어 있는지 확인하려면 기존 서브스크립션을 나열하고 출력을 검사합니다.
$ kn subscription list
출력 예
NAME CHANNEL SUBSCRIBER REPLY DEAD LETTER SINK READY REASON mysubscription Channel:mychannel ksvc:event-display True
서브스크립션 삭제
서브스크립션을 삭제합니다.
$ kn subscription delete <subscription_name>
5.7.1.5. 다음 단계
- 이벤트가 이벤트 싱크로 전달되지 않는 경우 적용되는 이벤트 전달 매개변수를 구성합니다. 이벤트 전달 매개변수 구성 예를 참조하십시오.
5.7.2. 서브스크립션 관리
5.7.2.1. Knative CLI를 사용하여 서브스크립션 설명
kn subscription describe
명령을 사용하여 Knative(kn
) CLI를 사용하여 터미널에서 서브스크립션에 대한 정보를 출력할 수 있습니다. Knative CLI를 사용하여 서브스크립션을 설명하는 경우 YAML 파일을 직접 보는 것보다 더 간소화되고 직관적인 사용자 인터페이스를 제공합니다.
사전 요구 사항
-
Knative(
kn
) CLI가 설치되어 있습니다. - 클러스터에 서브스크립션이 생성되어 있습니다.
절차
서브스크립션을 설명합니다.
$ kn subscription describe <subscription_name>
출력 예
Name: my-subscription Namespace: default Annotations: messaging.knative.dev/creator=openshift-user, messaging.knative.dev/lastModifier=min ... Age: 43s Channel: Channel:my-channel (messaging.knative.dev/v1) Subscriber: URI: http://edisplay.default.example.com Reply: Name: default Resource: Broker (eventing.knative.dev/v1) DeadLetterSink: Name: my-sink Resource: Service (serving.knative.dev/v1) Conditions: OK TYPE AGE REASON ++ Ready 43s ++ AddedToChannel 43s ++ ChannelReady 43s ++ ReferencesResolved 43s
5.7.2.2. Knative CLI를 사용하여 서브스크립션 나열
kn subscription list
명령을 사용하여 Knative(kn
) CLI를 사용하여 클러스터의 기존 서브스크립션을 나열할 수 있습니다. Knative CLI를 사용하여 서브스크립션을 나열하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다.
사전 요구 사항
-
Knative(
kn
) CLI가 설치되어 있습니다.
절차
클러스터의 서브스크립션을 나열합니다.
$ kn subscription list
출력 예
NAME CHANNEL SUBSCRIBER REPLY DEAD LETTER SINK READY REASON mysubscription Channel:mychannel ksvc:event-display True
5.7.2.3. Knative CLI를 사용하여 서브스크립션 업데이트
kn subscription update
명령과 적절한 플래그를 사용하여 Knative(kn
) CLI를 사용하여 터미널에서 서브스크립션을 업데이트할 수 있습니다. Knative CLI를 사용하여 서브스크립션을 업데이트하는 경우 YAML 파일을 직접 업데이트하는 것보다 더 효율적이고 직관적인 사용자 인터페이스를 제공합니다.
사전 요구 사항
-
Knative(
kn
) CLI가 설치되어 있습니다. - 서브스크립션이 생성되어 있습니다.
절차
서브스크립션을 업데이트합니다.
$ kn subscription update <subscription_name> \ --sink <sink_prefix>:<sink_name> \ 1 --sink-dead-letter <sink_prefix>:<sink_name> 2
- 1
--sink는
이벤트를 전달해야 하는 업데이트된 대상을 지정합니다. 다음 접두사 중 하나를 사용하여 싱크 유형을 지정할 수 있습니다.ksvc
- Knative 서비스입니다.
channel
- 대상으로 사용해야 하는 채널입니다. 여기에서는 기본 채널 유형만 참조할 수 있습니다.
broker
- Eventing 브로커입니다.
- 2
- 선택 사항:
--sink-dead-letter
는 이벤트를 전달하지 못하는 경우 이벤트를 전송해야 하는 싱크를 지정하는 데 사용할 선택적 플래그입니다. 자세한 내용은 OpenShift Serverless Event 제공 설명서를 참조하십시오.명령 예
$ kn subscription update mysubscription --sink ksvc:event-display