Oracle Cloud Infrastructure DevOpsとOCIインスタンスを使用したCI/CDパイプラインの構築

アプリケーションをクラウドで効率的に実行するには、ソフトウェアの迅速な配信が不可欠です。Oracle DevOpsサービスは、継続的インテグレーションおよびデプロイメント(CI/CD)プラットフォームを開発者に提供します。DevOpsサービスを使用して、Oracle Cloudでソフトウェアおよびアプリケーションを簡単にビルド、テストおよびデプロイできます。DevOpsビルド・パイプラインとデプロイメント・パイプラインは、変更主導型のエラーを削減し、リリースのビルドおよびデプロイに顧客が費やす時間を短縮します。またこのサービスは、コードを格納するためのプライベートGitリポジトリを提供し、外部コード・リポジトリへの接続をサポートします。ワークロードを(オンプレミスまたは他のクラウドから) OCIに移行する場合でも、OCIで新しいアプリケーションを開発する場合でも、DevOpsサービスを使用して、ソフトウェア・デリバリのライフサイクルを簡略化できます。

アーキテクチャ

このリファレンス・アーキテクチャは、最新のアプリケーションを構築してOCIコンピュート・インスタンスにデプロイする方法を示しています。このデモンストレーションでは、Graal Enterprise/Micronaut対応のJavaアプリケーションに基づくアプリケーションを使用します。アプリケーションはOCIロード・バランサを介して公開され、アクティブなデプロイメント中のトラフィックのスムーズなシフトが保証されます。

次のダイアグラムにこのアーキテクチャを示します。

instance- group- deploy- arch.pngの説明が続きます
図instance- group- deploy- arch.pngの説明

このアーキテクチャには次のコンポーネントがあります。
  • リージョン

    OCIリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含むローカライズされた地理的な領域です。リージョンは他のリージョンから独立しており、巨大な距離は(複数の国または大陸にわたって)分離できます。アーキテクチャでは単一リージョンが使用されます。

  • DevOpsプロジェクト

    CI/CDワークフローの実装に必要なDevOpsリソースの論理グループ。DevOpsリソースは、アーティファクト、ビルド・パイプライン、デプロイメント・パイプライン、外部接続、トリガーおよび環境です。DevOpsプロジェクトを使用すると、すべてのDevOpsリソースのロギング、監視および通知を簡単に有効にできます。

  • ビルド・パイプライン

    ビルド・パイプラインは、ソース・コード・リポジトリからコミットIDを取得し、そのソース・コードを使用してビルド手順を実行します。ビルド・パイプラインは、ビルド・プロセスのステージのセット(ソフトウェア・アーティファクトのビルド、テストおよびコンパイル、OCIリポジトリへのアーティファクトのデリバリ、オプションのデプロイメントのトリガー)を定義します。ビルド実行のフローと命令は、ビルド仕様ファイルで定義します。

  • ビルド・ステージ

    ステージは、パイプラインの実行中に実行される個々のアクションです。ここで説明する様々なビルド・ステージは次のとおりです。

    • マネージド・ビルド・ステージ- ソース・コードを構築およびテストするためのマネージド・ビルド・ステージ。
    • Deliver Artifacts Stage: ビルド・ステージの出力を様々なリポジトリにプッシュするステージ。コンテナ・リポジトリへのコンテナ・イメージとアーティファクト・レジストリへのデプロイメント・マニフェストの類似。
    • デプロイメントの起動- ビルド・ステージが完了したらデプロイメント・パイプラインを起動するステージ。また、管理対象ビルド・ステージからデプロイメント・パイプライン・ステージにエクスポートされた変数を解析します。
  • コード・リポジトリ

    DevOpsサービスによってホストされるプライベートGitリポジトリ。DevOpsコード・リポジトリを使用して、ソース・コードを格納、管理および開発できます。

  • デプロイメント・パイプライン

    アーティファクトのセットをターゲット環境に配信およびデプロイするための一連のステップ。ソフトウェア・リリースのフローとロジックは、シリアルまたはパラレルで実行できるステージを定義することで制御できます。

  • デプロイメント・ステージ

    ステージは、パイプラインの実行中に実行される個々のアクションです。ここでは、デプロイメント・パイプラインでコンピュート・インスタンス・グループ・ローリング・ステージを使用します。これにより、OCIコンピュート・インスタンスにアプリケーションが適宜インストールされます。

  • DevOpsアーティファクト

    DevOpsアーティファクトは、アプリケーションを構成するファイル、バイナリ、パッケージ、マニフェストまたはイメージへの参照またはポインタです。アーティファクトを作成する場合は、実際のアーティファクトのソースの場所をOracle DevOpsに通知します。DevOpsは、OCIコンテナ・イメージ・レジストリ・リポジトリとOCIアーティファクト・レジストリ・リポジトリをサポートします。

  • アーティファクト・リポジトリ

    アーティファクト・リポジトリは、同様のアーティファクトをグループ化するリポジトリを作成します。リポジトリが作成されると、アーティファクトをアップロードできます。これらのアーティファクトは、ターゲット・デプロイメント環境に配信されるテキスト・ファイル、バイナリおよびデプロイメント・マニフェストのコレクションです。各アーティファクトには名前があり、そのパスはversionです。パスは、アーティファクトを編成するための文字列です。

  • OCIロギングおよび通知サービス

    OCIロギング・サービスは、デプロイメントに関連するログを格納します。デプロイメント・ランタイム出力およびデプロイメントの最終結果は、ログ・エントリとして表示されます。OCI通知サービスは、デプロイメント・プロジェクトとそのリソースの最新の状態を可視化し、必要なアクションを実行します。たとえば、デプロイ・パイプライン内のステージが承認を待機しているなど、重要なイベントが発生すると通知されます。通知メッセージを受信したら、DevOpsデプロイメント・パイプラインに移動してステージを承認できます。

  • 環境の配置

    環境とは、アーティファクトがデプロイされる顧客のコンピューティング・リソースの集合です。環境は、ファンクション、コンピュート仮想マシン(VM)またはベア・メタル・インスタンス、OKEクラスタのいずれかです。Blue Greenデプロイメントは、OKEクラスタおよびCompute仮想マシンでのみ使用できます。

  • OCIコンピュート・インスタンス

    Oracle Cloud Infrastructureは、高パフォーマンスのベア・メタル・サーバーおよびVMから軽量コンテナまでのあらゆるワークロード・ニーズを満たす、迅速、柔軟かつ手頃な価格のコンピュート能力を提供します。OCI Computeは、VMとベア・メタル・インスタンスを独自に柔軟に提供し、最適な価格性能を実現します。このアーキテクチャでは、OCI Compute with Oracle LinuxをOSイメージとして使用します。

  • OCI Load Balancer

    Oracle Cloud Infrastructure Load Balancingサービスでは、1つのエントリ・ポイントから仮想クラウド・ネットワーク(VCN)にアクセス可能な複数のサーバーへの自動トラフィック分散が可能です。このサービスは、選択したパブリックIPアドレスまたはプライベートIPアドレスと、プロビジョニング済帯域幅を持つロード・バランサを提供します。

