IBM Cloud Satellite を使用したアプリの開発とデプロイ
DevOps Insights 2026年8月31 日にサービス終了となり、提供が中止されます。 Continuous Delivery は、2027年2月12日に以下のリージョンで提供が中止されます: au-syd、 ca-tor、 us-east。 また、同日をもって、「Code Risk Analyzer」もすべての地域で提供を終了いたします。 あるリージョンでこれらの機能が実際に利用されていない場合、そのリージョンの機能は早期に提供が終了し、新しいインスタンスの受け入れが停止される可能性があります。 詳細はこちら
このチュートリアルでは、 IBM Cloud® Continuous Delivery を使用してオープン・ツールチェーンを作成し、 Satellite にアプリをデプロイする方法について学習します。 また、ツールチェーンが Continuous Delivery サービスに実装される方法、およびツールチェーンを使用して単純な Web アプリケーション (アプリ) を開発およびデプロイする方法についても学習します。
IBM Cloud Satellite は、あらゆる環境にパブリック・クラウド・サービスを提供します。これにより、厳しい規制要件を持つお客様は、セキュアなオンプレミス・データ・センター向けにこれらのサービスの柔軟性とアジリティ(俊敏性)を活用できます。 Continuous Delivery は Satellite 構成 を使用して、 IBM Cloud Satellite 内のクラスターのグループ全体にアプリをデプロイします。 Satellite Config を使用して、Kubernetes のクラスター・グループ、または Satellite ロケーションまたは IBM Cloud で実行されている、 Red Hat® OpenShift® on IBM Cloud® クラスターにデプロイする Kubernetes リソースを指定する構成を作成します。
このチュートリアルで使用するツールチェーンは、コード・スキャン、受け入れテスト、 Git リポジトリー、継続的統合機能、継続的デリバリー機能などの標準 DevOps プラクティスを実装します。 クラスターを作成して Continuous Delivery クラスター・グループに関連付けたら、ツールチェーンを作成してアプリのコードを変更し、変更を Git Repos and Issue Tracking リポジトリーにプッシュします。 リポジトリーに変更をプッシュすると、Tekton ベースの delivery pipeline が自動的にコードをビルドしてデプロイします。
Tektonは、アプリの構築、テスト、デプロイに使用できる、オープンソースでベンダー中立の Kubernetes ネイティブフレームワークです。 Tektonは、継続的インテグレーションおよび継続的デリバリーシステムを構築するための一連の共有コンポーネントを提供しています。 オープンソースプロジェクトであるTektonは、 Continuous Delivery 財団によって運営されています。 この目標は、パイプライン、ワークフロー、およびその他のビルディング・ブロックの業界仕様の提供による、継続的デリバリーの最新化です。 Tekton を使用すると、基礎となる実装の詳細を抽象化することにより、複数のクラウド・プロバイダーやオンプレミス・システムにわたって構築、テスト、およびデプロイを行えます。 Tektonのパイプラインは Continuous Delivery。 詳細については、 IBM Cloud® Kubernetes Service を参照してください IBM Cloud® Kubernetes Service。
このチュートリアルで使用するテンプレートは、Kubernetes の標準プランで機能します。
開始前に
このチュートリアルを開始する前に、以下のリソースが用意されていることを確認してください:
-
IBM Cloud アカウント。 IBM Cloud アカウントのタイプによっては、特定のリソースへのアクセスが制限される場合があります。 アカウント・プランの制限によっては、一部のデプロイメント戦略で必要な特定の機能が使用できない場合があります。 IBM Cloud アカウント詳細については、 IBM Cloud アカウントの設定 および アカウントのアップグレード を参照してください。
-
Kubernetes クラスター および API キー。 これらのリソースは、UI または CLI のいずれかを使用して作成できます。 クラスターのプロビジョンには時間がかかることがあります。 クラスターが作成されると、「デプロイ中」、「保留中」、および「準備完了」の各ステージが進行します。 Kubernetes クラスターの詳細については、 Kubernetes クラスターを参照してください。
-
ツールチェーンが必要とするクラスターを含む Satellite クラスター・グループ 。 このチュートリアルのツールチェーンは、1 つのタイプのクラスター (Kubernetes クラスターまたは Satellite クラスター) のみを含む Satellite クラスター・グループをサポートします。
-
Continuous Delivery サービスのインスタンスです。
-
オプション。 シークレット管理ボールトに保管され、単一の場所から一元的に管理されるシークレット。 さまざまなシークレット管理オファリングおよびデータ保護オファリングからの選択の詳細については、 IBM Cloud シークレットの管理を参照してください。 選択したシークレット管理ボールト・プロバイダーのインスタンスがまだ存在しない場合は作成してください。
-
オプション。 container registry コマンド・ラインを使用して作成される名前空間。 名前空間を作成するには、コマンド・ラインから以下のコマンドを入力します:
ibmcloud cr namespace-add <my namespace>あるいは、 Container Registry ページで名前空間を作成することもできます。 このロケーションでの名前空間の作成の詳細については、 IBM Cloud Container Registry サービスを参照してください。
ツールチェーンを作成する
このステップでは、 デプロイメント戦略を使用したアプリケーションの開発とKubernetes へのデプロイ ツールチェーンを作成します。 ターゲット Kubernetes クラスターは、ツールチェーンのセットアップ時に IBM Cloud API キーと Kubernetes クラスター名を使用して構成されます。 これらの設定は、後で Delivery Pipeline 構成の更新で変更できます。 ターゲット Git リポジトリー・ブランチにマージされるコードはすべて、自動的にビルドされ、検証され、Kubernetes クラスターにデプロイされます。
** デプロイメント戦略を使用したアプリケーションの開発とKubernetes へのデプロイ** ツールチェーンを作成するには、以下をクリックします
または、コンソール IBM Cloud から、 メニュー アイコン( ) > プラットフォーム自動化 > ツールチェーンをクリックします。 **「ツールチェーン」ページで、「ツールチェーンの作成」**をクリックします。 「 ツールチェーンの作成 」ページで、「 デプロイメント戦略を使用して Kubernetes にアプリケーションを開発・デプロイする 」をクリックします。
ツールチェーン名とリージョンの構成
ツールチェーン設定のデフォルト情報を確認します。 ツールチェーンの名前は、そのツールチェーンを IBM Cloud 内で識別するためのものです。 IBM Cloud の同じリージョン、同じリソース・グループのツールチェーンにおいてツールチェーン名が固有になるようにしてください。
ツールチェーンのリージョンは、クラスターおよびレジストリーのリージョンとは違っていてもかまいません。
デプロイメント戦略の選択
ツールチェーンは Satelliteで定義されているクラスター・グループにアプリケーション Docker イメージをデプロイするための継続的デプロイメント・パイプラインを作成します。
-
Satellite 経由で複数のクラスター をクリックし、 Satellite を使用してアプリをデプロイします。
デプロイ戦略 -
「続行」 をクリックします。
アプリケーション・ソース・コード・リポジトリーの構成
「アプリケーション」ステップでは、アプリケーション・ソース・コード・リポジトリーの推奨オプションがデフォルトで表示されます。 基礎となる Git 統合で使用可能なすべてのオプションを表示するには、 拡張オプションをクリックします。 デフォルトでは、ツールチェーンはサンプル・アプリを IBM がホストする Git Repos and Issue Tracking リポジトリーとして複製するデフォルトのサンプルを使用します。
アプリ・リポジトリーの名前を変更できます。 リポジトリーのリージョンは、ツールチェーンのリージョンと同じままになります。
ツールチェーン・テンプレートは、 Hello Containers アプリケーション アプリを提供します。 ツールチェーンの既存のアプリケーション・リポジトリーをリンクする場合は、 独自のアプリの持ち込み を選択し、リポジトリーの URL を指定します。 ツールチェーンは、既存の Git Repos and Issue Tracking リポジトリーへのリンクのみをサポートします。
デフォルトでは、アプリケーション・リポジトリー・テンプレートは Git Repos and Issue Tracking org に複製されます。 org を変更するには、 拡張オプション を有効にして、リポジトリーの所有者を指定します。
インベントリー・リポジトリーを構成します
インベントリー・リポジトリーは、継続的統合ツールチェーンによってビルドされた成果物の詳細を記録します。 インベントリリポジトリのテンプレートをクローンした新しいインベントリリポジトリを作成するか、ツールチェーン間で共有している既存のインベントリリポジトリを使用することができます。
デフォルトでは、インベントリー・リポジトリー・テンプレートは Git Repos and Issue Tracking org に複製されます。 org (組織) を変更するには、 拡張オプション を選択し、リポジトリー所有者を指定します。
シークレットの安全な保管
このツールチェーン内のいくつかのツールは、 IBM Cloud API キーなどのシークレットを必要とします。 すべてのシークレットをシークレット・ボールトに安全に保管し、ツールチェーンの要求に従ってそれらのシークレットを参照する必要があります。
IBM Cloud を使用して、さまざまなシークレット管理およびデータ保護のオファリングから選択できます。これらのオファリングは、機密データの保護とシークレットの一元化に役立ちます。 「シークレット (Secrets)」ステップでは、ツールチェーンに追加またはツールチェーンから削除するシークレット・ボールト統合を指定できます。 前提条件を含むボールト統合の追加と削除、およびヒント使用の詳細については、 IBM Cloud シークレットの管理を参照してください。
テンプレート内でのヒントの使用により、ツールチェーンには事前構成されたシークレットが自動的に取り込まれます。ツールチェーンに付加されたボールト統合からシークレットを手動で選択する必要はありません。
このチュートリアルでは、 IBM Secrets Manager をシークレット・ボールトとして使用します。
IBM Secrets Manager は、ツールチェーンの一部である API キー、イメージ・シグニチャー、または HashiCorp 資格情報などのシークレットを安全に保管して適用します。
IBM Key Protect または HashiCorp, でのシークレット管理については、 シークレットを 参照してください。
デプロイメント・ターゲットの構成
アプリのデプロイ先のターゲット Kubernetes クラスターを構成します。 アプリがビルド、テスト、およびスキャンのフェーズに合格すると、パイプラインはビルドされたアプリ・イメージをターゲット Kubernetes クラスターにデプロイします。 このデプロイメントは、受け入れテストまたは統合テストの準備ができました。
API キーに必要なアクセス権限がある場合、作成された API キー、ボールトから取得された API キー、または手動で指定された API キーを使用して、以下のフィールドが自動的にロードされます。 API キーが有効な場合は、 Container registry リージョンと名前空間クラスター・リージョン、名前、名前空間、およびリソース・グループの値が自動的に取り込まれます。 これらのフィールドはいずれも、ご使用の構成に合わせて更新できます。
-
アプリ名: アプリの名前です。 デフォルトのアプリ名は
hello-containersです。 -
IBM Cloud API キー: いくつかのタスクで
ibmcloudCLI ツールとの対話に使用される API キーです。 以下のいずれかの方法を使用して、使用したい API キーを指定します。- 選択したシークレット・ボールトから既存の API キーをインポートするには、キー・アイコンをクリックします。
- 既存の API キーをコピーしてペーストします。
- 新規 をクリックして API キーを作成します。
- 既存の API キーがない場合は、新規の
api-keyを生成します。
生成された API キーは、選択した既存のシークレット・ボールトに直ちに保存できます。
-
Satellite クラスター・グループ名: Satellite で作成されたクラスター・グループの名前。 アプリがこのクラスター・グループにデプロイされます。
-
クラスター名前空間: クラスター・グループ内のクラスターにクラスター名前空間が存在しない場合は、ツールチェーンによって作成されます。
オプションのツール統合の追加
追加の構成を行うことなく、 IBM Cloud® DevOps Insights ツール統合をツールチェーンに追加できます。
DevOps Insights は、作成されたツールチェーンに含まれています。 DevOps Insights の構成ステップを指定する必要はありません。 継続的統合パイプラインは、ツールチェーンに含まれている DevOps Insights インスタンスを自動的に使用します。 DevOps Insights は、コード、テスト、ビルド、およびデプロイメントのデータを集約して、すべてのチームおよびリリースの速度と品質を可視化します。
「続行」 をクリックします。
ツールチェーンのセットアップを完了します
「要約」ページで、 作成をクリックします。 以下のようにいくつかのステップが自動的に実行されて、ツールチェーンがセットアップされます。
パイプラインの作成後に、個々のツールチェーン統合を構成できます。
新しいツールチェーンを探索する
ツールチェーンの作成後、ツールチェーンの一部となる各ツール統合が図に示されます。
パイプラインを探索する
パイプラインを探索すると、ツールチェーンの流れや、各パイプライン内で実行されるさまざまな処理について理解することができます。 作成したばかりのツールチェーンには、以下の 3 つのパイプラインが含まれています:
- プル・リクエスト・パイプライン: 開発者が開発ブランチからマスター・ブランチ、またはリポジトリー内の他のいずれかのブランチに変更をマージすると実行されます。 プル要求パイプラインは、単体テストおよび静的スキャンをアプリケーション・ソース・コードに対して実行します。
- 継続的統合パイプライン: アプリケーション・ソース・コード・リポジトリーのマスター・ブランチに変更をマージすると実行されます。 継続的統合パイプラインは、アプリケーション・ソース・コード、 CIS チェック、および部品表 (BOM) チェックで単体テスト、コード・カバレッジ、および静的スキャンを実行します。 また、継続的デリバリー・パイプラインは、バイナリー・ビルド成果物を生成し、ツールチェーンで構成されているとおりにそれらを IBM Cloud® Kubernetes Service にアップロードします。 また、継続的統合パイプラインは、ビルド成果物のメタデータを生成し、それをインベントリー・リポジトリーに保管します。
- 継続的デプロイメント・パイプライン: ビルド成果物をデプロイメント環境にデプロイします。 パイプラインは、ヘルス・チェックを実行して、アプリの正常なデプロイメントを検証します。 継続的統合パイプラインが正常に完了した後に、このパイプラインを手動でトリガーする必要があります。 選択したデプロイメント戦略に応じて、継続的デリバリー・パイプラインにさらにトリガーが追加されます。
プル・リクエストと継続的統合パイプラインの実行。
プル・リクエスト・パイプラインを開始するには、アプリ・リポジトリーでマージ・リクエストを作成します:
- ツールチェーンの「概要」ページの**「リポジトリー」**カードで、
compliance-app-<timestamp>アプリ・リポジトリーをクリックします。 - マスター・リポジトリーから、ブランチを作成します。
- サンプル・ノード・アプリまたは README ファイルの一部のコードを更新して、これらの変更を保存します。
- マージ・リクエストを送信します。
- ツールチェーンの「概要」ページの**「リポジトリー」**カードで、
pr-pipelineリポジトリーをクリックしてプル・リクエスト・パイプラインを開始します。 プル・リクエスト・パイプラインのすべてのステージが正常に完了するまで、アプリ・リポジトリー内の対応するマージ要求は保留状態のままになります。 - プル・リクエスト・パイプラインが正常に実行されたら、それを選択して、完了したステップを探索できます。
継続的統合パイプラインを開始するには、アプリ・リポジトリーに継続的統合マージ・リクエストをマージします:
- マージ・リクエストに移動します。
- リクエストをマージして、変更がアプリ・リポジトリーのマスター・ブランチにコピーされるようにします。 継続的統合パイプラインが自動的にトリガーされます。
- 継続的統合ツールチェーンの「概要」ページの**「リポジトリー」**カードで、
ci-pipelineリポジトリーをクリックして継続的統合パイプラインを開始します。 - 継続的な統合パイプラインが正常に実行されたら、パイプラインの実行をクリックして、完了したステップを探索できます。
シフト・レフト・プラクティス
セキュアなアプリケーション開発の世界では、レフト・シフトは、障害やセキュリティーの脆弱性などの問題を防止して検出し、ソフトウェア・デリバリー・プロセスの早い段階でコンプライアンス・チェックを実行するプラクティスです。 品質チェックを開発サイクルの早い段階に移すというこの実践には、以下のようなものがある:
- コードまたはリポジトリー自体に対して実行でき、ビルドされたイメージをできるだけ早くは必要としないチェックを実行します。 これらの検査により、非準拠コードがリポジトリーのマスター・ブランチにマージされないようにします。 プル・リクエスト・パイプラインから証拠が収集されることはないため、その目標は、開発プロセスのできるだけ早い段階でコンプライアンス・チェックを進めることである。
- すべてのチェックは、パイプラインの実行ごとに実行されます。 前の検査が失敗すると、パイプラインは次の検査に進みます。 実行に失敗があるかどうかの評価では、パイプライン・エバリュエーターがあるパイプラインの最終ステップを確認します。
単体テストおよび脆弱点スキャンの結果は、ツールチェーン内の DevOps Insights インスタンスに公開されます。 これらの結果を確認するには、ツールチェーン内の DevOps Insights タイルをクリックし、「品質ダッシュボード」ページに移動します。
パイプラインの実行に失敗があるかどうかの評価では、パイプライン・エバリュエーターがあるパイプラインの最終ステップを確認します。
継続的デリバリー・パイプラインの詳細はこちら
プル・リクエストと継続的統合パイプラインは、すべてのデプロイメント戦略で共通です。 継続的デリバリー・パイプラインの設計および実装の変更は、このチュートリアルで以前に選択したデプロイメント戦略に基づいています。
継続的デリバリー・パイプラインは、以下のいずれかの方法で開始できます:
- 継続的デリバリー・パイプラインを手動でトリガーします。
- インベントリー・リポジトリー内の各
Mergeアクションの後に、継続的デリバリー・パイプラインを自動的にトリガーします。 マージ後に、継続的デリバリー・パイプライン実行を手動でトリガーする必要があります。
Git Repos and Issue Tracking トリガーは、自動継続的デリバリー・パイプラインをトリガーするようにセットアップされていますが、デフォルトでは無効になっています。 初めて変更をプロモートした後で、このトリガーを有効にできます。
{: caption="*継続的デリバリー・パイプラインにおけるローリングデプロイのトリガー
次のステップ
Kubernetes で実行されているサンプル・アプリを削除したい場合は、Kubernetes クラスターをクリーンアップする必要があります:
-
Kubernetes Cluster のホーム・ページに移動します。
-
サンプル・アプリが実行されているクラスターを選択します。
-
**「Kubernetes ダッシュボード (Kubernetes dashboard)」**をクリックします。
-
サンプル・アプリケーションが実行されているロケーションから、 名前空間を選択します。
Kubernetes 名前空間 -
選択した名前空間内にリストされている関連するデプロイメント、サービス、および Ingress を削除します。
なにかお困りですか ?
IBM Cloud IBM の を搭載した のAIアシスタントは、 での業務や、利用可能な製品およびサービスのカタログを使用したソリューションの構築について学ぶためのものです。 watsonx IBM Cloud AIアシスタントのヘルプを参照してください。
その他のサポート・オプションについては、Continuous Delivery のヘルプおよびサポートの利用を参照してください。
