6.3. 클러스터상의 기능 빌드 및 배포

함수를 로컬로 빌드하는 대신 클러스터에서 직접 함수를 빌드할 수 있습니다. 로컬 개발 머신에서 이 워크플로를 사용하는 경우 함수 소스 코드에서만 작업하면 됩니다. 예를 들어 docker 또는 podman과 같은 클러스터 함수 빌드 툴을 설치할 수 없는 경우 유용합니다.

6.3.1. 클러스터에서 함수 빌드 및 배포

Knative(kn) CLI를 사용하여 함수 프로젝트 빌드를 시작한 다음 클러스터에 직접 함수를 배포할 수 있습니다. 이러한 방식으로 함수 프로젝트를 빌드하려면 함수 프로젝트의 소스 코드가 클러스터에서 액세스할 수 있는 Git 리포지토리 분기에 있어야 합니다.

사전 요구 사항

  • Red Hat OpenShift Pipelines가 클러스터에 설치되어 있어야 합니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.
  • Knative(kn) CLI가 설치되어 있습니다.

절차

  1. Pipeline을 실행하고 함수를 배포하려는 각 네임스페이스에서 다음 리소스를 생성해야 합니다.

    1. s2i Tekton 작업을 생성하여 파이프라인에서 Source-to-Image를 사용할 수 있습니다.

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-s2i/0.1/func-s2i.yaml
    2. 파이프라인에 함수를 배포할 수 있도록 kn func deploy Tekton 작업을 생성합니다.

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.28.0/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yaml
  2. 함수를 생성합니다.

    $ kn func create <function_name> -l <runtime>
  3. 새 함수 프로젝트를 생성한 후에는 프로젝트를 Git 리포지토리에 추가하고 리포지토리를 클러스터에서 사용할 수 있는지 확인해야 합니다. 이 Git 리포지토리에 대한 정보는 다음 단계에서 func.yaml 파일을 업데이트하는 데 사용됩니다.
  4. 함수 프로젝트의 func.yaml 파일에서 Git 리포지토리에 대한 클러스터상의 빌드를 활성화하도록 구성을 업데이트합니다.

    ...
    git:
      url: <git_repository_url> 1
      revision: main 2
      contextDir: <directory_path> 3
    ...
    1
    필수 항목입니다. 함수의 소스 코드가 포함된 Git 리포지토리를 지정합니다.
    2
    선택 사항입니다. 사용할 Git 리포지토리 버전을 지정합니다. 분기, 태그 또는 커밋일 수 있습니다.
    3
    선택 사항입니다. 함수가 Git 리포지토리 루트 폴더에 없는 경우 함수의 디렉터리 경로를 지정합니다.
  5. 함수의 비즈니스 로직을 구현합니다. 그런 다음 Git을 사용하여 변경 사항을 커밋하고 내보냅니다.
  6. 함수를 배포합니다.

    $ kn func deploy --remote

    함수 구성에서 참조되는 컨테이너 레지스트리에 로그인하지 않은 경우 함수 이미지를 호스팅하는 원격 컨테이너 레지스트리에 대한 인증 정보를 제공하라는 메시지가 표시됩니다.

    출력 및 프롬프트 예

    🕕 Creating Pipeline resources
    Please provide credentials for image registry used by Pipeline.
    ? Server: https://index.docker.io/v1/
    ? Username: my-repo
    ? Password: ********
       Function deployed at URL: http://test-function.default.svc.cluster.local

  7. 함수를 업데이트하려면 Git을 사용하여 새 변경 사항을 커밋하고 푸시한 다음 kn func deploy --remote 명령을 다시 실행합니다.

6.3.2. 함수 버전 지정

클러스터에서 함수를 빌드하고 배포하는 경우 리포지토리 내에서 Git 리포지토리, 분기 및 하위 디렉터리를 지정하여 함수 코드의 위치를 지정해야 합니다. 기본 분기를 사용하는 경우 분기를 지정할 필요가 없습니다. 마찬가지로 함수가 리포지토리의 루트에 있는 경우 하위 디렉터리를 지정할 필요가 없습니다. func.yaml 구성 파일에서 이러한 매개변수를 지정하거나 kn func deploy 명령과 함께 플래그를 사용하여 지정할 수 있습니다.

사전 요구 사항

  • Red Hat OpenShift Pipelines가 클러스터에 설치되어 있어야 합니다.
  • OpenShift(oc) CLI를 설치했습니다.
  • Knative(kn) CLI가 설치되어 있습니다.

절차

  • 함수를 배포합니다.

    $ kn func deploy --remote \ 1
                     --git-url <repo-url> \ 2
                     [--git-branch <branch>] \ 3
                     [--git-dir <function-dir>] 4
    1
    --remote 플래그를 사용하면 빌드가 원격으로 실행됩니다.
    2
    & lt;repo-url& gt;을 Git 리포지토리의 URL로 바꿉니다.
    3
    & lt;branch& gt;를 Git 분기, 태그 또는 커밋으로 바꿉니다. 기본 분기에서 최신 커밋을 사용하는 경우 이 플래그를 건너뛸 수 있습니다.
    4
    리포지토리 루트 디렉터리와 다른 경우 함수가 포함된 디렉터리로 <function-dir >을 바꿉니다.

    예를 들면 다음과 같습니다.

    $ kn func deploy --remote \
                     --git-url https://example.com/alice/myfunc.git \
                     --git-branch my-feature \
                     --git-dir functions/example-func/