7.3. Knative CLI 플러그인

Knative(kn) CLI는 플러그인 사용을 지원하므로 사용자 지정 명령 및 코어 배포에 포함되지 않은 기타 공유 명령을 추가하여 kn 설치 기능을 확장할 수 있습니다. Knative(kn) CLI 플러그인은 기본 kn 기능과 동일한 방식으로 사용됩니다.

현재 Red Hat은 kn-source-kafka 플러그인 및 kn-event 플러그인을 지원합니다.

중요

kn-event 플러그인은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

7.3.1. kn-event 플러그인을 사용하여 이벤트 빌드

kn event build 명령의 빌더와 유사한 인터페이스를 사용하여 이벤트를 빌드할 수 있습니다. 그런 다음 나중에 해당 이벤트를 보내거나 다른 컨텍스트에서 사용할 수 있습니다.

사전 요구 사항

  • Knative(kn) CLI가 설치되어 있습니다.

절차

  • 이벤트를 빌드합니다.

    $ kn event build --field <field-name>=<value> --type <type-name> --id <id> --output <format>

    다음과 같습니다.

    • --field 플래그는 이벤트에 데이터를 필드-값 쌍으로 추가합니다. 여러 번 사용할 수 있습니다.
    • --type 플래그를 사용하면 이벤트 유형을 지정하는 문자열을 지정할 수 있습니다.
    • --id 플래그는 이벤트의 ID를 지정합니다.
    • json 또는 yaml 인수를 --output 플래그와 함께 사용하여 이벤트의 출력 형식을 변경할 수 있습니다.

      이러한 모든 플래그는 선택 사항입니다.

      간단한 이벤트 만들기

      $ kn event build -o yaml

      YAML 형식의 결과 이벤트

      data: {}
      datacontenttype: application/json
      id: 81a402a2-9c29-4c27-b8ed-246a253c9e58
      source: kn-event/v0.4.0
      specversion: "1.0"
      time: "2021-10-15T10:42:57.713226203Z"
      type: dev.knative.cli.plugin.event.generic

      샘플 트랜잭션 이벤트 빌드

      $ kn event build \
          --field operation.type=local-wire-transfer \
          --field operation.amount=2345.40 \
          --field operation.from=87656231 \
          --field operation.to=2344121 \
          --field automated=true \
          --field signature='FGzCPLvYWdEgsdpb3qXkaVp7Da0=' \
          --type org.example.bank.bar \
          --id $(head -c 10 < /dev/urandom | base64 -w 0) \
          --output json

      JSON 형식의 결과 이벤트

      {
        "specversion": "1.0",
        "id": "RjtL8UH66X+UJg==",
        "source": "kn-event/v0.4.0",
        "type": "org.example.bank.bar",
        "datacontenttype": "application/json",
        "time": "2021-10-15T10:43:23.113187943Z",
        "data": {
          "automated": true,
          "operation": {
            "amount": "2345.40",
            "from": 87656231,
            "to": 2344121,
            "type": "local-wire-transfer"
          },
          "signature": "FGzCPLvYWdEgsdpb3qXkaVp7Da0="
        }
      }

7.3.2. kn-event 플러그인을 사용하여 이벤트 전송

kn event send 명령을 사용하여 이벤트를 보낼 수 있습니다. 이벤트는 공개적으로 사용 가능한 주소로 전송하거나 Kubernetes 서비스 및 Knative 서비스, 브로커 및 채널과 같은 클러스터 내부의 주소 지정 가능한 리소스로 보낼 수 있습니다. 이 명령은 kn event build 명령과 동일한 빌더와 유사한 인터페이스를 사용합니다.

사전 요구 사항

  • Knative(kn) CLI가 설치되어 있습니다.

절차

  • 이벤트 보내기:

    $ kn event send --field <field-name>=<value> --type <type-name> --id <id> --to-url <url> --to <cluster-resource> --namespace <namespace>

    다음과 같습니다.

    • --field 플래그는 이벤트에 데이터를 필드-값 쌍으로 추가합니다. 여러 번 사용할 수 있습니다.
    • --type 플래그를 사용하면 이벤트 유형을 지정하는 문자열을 지정할 수 있습니다.
    • --id 플래그는 이벤트의 ID를 지정합니다.
    • 공개적으로 액세스 가능한 대상으로 이벤트를 보내는 경우 --to-url 플래그를 사용하여 URL을 지정합니다.
    • 이벤트를 클러스터 내부 Kubernetes 리소스로 보내는 경우 --to 플래그를 사용하여 대상을 지정합니다.

      • < Kind>:<ApiVersion>:<name > 형식을 사용하여 Kubernetes 리소스를 지정합니다.
    • --namespace 플래그는 네임스페이스를 지정합니다. 생략하면 현재 컨텍스트에서 네임스페이스가 가져옵니다.

      이러한 모든 플래그는 대상 사양을 제외하고 모두 선택 사항입니다. 여기서 --to-url 또는 --to.

      다음 예제에서는 URL로 이벤트를 전송하는 방법을 보여줍니다.

      명령 예

      $ kn event send \
          --field player.id=6354aa60-ddb1-452e-8c13-24893667de20 \
          --field player.game=2345 \
          --field points=456 \
          --type org.example.gaming.foo \
          --to-url http://ce-api.foo.example.com/

      다음 예제에서는 클러스터 내 리소스로 이벤트를 전송하는 방법을 보여줍니다.

      명령 예

      $ kn event send \
          --type org.example.kn.ping \
          --id $(uuidgen) \
          --field event.type=test \
          --field event.data=98765 \
          --to Service:serving.knative.dev/v1:event-display