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
명령의 builder-like 인터페이스를 사용하여 이벤트를 빌드할 수 있습니다. 그런 다음 나중에 해당 이벤트를 보내거나 다른 컨텍스트에서 사용할 수 있습니다.
사전 요구 사항
-
Knative(
kn
) CLI가 설치되어 있습니다.
절차
이벤트를 빌드합니다.
$ kn event build --field <field-name>=<value> --type <type-name> --id <id> --output <format>
다음과 같습니다.
-
--field
플래그는 이벤트에 데이터를 필드-값 쌍으로 추가합니다. 여러 번 사용할 수 있습니다. -
--type
플래그를 사용하면 이벤트 유형을 지정하는 문자열을 지정할 수 있습니다. -
--id
플래그는 이벤트의 ID를 지정합니다. --output
플래그와 함께json
또는yaml
인수를 사용하여 이벤트의 출력 형식을 변경할 수 있습니다.이러한 모든 플래그는 선택 사항입니다.
간단한 이벤트 만들기
$ 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
명령과 동일한 builder-like 인터페이스를 사용합니다.
사전 요구 사항
-
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
-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
-