Code Engine으로 컨테이너 이미지 빌드

8922 단어 ibmcloud

개요



이 가이드에서는 실험용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


명령 분석:
  • name: 빌드 정의의 이름
  • 소스: 코드가 있는 소스 제어 저장소
  • 전략: 이미지를 빌드하는 데 사용할 build strategy입니다. 이 경우 저장소에 Dockerfile이 있으므로 사용할 것입니다kaniko.
  • 크기: 빌드의 크기는 CPU 코어, 메모리 및 디스크 공간이 빌드에 할당되는 방식을 정의합니다
  • .
  • image: 빌드된 컨테이너 이미지를 푸시하기 위한 Container Registry 네임스페이스 및 이미지 이름
  • registry-secret: Code Engine이 이미지를 푸시 및 풀할 수 있도록 하는 Container Registry 암호

  • 빌드 작업 제출



    빌드 실행이 제출되기 전에(컨테이너 이미지를 빌드하는 실제 프로세스) 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
    

    좋은 웹페이지 즐겨찾기