4.6.7. 테스트 이벤트를 사용하여 배포된 함수 호출
kn func invoke
CLI 명령을 사용하여 로컬에서 또는 OpenShift Container Platform 클러스터에서 함수를 호출하기 위해 테스트 요청을 보낼 수 있습니다. 이 명령을 사용하여 함수가 작동하고 이벤트를 올바르게 수신할 수 있는지 테스트할 수 있습니다. 함수를 로컬로 호출하면 함수 개발 중에 빠른 테스트에 유용합니다. 클러스터에서 함수를 호출하면 프로덕션 환경에 더 가까운 테스트에 유용합니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
- 호출하려는 함수를 이미 배포해야 합니다.
절차
함수를 호출합니다.
$ kn func invoke
-
kn func invoke
명령은 현재 실행 중인 로컬 컨테이너 이미지가 있거나 클러스터에 배포된 함수가 있는 경우에만 작동합니다. -
kn func invoke
명령은 기본적으로 로컬 디렉터리에서 실행되며 이 디렉터리는 함수 프로젝트라고 가정합니다.
-
4.6.7.1. kn func invoke 선택적 매개 변수
kn func invoke
CLI 명령 플래그를 사용하여 요청에 대한 선택적 매개변수를 지정할 수 있습니다.
플래그 | 설명 |
---|---|
|
호출된 함수의 대상 인스턴스를 지정합니다(예: |
|
메시지 형식을 지정합니다(예: |
| 요청에 대한 고유 문자열 식별자를 지정합니다. |
| 클러스터의 네임스페이스를 지정합니다. |
|
요청의 발신자 이름을 지정합니다. 이는 CloudEvent |
|
요청 유형을 지정합니다(예: |
|
요청에 대한 콘텐츠를 지정합니다. CloudEvent 요청의 경우 CloudEvent |
| 보낼 데이터를 포함하는 로컬 파일의 경로를 지정합니다. |
| 요청에 대한 MIME 콘텐츠 형식을 지정합니다. |
| 프로젝트 디렉터리의 경로를 지정합니다. |
| 모든 옵션을 대화형으로 확인하도록 프롬프트를 활성화합니다. |
| 자세한 출력을 인쇄할 수 있습니다. |
|
|
4.6.7.1.1. 기본 매개변수
다음 매개 변수는 kn func invoke
명령의 기본 속성을 정의합니다.
- 이벤트 대상(
-t
,--target
) -
호출된 함수의 대상 인스턴스입니다.
로컬
로 배포된 함수의 로컬 값,원격
으로 배포된 함수의 원격 값 또는 임의의 엔드포인트에 배포된 함수의 URL을 수락합니다. 대상을 지정하지 않으면 기본값은local
입니다. - 이벤트 메시지 형식(
-f
,--format
) -
이벤트의 메시지 형식(예:
http
또는cloudevent
). 이 기본값은 함수를 만들 때 사용된 템플릿 형식입니다. - 이벤트 유형 (
--type
) -
전송된 이벤트 유형입니다. 각 이벤트 프로듀서에 대한 문서에 설정된
type
매개변수에 대한 정보를 찾을 수 있습니다. 예를 들어 API 서버 소스는 생성된 이벤트의type
매개변수를dev.knative.apiserver.resource.update
로 설정할 수 있습니다. - 이벤트 소스(
--source
) -
이벤트를 생성한 고유한 이벤트 소스입니다. 이벤트 소스의 URI(예:
https://10.96.0.1/)
또는 이벤트 소스의 이름일 수 있습니다. - 이벤트 ID(
--id
) - 이벤트 프로듀서에 의해 생성되는 임의의 고유 ID입니다.
- 이벤트 데이터(
--data
) kn func invoke
명령에서 보낸 이벤트에 대한데이터
값을 지정할 수 있습니다. 예를 들어 이벤트에 이 데이터 문자열이 포함되도록"Hello World"
와 같은--data
값을 지정할 수 있습니다. 기본적으로kn func invoke
에서 생성한 이벤트에는 데이터가 포함되지 않습니다.참고클러스터에 배포된 함수는
source
및type
과 같은 속성 값을 제공하는 기존 이벤트 소스의 이벤트에 응답할 수 있습니다. 이러한 이벤트에는 종종 이벤트의 도메인별 컨텍스트를 캡처하는 JSON 형식의data
값이 있습니다. 개발자는 이 문서에 명시된 CLI 플래그를 사용하여 로컬 테스트를 위해 해당 이벤트를 시뮬레이션할 수 있습니다.이벤트 데이터를 포함하는 로컬 파일을 제공하기 위해
--file
플래그를 사용하여 이벤트 데이터를 보낼 수도 있습니다. 이 경우--content-type
을 사용하여 콘텐츠 유형을 지정합니다.- 데이터 콘텐츠 유형 (
--content-type
) -
--data
플래그를 사용하여 이벤트에 대한 데이터를 추가하는 경우--content-type
플래그를 사용하여 이벤트에서 전달하는 데이터 유형을 지정할 수 있습니다. 이전 예에서 데이터는 일반 텍스트이므로kn func invoke --data "Hello world!" --content-type "text/plain"
을 지정할 수 있습니다.
4.6.7.1.2. 명령 예
이는 kn func invoke
명령을 일반적인 호출입니다.
$ kn func invoke --type <event_type> --source <event_source> --data <event_data> --content-type <content_type> --id <event_ID> --format <format> --namespace <namespace>
예를 들어 "Hello world!" 이벤트를 보내려면 다음을 실행할 수 있습니다.
$ kn func invoke --type ping --source example-ping --data "Hello world!" --content-type "text/plain" --id example-ID --format http --namespace my-ns
4.6.7.1.2.1. 데이터로 파일 지정
이벤트 데이터가 포함된 디스크에서 파일을 지정하려면 --file
및 --content-type
플래그를 사용합니다.
$ kn func invoke --file <path> --content-type <content-type>
예를 들어 test.json
파일에 저장된 JSON 데이터를 보내려면 다음 명령을 사용하십시오.
$ kn func invoke --file ./test.json --content-type application/json
4.6.7.1.2.2. 함수 프로젝트 지정
--path
플래그를 사용하여 함수 프로젝트의 경로를 지정할 수 있습니다.
$ kn func invoke --path <path_to_function>
예를 들어 ./example/example-function
디렉터리에 있는 function 프로젝트를 사용하려면 다음 명령을 사용하십시오.
$ kn func invoke --path ./example/example-function
4.6.7.1.2.3. 대상 함수의 배포 위치 지정
기본적으로 kn func invoke
는 함수의 로컬 배포를 대상으로 합니다.
$ kn func invoke
다른 배포를 사용하려면 --target
플래그를 사용합니다.
$ kn func invoke --target <target>
예를 들어 클러스터에 배포된 함수를 사용하려면 --target 원격
플래그를 사용합니다.
$ kn func invoke --target remote
임의의 URL에 배포된 함수를 사용하려면 --target <URL> 플래그를
사용합니다.
$ kn func invoke --target "https://my-event-broker.example.com"
로컬 배포를 명시적으로 대상으로 할 수 있습니다. 이 경우 함수가 로컬로 실행되지 않으면 명령이 실패합니다.
$ kn func invoke --target local