推奨事項

Oracle Cloud Infrastructure DevOpsおよびOCIインスタンスを使用してCI/CDパイプラインを構築する際の開始点として、次の推奨事項を使用します。 お客様の要件は、ここで説明するアーキテクチャとは異なる場合があります。
  • コンピュート・シェイプ

    このアーキテクチャでは、E3またはE4フレックス・シェイプとともにOracle Linux OSイメージを使用し、OKEクラスタ・ノード内のコンピュート・ホストをホストするために最小リソースを使用します。アプリケーションでより多くのメモリーまたはコアが必要な場合は、別のシェイプを選択できます。

  • VCN

    VCNを作成する場合、必要なCIDRブロックの数を決定し、VCN内のサブネットにアタッチする予定のリソースの数に基づいて各ブロックのサイズを決定します。標準のプライベートIPアドレス空間のCIDRブロックを使用します。

    VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。

    このアーキテクチャでは、パブリックVCNを使用してOracle Container Engine for Kubernetesをホストします。プライベートVCNを使用することもできます。その場合は、NATゲートウェイを使用して、パブリック・インターネットを介したクラスタ・アクセス権を付与します。

  • インスタンス・グループ

    インスタンス・グループにデプロイするアーキテクチャを選択した場合、選択したシェイプの新しいコンピュート・インスタンスがテナンシに作成されます。

  • インタフェース・レジストリ

    このアーキテクチャは、インスタンス・グループ、OKEおよびファンクション・デプロイメントで使用されるソフトウェアおよび構成のアーティファクトを作成します。アーキテクチャによって、内部で使用するためのアーティファクト・レジストリ・リポジトリが作成されます。ソフトウェア・バイナリ、テキストおよびデプロイメント構成は、アーティファクト・レジストリ・リポジトリにアップロードされ、アーティファクト・レジストリ・リポジトリからダウンロードされます。

注意事項

このリファレンス・アーキテクチャをデプロイするときは、次の点を考慮してください。

  • DevOps - サポートされるデプロイメント

    DevOpsは、OKE、コンピュート・ホストおよびファンクションへのデプロイメントをサポートします。このアーキテクチャはOKEクラスタにデプロイされます。要件に基づいて他のエンドポイントにデプロイすることを検討してください。

  • Linuxサポート

    コンピュート・インスタンスへのインスタンス・グループ・デプロイメントでは、Linuxホストのみがサポートされています。

  • デプロイ済アーティファクト

    DevOpsでデプロイするアーティファクトは、OCIアーティファクト・レジストリまたはコンテナ・イメージ・レジストリ・リポジトリに存在する必要があります。

  • アプリケーションのグループ化

    ベスト・プラクティスとして、各アプリケーションとそのすべてのマイクロサービスを1つのプロジェクトにグループ化します。

デプロイ

このリファレンス・アーキテクチャのTerraformコードは、Oracle Cloud Infrastructure Resource Managerのサンプル・スタックとして使用できます。GitHubからコードをダウンロードし、特定の要件に合せてカスタマイズすることもできます。

  • Oracle Cloud Infrastructure Resource Managerのサンプル・スタックを使用してデプロイします:
    1. Oracle Cloudへのデプロイをクリックします

      まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。

    2. スタックをデプロイするリージョンを選択します。
    3. 画面上のプロンプトおよび指示に従ってスタックを作成します。
    4. スタックを作成したら、「Terraformアクション」をクリックし、「プラン」を選択します。
    5. ジョブが完了するまで待機し、プランをレビューします。

      変更を行うには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」処理を再実行します。

    6. これ以上変更が不要な場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
  • GitHubのTerraformコードを使用してデプロイします:
    1. GitHubにアクセスします。
    2. リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
    3. READMEドキュメントの手順に従います。

承認

作成者: Rahul M.R。