저장소 소스 코드에서 앱 배치
IBM Cloud® Code Engine 콘솔 및 CLI를 사용하여 Git 저장소에 있는 소스 코드에서 직접 애플리케이션을 배치할 수 있습니다. Code Engine으로 이미지를 빌드하는 경우 얻을 수 있는 이점에 대해 알아보십시오.
콘솔을 통해 저장소 소스 코드에서 앱 배치
콘솔을 사용하여 소스 코드에서 직접 애플리케이션을 배치할 수 있습니다.
시작하기 전에 빌드를 계획하십시오. Dockerfile 작성에 대한 팁을 찾을 수도 있습니다.
Code Engine은 계정의 IBM Cloud® Container Registry 네임스페이스에 이미지를 자동으로 푸시(업로드)하고 네임스페이스를 작성할 수도 있습니다. 이미지를 다른 Container Registry 계정 또는 개인용 Docker Hub 계정에 업로드하려면 컨테이너 레지스트리 액세스를 참조하십시오.
이미지 레지스트리에 액세스하는 데 필요한 권한에 대한 자세한 정보는 이미지 레지스트리에 대한 권한 설정 을 참조하십시오.
- Code Engine 콘솔을 여십시오.
- '만들기 시작'을 선택하세요.
- 사용 가능한 프로젝트 목록에서 프로젝트를 선택하십시오. 프로젝트를 새로 작성할 수도 있습니다. 앱을 배치하려면 선택한 프로젝트가 있어야 합니다.
- 애플리케이션을 선택하십시오.
- 애플리케이션 이름을 입력하십시오. 프로젝트 내에서 고유한 애플리케이션 이름을 사용하십시오.
- '소스 코드에서 컨테이너 이미지 빌드'를 선택합니다.
- 빌드 세부사항 지정을 클릭하십시오.
- 소스 저장소 (예:
https://github.com/IBM/CodeEngine) 를 선택하십시오. 인증 정보가 필요하지 않은 샘플 소스를 사용하므로 코드 저장소 액세스에 대해None을 선택하십시오. 선택적으로 분기 이름을 제공할 수 있습니다. 분기 이름을 제공하지 않고 필드를 비워 두면 Code Engine에서 지정된 저장소의 기본 분기를 자동으로 사용합니다. 다음을 클릭하십시오. - 빌드에 대한 전략과 빌드의 리소스를 선택하십시오. 빌드 옵션에 대한 자세한 정보는 빌드 계획을 참조하십시오. 다음을 클릭하십시오.
- 컨테이너 레지스트리 위치(예:
IBM Registry Dallas)를 선택하여 빌드 출력의 이미지를 저장할 위치를 지정하십시오. 레지스트리가 개인용인 경우에는 이에 대한 액세스 권한을 설정해야 합니다. - 빌드 출력의 이미지를 저장할 위치에 대한 레지스트리 정보를 제공하십시오. 기존 레지스트리 시크릿 을 선택하거나 새 시크릿을 생성하세요. 계정에 있는 Container Registry 인스턴스에 이미지를 빌드하는 경우
Code Engine managed secret을 선택하고 Code Engine에서 시크릿을 작성하고 관리하도록 할 수 있습니다. - 이미지의 네임스페이스, 이름 및 태그를 선택하십시오. 계정에 있는 IBM Cloud Container Registry 인스턴스에 이미지를 빌드하는 경우 기존 네임스페이스를 선택하거나 Code Engine에서 네임스페이스를 작성하고 관리하도록 설정할 수 있습니다.
- 완료를 클릭하십시오.
- 앱에 대한 런타임 설정 또는 환경 변수를 수정하십시오. 이러한 옵션에 대한 자세한 정보는 앱의 엔드포인트 가시성 옵션 및 앱 배치 옵션을 참조하십시오.
- 작성을 클릭하십시오.
- 빌드 실행이 제출되면 빌드된 컨테이너 이미지가 Container Registry로 전송되고 애플리케이션이 이미지를 가져와서 자동으로 배치합니다. 애플리케이션 상태가 준비로 변경되면 애플리케이션을 테스트할 수 있습니다. 애플리케이션 테스트를 클릭한 후 애플리케이션 테스트 분할창에서 요청 전송을 클릭하십시오. 애플리케이션을 웹 페이지에서 열려면 애플리케이션 URL을 클릭하십시오.
완료된 빌드 실행은 결국 자동으로 삭제됩니다. 빌드 실행이 빌드 구성을 기반으로 하는 경우 빌드 실행이 성공하면 이 빌드 실행은 3시간후에 삭제됩니다. 빌드 실행이 성공하지 못한 경우, 해당 빌드 실행은 48시간 후에 삭제됩니다.
애플리케이션을 배치했으므로 애플리케이션 개정, 실행 중인 인스턴스 및 구성 세부사항에 대한 정보를 확인할 수 있습니다.
CLI를 사용하여 저장소 소스 코드에서 앱 배치
CLI를 사용하여 저장소 소스 코드에서 직접 애플리케이션을 배치할 수 있습니다. app create 명령을 사용하여 Git 저장소 소스에서 이미지를 빌드하고 이 빌드된 이미지를 참조하도록 애플리케이션을 배치하십시오.
시작하기 전에
- Code Engine CLI 환경을 설정하십시오.
- 프로젝트를 작성하고 작업하십시오.
이 경우 Code Engine은 Git 저장소 소스에서 이미지를 빌드하고 컨테이너 레지스트리에 이미지를 자동으로 업로드한 후 이 빌드된 이미지를 참조하도록 앱을 작성하고 배치합니다. 이미지가 IBM Cloud® Container Registry 계정에 있는 경우 앱 이름과 Git 저장소의 URL만 제공하면 됩니다. 이 경우 네임스페이스는 Code Engine에서 관리합니다. 하지만 다른 컨테이너 레지스트리를 사용하려면 해당 컨테이너
레지스트리에 대한 이미지 및 레지스트리 시크릿을 지정해야 합니다. 전체 옵션 목록은 ibmcloud ce app create 명령을 참조하십시오.
이미지 레지스트리에 액세스하는 데 필요한 권한에 대한 자세한 정보는 이미지 레지스트리에 대한 권한 설정 을 참조하십시오.
다음 예제 application create 명령은 https://github.com/IBM/CodeEngine 빌드 소스에서 빌드된 이미지를 참조하는 myapp 앱을 작성하고 배치합니다. 이 명령은 자동으로 이미지를 빌드한 후 계정의 IBM Cloud® Container Registry 네임스페이스에 이미지를 업로드합니다. 그러면
애플리케이션에서 이 빌드된 이미지를 참조합니다. --build-context-dir 옵션을 지정하면 빌드는 helloworld 디렉토리에 있는 소스를 사용합니다. 이 예제 명령은 기본 dockerfile 전략 및 기본 medium 빌드 크기를 사용합니다. --build-commit 옵션으로 저장소의 분기 이름을
지정하지 않았기 때문에 Code Engine에서는 지정된 저장소의 기본 분기를 자동으로 사용합니다.
ibmcloud ce application create --name myapp --build-source https://github.com/IBM/CodeEngine --build-context-dir helloworld
출력 예
Creating application 'myapp'...
Submitting build run 'myapp-run-220411-13abcdefg'...
Creating image 'private.us.icr.io/ce--abcde-4svg40kna19/app-myapp:220411-1756-if8jv'...
Waiting for build run to complete...
Build run status: 'Running'
Build run completed successfully.
Run 'ibmcloud ce buildrun get -n myapp-run-220411-13abcdefg' 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.4svg40kna19.us-south.codeengine.appdomain.cloud
다음 명령어의 출력 결과를 확인해 보세요. application create 명령어의 출력 결과를 확인해 보세요. 앱이 생성 및 배포되기 전, 빌드 진행 상황에 대한 정보를 제공합니다.
이 예에서는 빌드된 이미지가 Container Registry의 ce--abcde-4svg40kna19 네임스페이스에 업로드됩니다.
다음 표에는 이 예에서 app create 명령과 함께 사용되는 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 정보는 ibmcloud ce app create 명령을 참조하십시오.
| 옵션 | 설명 |
|---|---|
--name |
애플리케이션의 이름. 프로젝트 내에서 고유한 이름을 사용하십시오. 이 값은 필수입니다.
|
--build-source |
소스 코드가 포함된 Git 저장소의 URL입니다(예: https://github.com/IBM/CodeEngine). |
--build-context-dir |
빌드팩 파일 또는 Dockerfile이 포함되어 있는 저장소의 디렉토리입니다. 이 값은 선택사항입니다. |
다음 출력은 빌드에 대한 정보를 포함하여 이 예에 대한 application get 명령의 결과를 보여줍니다.
출력 예
[...]
Name: myapp
ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name: myproject
Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111
Age: 2d15h
Created: 2022-04-14T16:10:11-04:00
URL: https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
Cluster Local URL: http://myapp.4svg40kna19.svc.cluster.local
Console URL: https://cloud.ibm.com/codeengine/project/us-south/01234567-abcd-abcd-abcd-abcdabcd1111/application/myapp/configuration
Status Summary: Application deployed successfully
Environment Variables:
Type Name Value
Literal CE_API_BASE_URL https://api.private.us-south.codeengine.cloud.ibm.com
Literal CE_APP myapp
Literal CE_DOMAIN us-south.codeengine.appdomain.cloud
Literal CE_PROJECT_ID abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Literal CE_REGION us-south
Literal CE_SUBDOMAIN abcdabcdab
Image: private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj
Resource Allocation:
CPU: 1
Ephemeral Storage: 400M
Memory: 4G
Registry Secrets:
ce-auto-icr-private-us-south
Revisions:
myapp-00001:
Age: 23m
Latest: true
Traffic: 100%
Image: private.us.icr.io/ce--27fe9-4svg40kna19/app-myapp:220414-2010-sqsoj (pinned to 86944c)
Running Instances: 0
Runtime:
Concurrency: 100
Maximum Scale: 10
Minimum Scale: 0
Timeout: 300
Build Information:
Build Run Name: myapp-run-220414-161009244
Build Type: git
Build Strategy: dockerfile-medium
Timeout: 600
Source: https://github.com/IBM/CodeEngine
Context Directory: helloworld
Dockerfile: Dockerfile
Build Run Summary: Succeeded
Build Run Status: Succeeded
Build Run Reason: All Steps have completed executing
Run 'ibmcloud ce buildrun get -n myapp-run-220414-161009244' for details.
[...]
앱이 저장소 소스 코드에서 작성되어 배치되었으므로 ibmcloud ce app update 명령을 사용하여 필요에 맞게 앱을 업데이트할 수 있습니다. 앱 업데이트에 대한 자세한 정보는 앱 업데이트를
참조하십시오. 앱에 사용할 소스를 업데이트하려면 application update 명령에 --build-source 옵션을 제공해야 합니다.
CLI를 사용하여 로컬 소스 또는 저장소 소스 코드에서 앱을 배치하는 경우 결과 빌드 실행은 빌드 구성을 기반으로 하지 않습니다. 완료된 빌드 실행은 결국 자동으로 삭제됩니다. 빌드 실행이 성공하면 빌드 구성을 기반으로 하지 않는 빌드 실행이 1시간후에 삭제됩니다. 빌드 실행에 실패하면 이 빌드 실행은 24시간후에 삭제됩니다. CLI를 사용하여 이 빌드 실행에 대한 정보만 표시할 수 있습니다. 콘솔에서 이 빌드 실행을 볼 수 없습니다.
다음 단계
-
앱이 배치되면 URL을 통해 앱에 액세스하십시오.
-
사용자 정의 도메인 맵핑 을 작성하여 앱에 지정할 수 있습니다. 사용자 정의 도메인 이름을 사용하여 여러 지역에 앱을 배치하는 방법에 대한 자세한 정보는 고가용성 애플리케이션 구성 을 참조하십시오.
-
앱이 배포되었으니, 이제 앱을 이벤트 기반 방식으로 전환하는 것을 고려해 보세요. 이벤트 구독을 사용하여 주기적 스케줄 로 앱을 트리거하거나 파일 업로드 또는 Kafka 메시지 와 같은 이벤트에 반응하도록 앱을 설정할 수 있습니다.
앱이 배치되면 앱 작성 방식이나 이전의 업데이트 방식에 관계없이 다음 방법 중 하나로 배치된 앱을 업데이트하고 참조 코드를 업데이트할 수 있습니다.
-
Open Container Initiative(OCI)표준에 부합하는 컨테이너 이미지가 있다면, 앱을 배포할 때 해당 이미지의 참조 정보만 제공하면 되며, 이 참조 정보는 컨테이너 레지스트리의 위치를 가리키게 됩니다. 공용 레지스트리 또는 개인용 레지스트리 의 이미지를 사용하여 앱을 배치할 수 있습니다.
app create명령을 사용하여 앱을 작성하고 로컬 또는 저장소 소스에서 컨테이너 이미지를 빌드하도록--build-source옵션을 지정했으며 다른 컨테이너 이미지를 가리키도록 앱을 변경하려는 경우에는 먼저 앱에서 빌드의 연관을 제거해야 합니다. 예를 들어,ibmcloud ce application update -n APP_NAME --build-clear를 실행하십시오. 앱에서 빌드의 연관을 제거한 후 다른 이미지를 참조하도록 앱을 업데이트할 수 있습니다. -
Git 저장소에 있는 소스 코드로 시작하는 경우, Code Engine에서 한 번의 오퍼레이션으로 소스에서 이미지를 빌드하고 앱을 배치하도록 선택할 수 있습니다. 이 경우 Code Engine은 이미지를 IBM Cloud® Container Registry에 업로드합니다. 자세한 정보는 저장소 소스 코드에서 앱 배치를 참조하십시오. 이미지 빌드를 더 많이 제어하려면 앱을 배치하기 전에 Code Engine을 사용하여 이미지를 빌드하도록 선택할 수 있습니다.
-
로컬 워크스테이션에 있는 소스 코드로 시작하는 경우, Code Engine에서 하나의 CLI 명령으로 소스에서 이미지를 빌드하고 앱을 배치하도록 선택할 수 있습니다. 이 경우 Code Engine은 이미지를 IBM Cloud® Container Registry에 업로드합니다. 자세한 정보는 CLI를 사용하여 로컬 소스 코드에서 앱 배치를 참조하십시오. 이미지 빌드를 더 많이 제어하려면 앱을 배치하기 전에 Code Engine을 사용하여 이미지를 빌드하도록 선택할 수 있습니다.
예를 들어, 사용자가 앱에 대한 소스 개발을 진행하는 동안 Code Engine에서 로컬 소스의 빌드를 처리하도록 선택할 수 있습니다. 그런 다음 이미지가 만기되면 원하는 특정 이미지를 참조하도록 배치된 앱을 업데이트할 수 있습니다. 이 프로세스는 필요에 따라 반복할 수 있습니다.
업데이트된 앱을 배치할 때 이미지에 대해 태그를 지정하지 않는 한 참조된 컨테이너 이미지의 최신 버전이 다운로드되어 배치됩니다. 이미지에 대해 태그를 지정한 경우 태그 지정된 이미지가 배치에 사용됩니다.
더 많은 코드 예를 찾고 계십니까? IBM Cloud Code Engine GitHub 저장소의 예제를 확인해 보세요.