Code Engine으로 컨테이너 이미지 빌드
개요
이 가이드에서는 실험용IBM Code Engine을 사용하여 소스 제어 리포지토리에서 컨테이너 이미지를 빌드하는 방법을 보여줍니다. 배후에서 Code Engine은 Tekton 파이프라인을 사용하여 Github 리포지토리에서 소스 코드를 가져온 다음 제공된 Docker 파일을 사용하여 컨테이너 이미지를 생성합니다. 빌드가 완료되면 코드 엔진이 새 컨테이너 이미지를 IBM Cloud Container Registry에 푸시합니다.
참고: Code Engine은 현재 시험용 제품이며 모든 리소스는 7일마다 삭제됩니다.
IBM Cloud Shell에서 세션 시작
IBM Cloud 콘솔에서 IBM Cloud Shell 아이콘을 클릭하십시오.
.
세션이 시작되고 IBM Cloud CLI를 통해 자동으로 로그인됩니다.
대상 리소스 그룹
Code Engine CLI와 상호 작용하려면 먼저 Code Engine 프로젝트가 생성될 리소스 그룹을 대상으로 지정해야 합니다.
$ ibmcloud target -g <Your Resource Group>
코드 엔진 프로젝트 생성
첫 번째 단계는 코드 엔진 프로젝트를 만드는 것입니다.
Keep in mind during the Beta phase you are limited to one Code Engine project per region. If you already have a Code Engine project you can simply target that project using the command
ibmcloud ce project target -n <name of project>
--target
옵션을 지정하여 Code Engine cli가 새 프로젝트를 자동으로 대상으로 지정하도록 합니다.$ ibmcloud ce project create -n <Project Name> --target
프로젝트 생성에는 몇 분이 소요될 수 있지만 완료되면 다음과 같이 표시됩니다.
$ ibmcloud ce project create -n ce-demo-project --target
Creating project 'ce-demo-project'...
Waiting for project 'ce-demo-project' to be in ready state...
Now selecting project 'ce-demo-project'.
OK
레지스트리 액세스를 위한 코드 엔진용 API 키 생성
빌드 프로세스의 일부로 공개 Github 리포지토리를 가져온 다음 빌드된 컨테이너를 IBM Cloud Container Registry 에 푸시합니다. 코드 엔진 프로젝트를 레지스트리에 푸시하려면 API 키를 생성해야 합니다.
$ ibmcloud iam api-key-create <Project Name>-cliapikey -d "API Key for talking to Image registry from Code Engine" --file key_file
코드 엔진 레지스트리 암호 생성
API 키가 생성되면 이제 코드 엔진에 IBM Cloud Container Registry를 추가합니다. IBM Container Registry를 사용할 때 사용자 이름은 항상
iamapikey
입니다. 대체 IBM Container Registryendpoint로 푸시하려면 이에 따라 --server
플래그를 업데이트하십시오.$ export CR_API_KEY=`jq -r '.apikey' < key_file`
$ ibmcloud ce registry create --name ibmcr --server us.icr.io --username iamapikey --password "${CR_API_KEY}"
ibmcloud ce registry list
명령을 실행하여 모든 레지스트리 비밀을 볼 수 있습니다.$ ibmcloud ce registry list
Project 'demo-rt' and all its contents will be automatically deleted 7 days from now.
Listing image registry access secrets...
OK
Name Age
ibmcr 11s
코드 엔진 빌드 정의 만들기
레지스트리 액세스가 추가되면 이제 빌드 정의를 만들 수 있습니다. 이미지를 푸시할 컨테이너 네임스페이스가 아직 없는 경우 [이 가이드를 따라 생성하세요.
$ ibmcloud ce build create --name go-app-example-build --source https://github.com/greyhoundforty/ce-build-example-go --strategy kaniko --size medium --image us.icr.io/<namespace>/go-app-example --registry-secret ibmcr
명령 분석:
kaniko
.빌드 작업 제출
빌드 실행이 제출되기 전에(컨테이너 이미지를 빌드하는 실제 프로세스) Code Engine을 구동하는 기본 Kubernetes 클러스터를 대상으로 지정하려고 합니다. 이렇게 하면 빌드를 위해 회전하는 포드를 볼 수 있을 뿐만 아니라 진행 상황을 추적할 수 있습니다. Cloud Shell 내에서
kubctl
가 클러스터 대상이 되도록 하려면 다음 명령을 실행합니다. ibmcloud ce project target -n <Name of Project> -k
다음과 유사한 출력이 표시되어야 합니다.
$ ibmcloud ce project target -n demo-rt -k
Selecting project 'demo-rt'...
Added context for 'demo-rt' to the current kubeconfig file.
OK
kubectl
가 적절하게 구성되면 이제 buildrun
명령을 사용하여 컨테이너 이미지의 실제 빌드를 시작할 수 있습니다. --build
플래그를 사용하여 이전에 생성한 빌드 정의를 지정합니다.$ ibmcloud ce buildrun submit --name go-app-buildrun-v1 --build go-app-example-build
명령
ibmcloud ce buildrun get --name <Name of build run>
을 사용하여 빌드 실행 상태를 확인할 수 있습니다.$ ibmcloud ce buildrun get --name go-app-buildrun-v1
Project 'demo-rt' and all its contents will be automatically deleted 7 days from now.
Getting build run 'go-app-buildrun-v1'...
OK
Name: go-app-buildrun-v1
ID: d378e865-ecf4-4e26-932d-acb437eef0ef
Project Name: demo-rt
Project ID: ab07a001-9a77-4fd8-82e8-d4f8395ad735
Age: 36s
Created: 2020-09-23 09:13:33 -0500 CDT
Status:
Reason: Running
Registered: Unknown
Instances:
Name Running Status Restarts Age
go-app-buildrun-v1-xpqfq-pod-hqchd 2/4 Running 0 34s
다음을 실행하여 Kubernetes 포드의 상태를 확인할 수도 있습니다
kubectl get pods
.$ kubectl get pods
NAME READY STATUS RESTARTS AGE
go-app-buildrun-v1-xpqfq-pod-hqchd 2/4 Running 0 41s
빌드가 성공적으로 완료되면 포드가 표시되고
Completed
빌드 실행이 표시됩니다Succeeded
.$ kubectl get pods
NAME READY STATUS RESTARTS AGE
go-app-buildrun-v1-xpqfq-pod-hqchd 0/4 Completed 0 4m10s
$ ibmcloud ce buildrun get --name go-app-buildrun-v1
Project 'demo-rt' and all its contents will be automatically deleted 7 days from now.
Getting build run 'go-app-buildrun-v1'...
OK
Name: go-app-buildrun-v1
ID: d378e865-ecf4-4e26-932d-acb437eef0ef
Project Name: demo-rt
Project ID: ab07a001-9a77-4fd8-82e8-d4f8395ad735
Age: 4m26s
Created: 2020-09-23 09:13:33 -0500 CDT
Status:
Reason: Succeeded
Registered: True
Instances:
Name Running Status Restarts Age
go-app-buildrun-v1-xpqfq-pod-hqchd 0/4 Succeeded 0 4m24s
Reference
이 문제에 관하여(Code Engine으로 컨테이너 이미지 빌드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/greyhoundforty/build-container-images-with-code-engine-1h57텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)