Code Engine を使用したアプリの開発とデプロイ
このチュートリアルでは、IBM Cloud® Continuous Delivery を使用してオープン・ツールチェーンを作成し、Code Engine にアプリをデプロイする方法について学習します。 また、ツールチェーンが Continuous Delivery サービスに実装される方法、およびツールチェーンを使用して単純な Web アプリケーション (アプリ) を開発およびデプロイする方法についても学習します。
IBM Cloud® Code Engineは、Web アプリ、マイクロサービス、イベント・ドリブン機能、バッチ・ジョブなどのコンテナー化されたワークロードを実行する、完全に管理されたサーバーレス・プラットフォームです。Code Engineは、ソース・コードからコンテナー・イメージを作成することもできます。 これらのワークロードはすべて同じ Kubernetes インフラストラクチャーの中でホストされるので、すべてがシームレスに連携できます。 Code Engine のエクスペリエンスは、コードのホストに必要なインフラストラクチャーではなく、コードの作成にユーザーが集中できるように設計されています。
このチュートリアルで使用するツールチェーンは、コード・スキャン、受け入れテスト、 Git リポジトリー、継続的統合機能、継続的デリバリー機能などの標準 DevOps プラクティスを実装します。 クラスターを作成して Continuous Delivery クラスター・グループに関連付けたら、ツールチェーンを作成してアプリのコードを変更し、変更を Git Repos and Issue Tracking リポジトリーにプッシュします。 リポジトリーに変更をプッシュすると、Tekton ベースの delivery pipeline が自動的にコードをビルドしてデプロイします。
Tekton は、ベンダーに依存しないオープン・ソースの Kubernetesネイティブ・フレームワークであり、アプリケーションのビルド、テスト、およびデプロイに使用できます。 Tektonは、継続的インテグレーションと継続的デリバリーシステムを構築するための共有コンポーネント群を提供する。 オープンソースプロジェクトとして、Tektonは Continuous Delivery Foundationによって管理されている。 この目標は、パイプライン、ワークフロー、およびその他のビルディング・ブロックの業界仕様の提供による、継続的デリバリーの最新化です。 Tekton を使用すると、基礎となる実装の詳細を抽象化することにより、複数のクラウド・プロバイダーやオンプレミス・システムにわたって構築、テスト、およびデプロイを行えます。 Tekton パイプラインは、 Continuous Deliveryに組み込まれています。
開始前に
このチュートリアルを開始する前に、以下のリソースが用意されていることを確認してください:
-
IBM Cloud アカウント。 IBM Cloud アカウントのタイプによっては、特定のリソースへのアクセスが制限される場合があります。 アカウント・プランの制限によっては、一部のデプロイメント戦略で必要な特定の機能が使用できない場合があります。 IBM Cloud アカウントの詳細については、 IBM Cloud アカウントの設定 および アカウントのアップグレードを 参照してください。
-
Code Engine プロジェクトおよび API キー。 これらのリソースは、UI または CLI のいずれかを使用して作成できます。 Code Engine プロジェクトについて詳しくは、Code Engine プロジェクトを参照してください。
-
Continuous Delivery サービスのインスタンスです。
-
オプション。 シークレット管理ボールトに保管され、単一の場所から一元的に管理されるシークレット。 さまざまなシークレット管理オファリングおよびデータ保護オファリングからの選択の詳細については、IBM Cloud シークレットの管理を参照してください。 選択したシークレット管理ボールト・プロバイダーのインスタンスがまだ存在しない場合は作成してください。
-
オプション。 container registry コマンド・ラインを使用して作成される名前空間。 名前空間を作成するには、コマンド・ラインから以下のコマンドを入力します:
ibmcloud cr namespace-add <my namespace>
あるいは、 Container Registry ページで名前空間を作成することもできます。 このロケーションでの名前空間の作成の詳細については、 IBM Cloud Container Registry サービスを参照してください。
ツールチェーンを作成する
このステップでは、Code Engine アプリの開発ツールチェーンを作成します。 ターゲット Code Engine プロジェクトは、ツールチェーンのセットアップ時に IBM Cloud API キーと Code Engine プロジェクト名を使用して構成されます。 これらの設定は、後で Delivery Pipeline 構成の更新で変更できます。 ターゲット Git リポジトリー・ブランチにマージされるコードはすべて、自動的にビルドされ、検証され、Code Engine プロジェクトにデプロイされます。
Code Engine アプリの開発ツールチェーンを作成するには、以下をクリックします。
または、IBM Cloudコンソールから、メニューアイコンの >Platform Automation>Toolchains をクリックします。 **「ツールチェーン」ページで、「ツールチェーンの作成」**をクリックします。
Create a Toolchain ページで、 Develop a Code Engine Appをクリックします。
ツールチェーン名とリージョンの構成
-
「ようこそ」画面で、ツールチェーン設定のデフォルト情報を確認します。 ツールチェーンの名前は、そのツールチェーンを IBM Cloud 内で識別するためのものです。 IBM Cloud の同じリージョン、同じリソース・グループのツールチェーンにおいてツールチェーン名が固有になるようにしてください。
ツールチェーンのリージョンは、クラスターおよびレジストリーのリージョンとは違っていてもかまいません。
Code Engine secure app toolchain name and region -
**「Start」**をクリックします。
アプリケーション・ソース・コード・リポジトリーの構成
-
「アプリケーション」ステップでは、アプリケーション・ソース・コード・リポジトリーの推奨オプションがデフォルトで表示されます。 基礎となる Git 統合で使用可能なすべてのオプションを表示するには、 拡張オプションをクリックします。 デフォルトでは、ツールチェーンはサンプル・アプリを IBM がホストする Git Repos and Issue Tracking リポジトリーとして複製するデフォルトのサンプルを使用します。
Code Engine secure app repo アプリ・リポジトリーの名前を変更できます。 リポジトリーのリージョンは、ツールチェーンのリージョンと同じままになります。
-
オプション。 ツールチェーン・テンプレートには、Hello World サンプル・アプリケーションのアプリが用意されています。 ツールチェーンの既存のアプリケーション・リポジトリーをリンクする場合は、 独自のアプリの持ち込み を選択し、リポジトリーの URL を指定します。 ツールチェーンは、既存の Git Repos and Issue Tracking リポジトリーへのリンクのみをサポートします。
-
「続行」 をクリックします。
デフォルトでは、アプリケーション・リポジトリー・テンプレートは Git Repos and Issue Tracking org に複製されます。 org を変更するには、 拡張オプション を有効にして、リポジトリーの所有者を指定します。
シークレットの安全な保管
このツールチェーン内のいくつかのツールは、 IBM Cloud API キーなどのシークレットを必要とします。 すべてのシークレットをシークレット・ボールトに安全に保管し、ツールチェーンの要求に従ってそれらのシークレットを参照する必要があります。
-
IBM Cloud を使用して、さまざまなシークレット管理およびデータ保護のオファリングから選択できます。これらのオファリングは、機密データの保護とシークレットの一元化に役立ちます。 「シークレット (Secrets)」ステップでは、ツールチェーンに追加またはツールチェーンから削除するシークレット・ボールト統合を指定できます。 前提条件を含むボールト統合の追加と削除、およびヒント使用の詳細については、 IBM Cloud シークレットの管理を参照してください。
テンプレート内でのヒントの使用により、ツールチェーンには事前構成されたシークレットが自動的に取り込まれます。ツールチェーンに付加されたボールト統合からシークレットを手動で選択する必要はありません。
このチュートリアルでは、 IBM Secrets Manager をシークレット・ボールトとして使用します。
Code Engine secure app secrets options IBM Secrets Manager は、ツールチェーンの一部である API キー、イメージ・シグニチャー、または HashiCorp 資格情報などのシークレットを安全に保管して適用します。
Code Engine Secrets Manager options -
「続行」 をクリックします。
IBM Key Protect または HashiCorp, でのシークレット管理については、 シークレットを 参照してください。
デプロイメント・ターゲットの構成
アプリのデプロイ先のターゲット Code Engine プロジェクトを構成します。 アプリがビルド、テスト、およびスキャンのフェーズに合格すると、パイプラインはビルドされたアプリ・イメージをターゲット Code Engine プロジェクトにデプロイします。 このデプロイメントは、受け入れテストまたは統合テストの準備ができました。
-
API キーに必要なアクセス権限がある場合、作成された API キー、ボールトから取得された API キー、または手動で指定された API キーを使用して、以下のフィールドが自動的にロードされます。 API キーが有効な場合は、 Container registry リージョンと名前空間クラスター・リージョン、名前、名前空間、およびリソース・グループの値が自動的に取り込まれます。 これらのフィールドはいずれも、ご使用の構成に合わせて更新できます。
-
アプリ名: アプリの名前です。 デフォルトのアプリ名は、ツールチェーン名と同じです。
-
IBM Cloud API キー: いくつかのタスクで
ibmcloud
CLI ツールとの対話に使用される API キーです。 以下のいずれかの方法を使用して、使用したい API キーを指定します。- 選択したシークレット・ボールトから既存の API キーをインポートするには、キー・アイコンをクリックします。
- 既存の API キーをコピーしてペーストします。
- 新規 をクリックして API キーを作成します。
- 既存の API キーがない場合は、新規の
api-key
を生成します。
生成された API キーは、選択した既存のシークレット・ボールトに直ちに保存できます。
-
コンテナー・レジストリーのリージョン: コンテナー名前空間が配置されている Container Registry リージョン。
-
コンテナー・レジストリー名前空間: 関連付けられた Container Registry リージョン内のコンテナー名前空間のリストから選択します。
-
Code Engine リージョン: Code Engine プロジェクトが配置されているリージョン。
-
Code Engine リソース・グループ: Code Engine プロジェクトが作成されたリソース・グループ。
-
Code Engine プロジェクト: Code Engine 内に作成されたプロジェクトの名前。 アプリがこのプロジェクトにデプロイされます。
Code Engine secure app rolling deployment target details -
-
「続行」 をクリックします。
オプションのツール統合の追加
追加の構成を行うことなく、 IBM Cloud® DevOps Insights ツール統合をツールチェーンに追加できます。
DevOps Insights は、作成されたツールチェーンに含まれています。 DevOps Insights の構成ステップを指定する必要はありません。 継続的統合パイプラインは、ツールチェーンに含まれている DevOps Insights インスタンスを自動的に使用します。 DevOps Insights は、コード、テスト、ビルド、およびデプロイメントのデータを集約して、すべてのチームおよびリリースの速度と品質を可視化します。
「続行」 をクリックします。
ツールチェーンのセットアップを完了します
「要約」ページで、**「ツールチェーンの作成」**をクリックします。 以下のようにいくつかのステップが自動的に実行されて、ツールチェーンがセットアップされます。
パイプラインの作成後に、個々のツールチェーン統合を構成できます。

