로컬 소스에서 애플리케이션 코드 배치

간단한 hello world 앱을 배치하여 Code Engine이 어떻게 작동하는지 살펴보겠습니다. 단계에 따라 프로젝트를 작성하고 코드를 준비하고 앱을 배치하십시오.

이 튜토리얼을 시작하기 전에 Cloud Foundry 및 Code Engine 용어를 검토하십시오.

목표

  • Code Engine과 Cloud Foundry 간의 유사점을 알아봅니다.
  • Code Engine에서 앱을 배치하는 일반 프로세스를 알아봅니다.
  • Code Engine을 사용하여 로컬 시스템의 코드에서 애플리케이션을 배치합니다.

전제조건

Code Engine을 시작하기 전에 계정을 설정하고 CLI를 설치해야 합니다.

  • 모든 Code Engine 사용자에게는 종량과금제 계정이 있어야 합니다.

  • Code Engine은 콘솔을 통해 사용할 수는 있지만, 이 문서에서 다루는 예는 명령행에 중점을 둡니다. 따라서 Code Engine CLI를 설치해야 합니다.

    ibmcloud plugin install code-engine
    

    자세한 정보는 Code Engine CLI 설정의 내용을 참조하십시오. CLI에 대한 자세한 정보는 Code Engine CLI 참조를 참조하십시오.

모든 Code Engine 사용자에게는 종량과금제 계정이 있어야 합니다. 튜토리얼은 비용이 부과될 수 있습니다. 비용 추정기를 사용하여 예상 사용량을 기반으로 한 비용 추정을 생성하십시오. 자세한 정보는 Code Engine 가격을 참조하십시오.

IBM Cloud에 로그인

다음 단계에 따라 IBM Cloud 계정에 로그인하고 리스소 그룹을 대상으로 지정하십시오.

  1. IBM Cloud에 로그인하십시오.

    ibmcloud login
    
  2. 다음 명령을 실행하여 리소스 그룹을 대상으로 지정하십시오. 리소스 그룹 목록을 가져오려면 **ibmcloud resource groups**를 실행하십시오.

    ibmcloud target -g <resource_group>
    

    출력 예

    Targeted resource group default
    

프로젝트 작성

Code Engine "프로젝트"는 개발자에게 의미 있는 논리적 콜렉션으로 관련 워크로드를 그룹화한다는 점에서 Cloud Foundry "영역"과 유사합니다. 회사 조직 구조, 워크로드 간의 종속성 또는 개발 환경 대 테스트 환경 대 프로덕션 환경과 같이 자신에게 맞는 기준에 따라 워크로드를 서로 다른 프로젝트로 그룹화할 수 있습니다. 그런 다음 Cloud Foundry orgs에 대한 액세스를 구성하는 것과 유사하게 이러한 프로젝트에 대한 액세스를 구성할 수 있습니다. 단일 프로젝트 내의 워크로드는 사설 네트워크를 공유하고 프로젝트의 보안 경계 내에서 격리됩니다. 프로젝트 내의 모든 워크로드는 클러스터 외부의 워크로드에 표시될 염려 없이 서로 자유롭게 통신할 수 있습니다. 서로 다른 프로젝트의 워크로드가 서로 통신하려면 인터넷 또는 내부 IBM 사설 네트워크를 사용해야 합니다. 자세한 정보는 Code Engine 애플리케이션의 가시성 옵션을 참조하십시오.

Code Engine에 sample이라는 프로젝트를 작성하십시오.

ibmcloud ce project create --name sample

출력 예

Creating project 'sample'...
ID for project 'sample' is 'abcdabcd-abcd-abcd-abcd-abcd12e3456f7'.
Waiting for project 'sample' to be active...
Now selecting project 'sample'.
OK

프로젝트가 컨텍스트에 맞게 선택되었으므로 모든 후속 애플리케이션 관련 명령은 이 새 sample 프로젝트의 범위 내에 있습니다.

디렉토리 및 소스 코드 작성

  1. 로컬 워크스테이션에 myapp이라는 디렉토리를 작성하고 이 디렉토리로 이동하십시오. 이 디렉토리에 이미지를 빌드하고 앱을 실행하는 데 필요한 모든 파일을 저장하십시오.

    mkdir myapp && cd myapp
    
  2. server.js 파일을 작성하고 다음 소스 코드를 이 파일에 복사하십시오.

    const http = require('http');
    
    
    http.createServer(function (request, response) {
      response.writeHead(200, {'Content-Type': 'text/plain'});
      response.end( "Hello world\n" );
    }).listen(8080);
    

    이 예에서는 Node.js를 사용합니다. 지원되는 런타임에서 코드를 대체할 수 있습니다.

애플리케이션 배치

application create 명령을 사용하여 코드를 Code Engine으로 푸시하십시오. 애플리케이션의 이름과 소스 코드의 위치를 제공해야 합니다. 다음 예에서는 buildpack 전략을 사용하는 myapp이라는 애플리케이션을 작성하고 현재 디렉토리(.)에 소스 코드의 위치를 제공합니다.

