5.13. 브로커 생성

Knative는 기본 채널 기반 브로커 구현을 제공합니다. 이 채널 기반 브로커는 개발 및 테스트 목적으로 사용될 수 있지만 프로덕션 환경에 적절한 이벤트 전달 보장은 제공하지 않습니다.

클러스터 관리자가 Kafka를 기본 브로커 유형으로 사용하도록 OpenShift Serverless 배포를 구성한 경우 기본 설정을 사용하여 브로커를 생성하여 Kafka 기반 브로커를 생성합니다.

OpenShift Serverless 배포가 기본 브로커 유형으로 Kafka 브로커를 사용하도록 구성되지 않은 경우 다음 절차의 기본 설정을 사용할 때 채널 기반 브로커가 생성됩니다.

5.13.1. Knative CLI를 사용하여 브로커 생성

브로커는 트리거와 함께 이벤트 소스에서 이벤트 싱크로 이벤트를 전달하는 데 사용할 수 있습니다. Knative(kn) CLI를 사용하여 브로커를 생성하면 YAML 파일을 직접 수정하는 것보다 더 간소화되고 직관적인 사용자 인터페이스를 제공합니다. kn broker create 명령을 사용하여 브로커를 생성할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.
  • 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.

절차

  • 브로커를 생성합니다.

    $ kn broker create <broker_name>

검증

  1. kn 명령을 사용하여 기존 브로커를 모두 나열합니다.

    $ kn broker list

    출력 예

    NAME      URL                                                                     AGE   CONDITIONS   READY   REASON
    default   http://broker-ingress.knative-eventing.svc.cluster.local/test/default   45s   5 OK / 5     True

  2. 선택 사항: OpenShift Container Platform 웹 콘솔을 사용하는 경우 개발자 화면에서 토폴로지 보기로 이동하여 브로커가 존재하는지 관찰할 수 있습니다.

    웹 콘솔 토폴로지 보기에서 브로커 보기

5.13.2. 트리거에 주석을 달아 브로커 생성

브로커는 트리거와 함께 이벤트 소스에서 이벤트 싱크로 이벤트를 전달하는 데 사용할 수 있습니다. Trigger 오브젝트에 eventing.knative.dev/injection: enabled 주석을 추가하여 브로커를 생성할 수 있습니다.

중요

eventing.knative.dev/injection: enabled 주석을 사용하여 브로커를 생성하는 경우 클러스터 관리자 권한이 없어 이 브로커를 삭제할 수 없습니다. 클러스터 관리자가 이 주석을 먼저 제거하기 전에 브로커를 삭제하면 삭제 후 브로커가 다시 생성됩니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.

절차

  1. eventing.knative.dev/injection: enabled 주석이 있는 Trigger 오브젝트를 YAML 파일로 생성합니다.

    apiVersion: eventing.knative.dev/v1
    kind: Trigger
    metadata:
      annotations:
        eventing.knative.dev/injection: enabled
      name: <trigger_name>
    spec:
      broker: default
      subscriber: 1
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: <service_name>
    1
    트리거에서 이벤트를 전송할 대상 이벤트 싱크 또는 구독자에 대한 세부 정보를 지정합니다.
  2. Trigger YAML 파일을 적용합니다.

    $ oc apply -f <filename>

검증

oc CLI를 사용하거나 웹 콘솔의 토폴로지 보기에서 브로커가 생성되었는지 확인할 수 있습니다.

  1. oc 명령을 사용하여 브로커를 가져옵니다.

    $ oc -n <namespace> get broker default

    출력 예

    NAME      READY     REASON    URL                                                                     AGE
    default   True                http://broker-ingress.knative-eventing.svc.cluster.local/test/default   3m56s

  2. 선택 사항: OpenShift Container Platform 웹 콘솔을 사용하는 경우 개발자 화면에서 토폴로지 보기로 이동하여 브로커가 존재하는지 관찰할 수 있습니다.

    웹 콘솔 토폴로지 보기에서 브로커 보기

5.13.3. 네임스페이스에 라벨을 지정하여 브로커 생성