新しいツールチェーンを探索する
ツールチェーンの作成後、ツールチェーンの一部となる各ツール統合が図に示されます。
パイプラインを探索する
パイプラインを探索すると、ツールチェーンの流れや、各パイプライン内で実行されるさまざまな処理について理解することができます。 作成したツールチェーンには、以下のパイプラインが含まれています。
- プル・リクエスト・パイプライン: 開発者が開発ブランチからマスター・ブランチ、またはリポジトリー内の他のいずれかのブランチに変更をマージすると実行されます。 プル要求パイプラインは、単体テストおよび静的スキャンをアプリケーション・ソース・コードに対して実行します。
- 継続的統合パイプライン: アプリケーション・ソース・コード・リポジトリーのマスター・ブランチに変更をマージすると実行されます。 継続的統合パイプラインは、アプリケーション・ソース・コード、 CIS チェック、および部品表 (BOM) チェックで単体テスト、コード・カバレッジ、および静的スキャンを実行します。 また、継続的デリバリー・パイプラインは、バイナリー・ビルド成果物を生成し、ツールチェーンで構成されているとおりにそれらを IBM Cloud® Kubernetes Service にアップロードします。 また、継続的統合パイプラインは、ビルド成果物のメタデータを生成し、それをインベントリー・リポジトリーに保管します。
- 継続的デプロイメント・パイプライン: Code Engine コンポーネント・イメージ (継続的統合パイプラインによってビルドおよびデプロイされる) を、別のプロジェクトでホストされる別の Code Engine コンポーネントにデプロイします。
プル・リクエストと継続的統合パイプラインの実行。
プル・リクエスト・パイプラインを開始するには、アプリ・リポジトリーでマージ・リクエストを作成します:
- ツールチェーンの「概要」ページの**「リポジトリー」**カードで、
secure-app-toolchain-code-engine-demo
アプリ・リポジトリーをクリックします。 - マスター・リポジトリーから、ブランチを作成します。
- サンプル・ノード・アプリまたは README ファイルの一部のコードを更新して、これらの変更を保存します。
- マージ・リクエストを送信します。
- ツールチェーンの「概要」ページの**「デリバリー・パイプライン」**カードで、
pr-pipeline
パイプラインをクリックしてプル・リクエスト・パイプライン・ダッシュボードを開きます。 プル・リクエスト・パイプラインのすべてのステージが正常に完了するまで、アプリ・リポジトリー内の対応するマージ要求は保留状態のままになります。 - プル・リクエスト・パイプラインが正常に実行されたら、それを選択して、完了したステップを探索できます。

