기존 코드 번들에서 함수 워크로드 작성

IBM Cloud® Container Registry 에서 코드 번들을 사용하여 Code Engine 함수를 생성하세요. 콘솔이나 CLI를 통해 함수를 생성할 수 있습니다.

코드 번들은 기능 코드를 나타내는 파일의 콜렉션입니다. 이 코드 번들은 런타임 컨테이너에 삽입됩니다. 코드 번들은 Code Engine 에 의해 작성되며 컨테이너 레지스트리에 저장되거나 함수와 함께 인라인으로 저장됩니다. 코드 번들은 OCI (Open Container Initiative) 표준 컨테이너 이미지가 아닙니다.

Container Registry 이외의 위치에서는 코드 번들을 가져올 수 없습니다.

시작하기 전에

프로젝트의 모든 사용자가 레지스트리 시크릿을 수동으로 생성할 필요 없이 Container Registry 에 이미지를 저장하고 액세스할 수 있도록 프로젝트를 구성하고 싶으신가요? 충분한 권한을 사용하여 위치 (지역) 별로 이 기본 레지스트리 액세스를 구성할 수 있습니다. 이러한 조치를 수행할 수 있는 충분한 권한이 없는 경우 이 페이지를 사용하면 필수 권한을 이해하는 데 도움이 됩니다. 프로젝트 전체 설정 구성 을 참조하십시오.

콘솔을 사용하여 Container Registry 의 코드 번들을 참조하는 함수 작성

Code Engine 콘솔을 사용하여 기존 코드 번들을 활용하는 함수를 생성합니다.

Code Engine 는 Container Registry에서 자동으로 코드 번들을 가져올 수 있습니다.

  1. Code Engine 콘솔을 여십시오.
  2. '만들기 시작'을 선택하세요.
  3. 사용 가능한 프로젝트 목록에서 프로젝트를 선택하십시오. 프로젝트를 새로 작성할 수도 있습니다. 함수를 작성할 프로젝트를 선택해야 합니다.
  4. ‘기능’을 선택하세요.
  5. 함수 이름을 입력하세요. 예를 들어, myfunction``과 같이 입력합니다. 프로젝트 내에서 고유한 함수 이름을 사용하십시오.
  6. 함수 코드에 대한 런타임 이미지 를 선택하십시오. 자세한 정보는 런타임 을 참조하십시오.
  7. 기존 코드 번들 사용을 선택하십시오.
  8. 코드 번들의 위치를 registry/namespace/repository:tag 형식으로 지정하십시오.
  9. 코드 번들이 계정 또는 공용 레지스트리에 있는 경우 레지스트리 시크릿을 지정할 필요가 없습니다. 코드 번들이 개인용 레지스트리에 있는 경우 레지스트리 시크릿을 추가해야 합니다. 추가 도움말을 보려면 코드 번들 지정 도움말을 클릭하십시오. 자세한 정보는 컨테이너 레지스트리에 액세스를 참조하십시오.
  10. CPU및 메모리 조합스케일 축소 지연 을 포함하여 자원 정보를 지정하십시오.
  11. 선택적으로 사용자 정의 도메인 또는 환경 변수 를 지정하십시오.
  12. 작성을 클릭하십시오.
  13. 기능 상태가 ‘준비됨’으로 변경된 후, 해당 기능을 테스트할 수 있습니다. 기능 테스트 를 클릭한 후 요청 전송을 클릭하십시오. 웹 페이지에서 이 함수를 실행하려면 ‘Function’ URL 을 클릭하세요.

CLI를 사용하여 기존 코드 번들로 함수 배치

CLI를 사용하여 IBM Cloud® Container Registry 에 저장된 코드 번들을 활용하는 함수를 ibmcloud ce fn create 명령을 사용하여 xml-ph-0000@deepl.internal에 저장된 코드 번들을 사용하는 함수를 만드십시오. 옵션의 전체 목록을 보려면 ibmcloud ce fn create 명령을 참조하십시오.

시작하기 전에

CLI를 사용하여 공용 레지스트리에서 함수 배치

기존 코드 번들이 계정 또는 공용 레지스트리에 있는 경우 ibmcloud ce fn create 명령을 사용할 수 있습니다.

예를 들어, 다음 명령을 실행하여 공용 레지스트리에서 기존 코드 번들을 가져오고 함수를 작성하십시오.

ibmcloud ce fn create --name myhellofun --code-bundle icr.io/codeengine/samples/function-nodejs-codebundle --runtime nodejs

제공된 fn get 명령을 실행하여 URL 파일을 찾으십시오. 그런 다음 curl 명령어를 사용하여 해당 URL을 호출할 수 있습니다.

기존 코드 번들의 예제 출력입니다.

<html><body><h3>Hello, Functions on CodeEngine!</h3></body></html>

CLI를 사용하여 개인용 레지스트리에서 함수 배치