브로커는 트리거와 함께 이벤트 소스에서 이벤트 싱크로 이벤트를 전달하는 데 사용할 수 있습니다. 소유하고 있거나 쓰기 권한이 있는 네임스페이스에 라벨을 지정하여 default 브로커를 자동으로 생성할 수 있습니다.

참고

이 방법을 사용하여 생성한 브로커는 라벨을 제거하는 경우 제거되지 않습니다. 수동으로 삭제해야 합니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.

프로세스

  • eventing.knative.dev/injection=enabled를 사용하여 네임스페이스에 라벨을 지정합니다.

    $ oc label namespace <namespace> eventing.knative.dev/injection=enabled

검증

oc CLI를 사용하거나 웹 콘솔의 토폴로지 보기에서 브로커가 생성되었는지 확인할 수 있습니다.

  1. oc 명령을 사용하여 브로커를 가져옵니다.

    $ oc -n <namespace> get broker <broker_name>

    명령 예

    $ oc -n default get broker default

    출력 예

    NAME      READY     REASON    URL                                                                     AGE
    default   True                http://broker-ingress.knative-eventing.svc.cluster.local/test/default   3m56s

  2. 선택 사항: OpenShift Container Platform 웹 콘솔을 사용하는 경우 개발자 화면에서 토폴로지 보기로 이동하여 브로커가 존재하는지 관찰할 수 있습니다.

    웹 콘솔 토폴로지 보기에서 브로커 보기

5.13.4. 삽입을 통해 생성된 브로커 삭제

삽입하여 브로커를 생성하고 나중에 삭제하려면 수동으로 삭제해야 합니다. 네임스페이스 레이블 또는 트리거 주석을 사용하여 생성한 브로커는 레이블 또는 주석을 제거해도 영구적으로 삭제되지 않습니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.

프로세스

  1. 네임스페이스에서 eventing.knative.dev/injection=enabled 라벨을 제거합니다.

    $ oc label namespace <namespace> eventing.knative.dev/injection-

    주석을 제거하면 Knative에서 브로커를 삭제한 후 다시 생성하지 않습니다.

  2. 선택한 네임스페이스에서 브로커를 삭제합니다.

    $ oc -n <namespace> delete broker <broker_name>

검증

  • oc 명령을 사용하여 브로커를 가져옵니다.

    $ oc -n <namespace> get broker <broker_name>

    명령 예

    $ oc -n default get broker default

    출력 예

    No resources found.
    Error from server (NotFound): brokers.eventing.knative.dev "default" not found

5.13.5. 기본 브로커 유형으로 구성되지 않은 경우 Kafka 브로커 생성

OpenShift Serverless 배포가 Kafka 브로커를 기본 브로커 유형으로 사용하도록 구성되지 않은 경우 다음 절차 중 하나를 사용하여 Kafka 기반 브로커를 생성할 수 있습니다.

5.13.5.1. YAML을 사용하여 Kafka 브로커 생성

YAML 파일을 사용하여 Knative 리소스를 생성하면 선언적 방식으로 애플리케이션을 재현할 수 있으며 재현 가능한 방식으로 애플리케이션을 설명할 수 있습니다. YAML을 사용하여 Kafka 브로커를 생성하려면 Broker 오브젝트를 정의하는 YAML 파일을 생성한 다음 oc apply 명령을 사용하여 적용해야 합니다.

사전 요구 사항

  • OpenShift Serverless Operator, Knative Eventing, KnativeKafka 사용자 정의 리소스가 OpenShift Container Platform 클러스터에 설치되어 있습니다.
  • 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