継続的統合パイプラインを開始するには、アプリ・リポジトリーに継続的統合マージ・リクエストをマージします:
-
マージ・リクエストに移動します。
-
リクエストをマージして、変更がアプリ・リポジトリーのマスター・ブランチにコピーされるようにします。 継続的統合パイプラインが自動的にトリガーされます。
-
継続的統合ツールチェーンの「概要」ページの**「デリバリー・パイプライン」**カードで、
ci-pipeline
パイプラインをクリックして、継続的統合パイプラインのダッシュボードを開きます。 -
継続的な統合パイプラインが正常に実行されたら、パイプラインの実行をクリックして、完了したステップを探索できます。
インテグレーション・パイプラインの成功 -
deploy-component
タスクを展開し、execute
ステップをクリックします。 「Logs
」タブを選択し、ログの末尾までスクロールします。 デプロイされた Code Engine アプリへのリンクをクリックして、実行中のアプリを表示します。
次のステップ
別の Code Engine プロジェクトでホストされる別のコンポーネントとして Code Engine コンポーネント (継続的統合パイプラインがビルドおよびデプロイする) をデプロイする場合は、以下のステップを実行します。
-
継続的インテグレーションのツールチェーン概要ページのデリバリーパイプラインカードで、 cd-pipeline パイプラインをクリックし、継続的デプロイメントパイプラインダッシュボードを開きます。
-
「パイプラインの実行 (run pipeline)」 をクリックして、
cd-manual-run
トリガーを開始します。 -
継続的デプロイメントパイプラインの実行が成功したら、パイプラインの実行をクリックして完了したステップを確認できます。
デプロイメント・パイプラインの成功 -
deploy-component タスクを展開し、 実行ステップをクリックする。 ログ」 タブをクリックし、ログの最後までスクロールする。 デプロイされた Code Engine アプリへのリンクをクリックして、実行中のアプリを表示します。
Code Engine で実行されているサンプル・アプリを削除する場合は、以下の手順を実行します。
-
Code Engine 「プロジェクト」 ページに移動します。
-
サンプル・アプリが実行されているプロジェクトをクリックします。
-
**「アプリケーション」**を選択してから、サンプル・アプリのチェック・ボックスを選択します。
-
**「削除」**をクリックします。
なにかお困りですか ?
IBM Cloud IBM の を搭載した のAIアシスタントは、 での業務や、利用可能な製品およびサービスのカタログを使用したソリューションの構築について学ぶためのものです。 watsonx IBM Cloud AIアシスタントのヘルプを参照してください。
その他のサポート・オプションについては、Continuous Delivery のヘルプおよびサポートの利用を参照してください。