5.12. 서브스크립션 생성 및 관리
채널 및 이벤트 싱크를 생성한 후 이벤트 전달을 활성화하는 서브스크립션을 생성할 수 있습니다. 서브스크립션은 이벤트를 전달할 채널 및 싱크(서브스크립션자라고도 함)를 지정하는 Subscription
오브젝트를 구성하여 생성합니다.
5.12.1. 웹 콘솔을 사용하여 서브스크립션 생성
채널 및 이벤트 싱크를 생성한 후 이벤트 전달을 활성화하는 서브스크립션을 생성할 수 있습니다. OpenShift Container Platform 웹 콘솔을 사용하면 간결하고 직관적인 사용자 인터페이스를 사용하여 서브스크립션을 생성할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator, Knative Serving, Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
- 웹 콘솔에 로그인했습니다.
- 이벤트 싱크(예: Knative 서비스) 및 채널을 생성했습니다.
- 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
절차
- 개발자 화면에서 토폴로지 페이지로 이동합니다.
다음 방법 중 하나를 사용하여 서브스크립션을 생성합니다.
서브스크립션을 생성할 채널 위로 마우스 커서를 이동하고 화살표를 끕니다. 서브스크립션 추가 옵션이 표시됩니다.
- Subscriber 목록에서 싱크를 선택합니다.
- 추가를 클릭합니다.
- 채널과 동일한 네임스페이스 또는 프로젝트의 토폴로지 보기에서 서비스를 사용할 수 있는 경우, 서브스크립션을 생성할 채널을 클릭하고 화살표를 서비스로 직접 끌어 채널에서 해당 서비스로의 서브스크립션을 즉시 생성합니다.
검증
서브스크립션이 생성되면 토폴로지 보기에 채널을 서비스에 연결하는 선이 표시되어 이를 확인할 수 있습니다.
5.12.2. 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.12.3. 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.12.4. 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.12.5. 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.12.6. 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
5.12.7. 다음 단계
- 이벤트가 이벤트 싱크로 전달되지 않는 경우 적용되는 이벤트 전달 매개변수를 구성합니다. 이벤트 전달 매개변수 구성 예를 참조하십시오.