절차

  1. Kafka 기반 브로커를 YAML 파일로 생성합니다.

    apiVersion: eventing.knative.dev/v1
    kind: Broker
    metadata:
      annotations:
        eventing.knative.dev/broker.class: Kafka 1
      name: example-kafka-broker
    spec:
      config:
        apiVersion: v1
        kind: ConfigMap
        name: kafka-broker-config 2
        namespace: knative-eventing
    1
    broker 클래스입니다. 지정하지 않으면 브로커는 클러스터 관리자가 구성한 기본 클래스를 사용합니다. Kafka 브로커를 사용하려면 이 값은 Kafka 여야 합니다.
    2
    Knative Kafka 브로커의 기본 구성 맵입니다. 이 구성 맵은 클러스터 관리자가 클러스터에서 Kafka 브로커 기능이 활성화되면 생성됩니다.
  2. Kafka 기반 브로커 YAML 파일을 적용합니다.

    $ oc apply -f <filename>

5.13.5.2. 외부 관리 Kafka 주제를 사용하는 Kafka 브로커 생성

자체 내부 주제를 생성하지 않고 Kafka 브로커를 사용하려면 대신 외부적으로 관리되는 Kafka 주제를 사용할 수 있습니다. 이를 위해서는 kafka.eventing.knative.dev/external.topic 주석을 사용하는 Kafka Broker 오브젝트를 생성해야 합니다.

사전 요구 사항

  • OpenShift Serverless Operator, Knative Eventing, KnativeKafka 사용자 정의 리소스가 OpenShift Container Platform 클러스터에 설치되어 있습니다.
  • Red Hat AMQ Streams 와 같은 Kafka 인스턴스에 액세스할 수 있으며 Kafka 주제를 생성했습니다.
  • 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

절차

  1. Kafka 기반 브로커를 YAML 파일로 생성합니다.

    apiVersion: eventing.knative.dev/v1
    kind: Broker
    metadata:
      annotations:
        eventing.knative.dev/broker.class: Kafka 1
        kafka.eventing.knative.dev/external.topic: <topic_name> 2
    ...
    1
    broker 클래스입니다. 지정하지 않으면 브로커는 클러스터 관리자가 구성한 기본 클래스를 사용합니다. Kafka 브로커를 사용하려면 이 값은 Kafka 여야 합니다.
    2
    사용하려는 Kafka 항목의 이름입니다.
  2. Kafka 기반 브로커 YAML 파일을 적용합니다.

    $ oc apply -f <filename>

5.13.6. 브로커 관리

Knative(kn) CLI는 기존 브로커를 설명하고 나열하는 데 사용할 수 있는 명령을 제공합니다.

5.13.6.1. Knative CLI를 사용하여 기존 브로커 나열

Knative(kn) CLI를 사용하여 브로커를 나열하면 간소화되고 직관적인 사용자 인터페이스가 제공됩니다. kn broker list 명령을 사용하여 Knative CLI를 사용하여 클러스터의 기존 브로커를 나열할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.

절차

  • 기존 브로커를 모두 나열합니다.

    $ kn broker list

    출력 예

    NAME      URL                                                                     AGE   CONDITIONS   READY   REASON
    default   http://broker-ingress.knative-eventing.svc.cluster.local/test/default   45s   5 OK / 5     True

5.13.6.2. Knative CLI를 사용하여 기존 브로커 설명

Knative(kn) CLI를 사용하여 브로커를 설명하면 간소화되고 직관적인 사용자 인터페이스를 제공합니다. kn broker describe 명령을 사용하여 Knative CLI를 사용하여 클러스터의 기존 브로커에 대한 정보를 출력할 수 있습니다.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Eventing이 OpenShift Container Platform 클러스터에 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.

절차

  • 기존 브로커를 설명합니다.

    $ kn broker describe <broker_name>

    기본 브로커를 사용하는 명령의 예

    $ kn broker describe default

    출력 예

    Name:         default
    Namespace:    default
    Annotations:  eventing.knative.dev/broker.class=MTChannelBasedBroker, eventing.knative.dev/creato ...
    Age:          22s
    
    Address:
      URL:    http://broker-ingress.knative-eventing.svc.cluster.local/default/default
    
    Conditions:
      OK TYPE                   AGE REASON
      ++ Ready                  22s
      ++ Addressable            22s
      ++ FilterReady            22s
      ++ IngressReady           22s
      ++ TriggerChannelReady    22s

5.13.7. 다음 단계

5.13.8. 추가 리소스