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

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

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

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

사전 요구 사항

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

프로세스

  1. 다음 리소스를 생성합니다.

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

      $ oc apply -f https://raw.githubusercontent.com/openshift-knative/kn-plugin-func/serverless-1.29.0/pkg/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.29.0/pkg/pipelines/resources/tekton/task/func-deploy/0.1/func-deploy.yaml
  2. 함수를 생성합니다.

    $ kn func create <function_name> -l <runtime>
  3. 함수의 비즈니스 논리를 구현합니다. 그런 다음 Git을 사용하여 변경 사항을 커밋하고 내보냅니다.
  4. 함수를 배포합니다.

    $ 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

  5. 함수를 업데이트하려면 Git을 사용하여 새 변경 사항을 커밋하고 푸시한 다음 kn func deploy --remote 명령을 다시 실행합니다.
  6. 선택 사항: pipelines-as-code를 사용하여 모든 Git 푸시 후 클러스터에 빌드되도록 함수를 구성할 수 있습니다.

    1. 기능에 대한 Tekton PipelinesPipelineRuns 구성을 생성합니다.

      $ kn func config git set

      구성 파일을 생성하는 것 외에도 이 명령은 클러스터에 연결하여 파이프라인이 설치되었는지 확인합니다. 토큰을 사용하면 함수 리포지토리에 대한 웹 후크도 사용자를 대신하여 생성합니다. 해당 Webhook는 변경 사항을 리포지토리로 내보낼 때마다 클러스터에서 파이프라인을 트리거합니다.

      이 명령을 사용하려면 리포지토리 액세스 권한이 있는 유효한 GitHub 개인 액세스 토큰이 있어야 합니다.

    2. 생성된 .tekton/pipeline.yaml.tekton/pipeline-run.yaml 파일을 커밋하고 내보냅니다.

      $ git add .tekton/pipeline.yaml .tekton/pipeline-run.yaml
      $ git commit -m 'Add the Pipelines and PipelineRuns configuration'
      $ git push
    3. 함수를 변경한 후 커밋하고 내보냅니다. 생성된 파이프라인을 사용하여 함수가 자동으로 다시 빌드됩니다.