コードエンジンでコンテナイメージをビルドする


概要


このガイドではIBM Code Engine ソースコントロールリポジトリからコンテナイメージを構築するには.舞台裏でコードエンジンが使用されますTekton パイプラインは、Githubリポジトリからソースコードをプルし、供給されたDockerファイルを使用してコンテナイメージを作成します.ビルドが完了したらコードエンジンが新しいコンテナイメージをIBM Cloud Container Registry .
注:コードエンジンは現在実験的な提供であり、すべてのリソースは7日ごとに削除されます.

IBMクラウドシェルでセッションを開始する


IBMのクラウド・コンソールで、IBM
.
セッションを開始し、自動的にIBMクラウドCLIを通してログインします.

ターゲットリソースグループ


コードエンジンCLIと対話するために、コードエンジンプロジェクトが作成されるリソースグループをターゲットにする必要があります.
$ 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 オプションは自動的にコードエンジン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レジストリをコードエンジンに追加します.IBMコンテナレジストリを使用する場合、ユーザー名は常にiamapikey . 別のIBMコンテナレジストリにプッシュしたい場合endpoint 更新--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コア、メモリ、およびディスクスペースがビルドに割り当てられている方法を定義します
  • コンテナの名前空間とイメージ名
  • レジストリ秘密:コードエンジンがイメージをプッシュしてプルすることができるコンテナーレジストリの秘密
  • ビルドジョブを送信する


    ビルドランが送信される前に(実際にコンテナイメージを構築するプロセス)、コードエンジンを出力するKubernetesクラスタを対象とします.これは私たちがビルドのためだけでなく、進行状況を追跡するために作られているポッドを見ることができます.持つ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
    
    With 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
    
    ビルドが成功したらPODが表示されます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