6.2. 함수 시작하기
함수 라이프사이클 관리에는 함수 생성, 빌드 및 배포가 포함됩니다. 선택적으로 배포된 함수를 호출하여 테스트할 수도 있습니다. kn func
툴을 사용하여 OpenShift Serverless에서 이러한 모든 작업을 수행할 수 있습니다.
6.2.1. 사전 요구 사항
다음 절차를 완료하려면 먼저 OpenShift Serverless Functions 설정에서 모든 사전 요구 사항 작업을 완료해야 합니다.
6.2.2. 함수 생성
함수를 빌드하고 배포하려면 Knative(kn
) CLI를 사용하여 생성해야 합니다. 경로, 런타임, 템플릿 및 이미지 레지스트리를 명령줄에서 플래그로 지정하거나 -c
플래그를 사용하여 터미널에서 대화형 환경을 시작할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다.
절차
함수 프로젝트를 생성합니다.
$ kn func create -r <repository> -l <runtime> -t <template> <path>
-
허용되는 런타임 값에는
quarkus
,node
,typescript
,go
,python
, Springboot
, 및rust
가 포함됩니다. 허용되는 템플릿 값에는
http
및cloudevents
가 포함됩니다.명령 예
$ kn func create -l typescript -t cloudevents examplefunc
출력 예
Created typescript function in /home/user/demo/examplefunc
또는 사용자 지정 템플릿이 포함된 리포지토리를 지정할 수도 있습니다.
명령 예
$ kn func create -r https://github.com/boson-project/templates/ -l node -t hello-world examplefunc
출력 예
Created node function in /home/user/demo/examplefunc
-
허용되는 런타임 값에는
6.2.3. 로컬로 함수 실행
kn func run
명령을 사용하여 현재 디렉터리 또는 --path
플래그에서 지정한 디렉터리에서 로컬로 함수를 실행할 수 있습니다. 실행 중인 함수가 이전에 빌드되지 않았거나 마지막으로 작성된 프로젝트 파일이 변경된 경우 kn func run
명령은 기본적으로 함수를 실행하기 전에 함수를 빌드합니다.
현재 디렉터리에서 함수를 실행하는 명령의 예
$ kn func run
경로로 지정된 디렉터리에서 함수를 실행하는 명령의 예
$ kn func run --path=<directory_path>
--build
플래그를 사용하여 프로젝트 파일이 변경되지 않은 경우에도 함수를 실행하기 전에 기존 이미지를 강제로 다시 빌드할 수도 있습니다.
빌드 플래그를 사용하는 run 명령의 예
$ kn func run --build
빌드
플래그를 false로 설정하면 이미지 빌드가 비활성화되고 이전에 빌드한 이미지를 사용하여 함수가 실행됩니다.
빌드 플래그를 사용하는 run 명령의 예
$ kn func run --build=false
help 명령을 사용하여 kn func run
명령 옵션에 대해 자세히 알아볼 수 있습니다.
빌드 도움말 명령
$ kn func help run
6.2.4. 함수 빌드
함수를 실행하려면 함수 프로젝트를 빌드해야 합니다. kn func run
명령을 사용하는 경우 함수가 자동으로 빌드됩니다. 그러나 kn func build
명령을 사용하여 함수를 실행하지 않고 빌드할 수 있습니다. 이 기능은 고급 사용자 또는 디버깅 시나리오에 유용할 수 있습니다.
kn func build
명령은 컴퓨터 또는 OpenShift Container Platform 클러스터에서 로컬로 실행할 수 있는 OCI 컨테이너 이미지를 생성합니다. 이 명령은 함수 프로젝트 이름과 이미지 레지스트리 이름을 사용하여 함수에 대해 정규화된 이미지 이름을 구성합니다.
6.2.4.1. 이미지 컨테이너 유형
기본적으로 kn func 빌드
는 Red Hat S2I(Source-to-Image) 기술을 사용하여 컨테이너 이미지를 생성합니다.
Red Hat S2I(Source-to-Image)를 사용하는 빌드 명령의 예
$ kn func build
6.2.4.2. 이미지 레지스트리 유형
OpenShift Container Registry는 기본적으로 함수 이미지를 저장하기 위한 이미지 레지스트리로 사용됩니다.
OpenShift Container Registry를 사용하는 빌드 명령 예
$ kn func build
출력 예
Building function image Function image has been built, image: registry.redhat.io/example/example-function:latest
--registry
플래그를 사용하여 기본 이미지 레지스트리로 OpenShift Container Registry를 재정의할 수 있습니다.
quay.io를 사용하도록 OpenShift Container Registry를 재정의하는 빌드 명령의 예
$ kn func build --registry quay.io/username
출력 예
Building function image Function image has been built, image: quay.io/username/example-function:latest
6.2.4.3. push 플래그
kn func build
명령에 --push
플래그를 추가하여 성공적으로 빌드한 후 함수 이미지를 자동으로 푸시할 수 있습니다.
OpenShift Container Registry를 사용하는 빌드 명령 예
$ kn func build --push
6.2.4.4. 도움말 명령
help 명령을 사용하여 kn func build
명령 옵션에 대해 자세히 알아볼 수 있습니다.
빌드 도움말 명령
$ kn func help build
6.2.5. 함수 배포
kn func deploy
명령을 사용하여 Knative 서비스로 클러스터에 함수를 배포할 수 있습니다. 대상 함수가 이미 배포된 경우 컨테이너 이미지 레지스트리로 푸시된 새 컨테이너 이미지로 업데이트되고 Knative 서비스가 업데이트됩니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
-
Knative(
kn
) CLI가 설치되어 있습니다. - 프로젝트를 생성했거나 OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성하는 데 적절한 역할 및 권한이 있는 프로젝트에 액세스할 수 있습니다.
- 배포하려는 함수를 이미 생성하고 초기화해야 합니다.
절차
함수를 배포합니다.
$ kn func deploy [-n <namespace> -p <path> -i <image>]
출력 예
Function deployed at: http://func.example.com
-
namespace
를 지정하지 않으면 함수가 현재 네임스페이스에 배포됩니다. -
이 함수는
path
를 지정하지 않는 한 현재 디렉터리에서 배포됩니다. - Knative 서비스 이름은 프로젝트 이름에서 파생되며 이 명령을 사용하여 변경할 수 없습니다.
-
6.2.6. 테스트 이벤트를 사용하여 배포된 함수 호출
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
명령은 기본적으로 로컬 디렉터리에서 실행되며 이 디렉터리는 함수 프로젝트라고 가정합니다.
-
6.2.7. 함수 삭제
kn func delete
명령을 사용하여 함수를 삭제할 수 있습니다. 이 기능은 함수가 더 이상 필요하지 않은 경우 유용하며 클러스터에 리소스를 저장하는 데 도움이 될 수 있습니다.
절차
함수를 삭제합니다.
$ kn func delete [<function_name> -n <namespace> -p <path>]
-
삭제할 함수의 이름 또는 경로가 지정되지 않은 경우 현재 디렉터리에서
func.yaml
파일을 검색하고 삭제할 함수를 결정합니다. -
네임스페이스를 지정하지 않으면 기본값은
func.yaml
파일의namespace
값으로 설정됩니다.
-
삭제할 함수의 이름 또는 경로가 지정되지 않은 경우 현재 디렉터리에서
6.2.8. 추가 리소스
6.2.9. 다음 단계
- Knative Eventing에서 함수 사용을참조하십시오.