개인용 레지스트리에서 기존 코드 번들에 액세스하려면 레지스트리에 대한 액세스를 설정하고 레지스트리 시크릿을 작성한 후 ibmcloud ce fn create 명령을 실행할 때 해당 시크릿을 제공해야 합니다.

  1. Container Registry에 대한 액세스 권한을 추가하려면 IAM API 키를 작성하십시오. CLI로 IBM Cloud IAM API 키를 작성하려면 iam api-key-create 명령을 실행하십시오. 예를 들어, 설명이 My CLI API keycliapikey 라는 API 키를 생성하여 key_file 라는 파일에 저장하려면 다음 명령을 실행하십시오:

    ibmcloud iam api-key-create cliapikey -d "My CLI API key" --file key_file
    

    키를 파일에 저장하지 않도록 선택한 경우 키를 작성할 때 표시되는 API 키를 기록해 두어야 합니다. 나중에 검색할 수 없습니다.

  2. API키를 작성한 후 Code Engine에 대한 레지스트리 시크릿을 작성하십시오. 레지스트리 시크릿을 작성하려면 ibmcloud ce secret create --format registry 명령을 사용하십시오. 예를 들어, 다음 명령어는 myregistry 라는 Container Registry 인스턴스에 대한 레지스트리 액세스 권한을 생성합니다. --server--username 옵션이 예제 명령에 지정되어 있더라도 서버가 --server인 경우 us.icr.io 옵션의 기본값은 --username이고 iamapikey 옵션의 기본값은 us.icr.io입니다.

    ibmcloud ce secret create --format registry --name myregistry --server us.icr.io --username iamapikey --password APIKEY
    

    출력 예

    Creating registry secret 'myregistry'...
    OK
    
  3. 함수를 작성하고 Container Registry의 개인용 레지스트리에서 코드 번들을 참조하십시오. 예를 들어, ibmcloud ce fn create 명령을 사용하여 myregistry 액세스 정보를 통해 icr.io/codeengine/samples/function-nodejs-codebundle 을 참조하는 myhellofun 함수를 생성합니다.

    ibmcloud ce fn create --name myhellofun --code-bundle icr.io/NAMESPACE/REGISTRY:TAG --registry-secret myregistry
    

    이 함수의 코드 번들 이름 형식은 REGISTRY/NAMESPACE/REGISTRY:TAG 이며, 여기서 REGISTRYTAG 는 선택 사항입니다. REGISTRY 가 지정되지 않은 경우, 기본값은 icr.io 입니다. TAG를 지정하지 않으면 기본값은 latest입니다.

  4. 함수가 작성된 후에는 이를 호출할 수 있습니다. 함수의 URL 를 확인하려면, 제공된 ibmcloud ce fn get 명령어를 실행하십시오. 그런 다음 curl 명령어를 사용하여 해당 URL을 호출할 수 있습니다.

다음 단계

  • URL 함수가 생성된 후에는 콘솔에서 ‘함수 테스트(Test function )’를 클릭하거나, function get 명령을 사용하여 해당 함수의 xml-ph-0000@deepl.internal 을 찾아볼 수 있습니다.

  • 사용자 정의 도메인 맵핑 을 작성하고 이를 함수에 지정할 수 있습니다.

  • 기능을 작성하고 배치한 후에는 콘솔에서 또는 ibmcloud ce function update 명령을 사용하여 필요에 맞게 기능을 업데이트할 수 있습니다. --build-source 함수와 함께 사용할 소스를 업데이트하려면, function update 명령에 xml-ph-0000@deepl.internal 옵션을 지정해야 합니다.

함수를 생성한 후에는, 해당 함수를 생성하거나 이전에 업데이트한 방식과 관계없이 다음 방법 중 하나를 사용하여 함수와 그 함수가 참조하는 코드를 업데이트할 수 있습니다:

  • 기존 코드 번들이 있는 경우 앱을 배치할 때 컨테이너 레지스트리의 위치를 가리키는 이미지에 대한 참조만 제공해야 합니다. 자세한 정보는 기존 코드 번들에서 함수 워크로드 작성 을 참조하십시오.

    function create 명령을 사용하여 함수를 작성하고 로컬 또는 저장소 소스에서 코드 번들을 빌드하기 위해 --build-source 옵션을 지정한 경우 다른 코드 번들을 가리키도록 함수를 변경하려면 먼저 함수에서 빌드의 연관을 제거해야 합니다. 예를 들어, ibmcloud ce function update -n FUN_NAME --build-clear 를 실행하십시오. 함수에서 빌드의 연관을 제거한 후 다른 이미지를 참조하도록 함수를 업데이트할 수 있습니다.

  • Git 저장소에 있는 소스 코드로 시작하는 경우, Code Engine 을 통해 소스 코드를 기반으로 코드 번들을 빌드하고 단 한 번의 작업으로 함수를 생성하도록 설정할 수 있습니다. 이 시나리오에서 Code Engine 은 사용자의 코드 번들을 IBM Cloud® Container Registry 에 업로드합니다. 자세한 정보는 저장소 소스 코드에서 함수 작성 을 참조하십시오.

  • 로컬 워크스테이션에 상주하는 소스 코드로 시작하는 경우, Code Engine 에 대해 선택하여 소스에서 코드 번들을 빌드하고 단일 CLI 명령으로 함수를 작성할 수 있습니다. 이 시나리오에서 Code Engine 는 소스 코드 및 코드 번들을 IBM Cloud® Container Registry에 업로드합니다.

    예를 들어, 해당 함수에 대한 소스 코드를 계속 개발해 나가는 동안 Code Engine 명령어를 사용하여 로컬 소스 코드를 빌드하도록 선택할 수 있습니다. 그런 다음 코드 번들이 성숙되면 원하는 특정 코드 번들을 참조하도록 함수를 업데이트할 수 있습니다. 이 프로세스는 필요에 따라 반복할 수 있습니다.

더 많은 코드 예를 찾고 계십니까? IBM Cloud Code Engine GitHub 저장소의 예제를 확인해 보세요.