ibmcloud ce app create --name myapp --build-source . --strategy buildpacks

출력 예

Creating application 'myapp'...
Packaging files to upload from source path '.'...
Submitting build run 'myapp-run-220999-210706331'...
Creating image 'private.us.icr.io/ce--6ef04-khxrbwa0lci/app-myapp:220418-0207-askql'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220000-210706331' to check the build run status.
Waiting for application 'myapp' to become ready.
Configuration 'myapp' is waiting for a Revision to become ready.
Ingress has not yet been reconciled.
Waiting for load balancer to be ready.
Run 'ibmcloud ce application get -n myapp' to check the application status.
OK

https://myapp.abcdbwa0lci.us-south.codeengine.appdomain.cloud

모두 완료되었습니다. 이제 인터넷 연결 애플리케이션이 작성되었습니다. 애플리케이션의 코드 자체는 Cloud Foundry 애플리케이션에 사용되는 코드와 동일하며, 약간 다른 Code Engine 명령입니다.

위의 app create 명령을 더 자세히 살펴보겠습니다. app create 명령의 출력은 앱을 작성하고 배치하기 전에 빌드 실행 진행에 대한 정보를 제공합니다.

  1. Code Engine이 (이미지에서 직접 가져오는 대신) 소스 코드에서 애플리케이션을 생성하라는 요청을 받습니다.
  2. Code Engine 는 선택한 프로젝트와 연관된 IAM 서비스 ID및 API키를 확인합니다. 이 서비스 ID는 IBM Cloud Container Registry에 읽고 쓸 수 있는 권한이 있어야 합니다. 서비스 ID가 없는 경우 Code Engine에서 작성합니다. 이 서비스 ID는 동일한 프로젝트에서 실행되는 후속 Code Engine 빌드 요청에 사용됩니다.
  3. 이 예제는 로컬 소스 (--build-source .) 에서 코드를 빌드합니다. 소스 코드는 아카이브 파일로 압축되고 계정의 IBM Cloud Container Registry 인스턴스 내의 관리 이름 공간에 업로드됩니다. 로컬 빌드의 경우 IBM Cloud Container Registry만 대상으로 지정할 수 있습니다. 할당량 한계 및 액세스에 대한 정보를 포함하여 IBM Container Registry에 대한 자세한 정보는 IBM Cloud Container Registry 시작하기를 참조하십시오.
  4. Code Engine이 소스 코드를 이미지로 빌드합니다. 소스 이미지는 소스 아카이브 파일과 동일한 네임스페이스에 작성됩니다.
  5. 빌드가 완료되면 애플리케이션이 배치됩니다. 제공된 URL에서 애플리케이션에 액세스할 수 있습니다.

Code Engine을 사용하면 자동 스케일링 및 업데이트의 Blue-Green 롤아웃 등 Cloud Foundry와 동일한 기능이 자동으로 제공될 뿐만 아니라, 애플리케이션이 활성화되지 않을 경우 요금이 부과되지 않도록 해주는 0으로 스케일링 다운과 같은 새로운 기능의 이점도 누릴 수 있습니다.

소스 코드를 빌드하기 위한 옵션에 대해 자세히 알고 싶으십니까? application createjob create 명령을 참조하십시오.

애플리케이션과 작업에 대해 자세히 알고 싶으십니까? Code Engine에서 앱 작업작업 및 작업 실행에 관한 작업을 참조하십시오.

정리

이 튜토리얼을 완료한 후에는 다음 명령으로 작성한 리소스를 정리할 수 있습니다.

애플리케이션 삭제

ibmcloud ce app delete --name myapp

앱을 삭제하면 연관된 빌드 파일도 삭제됩니다.

마지막으로 빌드가 IBM Cloud Container Registry에서 작성한 이미지를 삭제하십시오.

  1. IBM Cloud 콘솔에서 레지스트리 를 탐색하십시오.
  2. 애플리케이션 이름을 검색하여 애플리케이션과 연관된 아카이브와 이미지를 찾으십시오.
  3. 아카이브 및 이미지를 선택한 후 삭제하십시오.

다음 단계

  1. 마이그레이션을 시작하는 중입니까? 시작하기를 확인하십시오.
  2. Cloud Foundry 용어를 Code Engine과 비교하십시오.
  3. 로컬 소스에서 애플리케이션 코드 배치(현재 페이지)
  4. 애플리케이션에서 서비스 바인딩을 사용합니까? 서비스 바인딩 마이그레이션을 확인하십시오.
  5. 스케일링 및 트래픽 관리에 대해 알아보십시오.
  6. Cloud Foundry 명령에 해당하는 Code Engine 명령을 찾으십시오.
  7. 아직 궁금하신 사항이 있으십니까? Cloud Foundry 애플리케이션을 Code Engine으로 마이그레이션 FAQ를 사용해 보십시오.

기타 정보