Oracle Cloud Infrastructure DevOpsとOCIインスタンスを使用したCI/CDパイプラインの構築
アーキテクチャ
このリファレンス・アーキテクチャは、最新のアプリケーションを構築してOCIコンピュート・インスタンスにデプロイする方法を示しています。このデモンストレーションでは、Graal Enterprise/Micronaut対応のJavaアプリケーションに基づくアプリケーションを使用します。アプリケーションはOCIロード・バランサを介して公開され、アクティブなデプロイメント中のトラフィックのスムーズなシフトが保証されます。
次のダイアグラムにこのアーキテクチャを示します。
図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アドレスと、プロビジョニング済帯域幅を持つロード・バランサを提供します。
推奨事項
- コンピュート・シェイプ
このアーキテクチャでは、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のサンプル・スタックを使用してデプロイします:
をクリックします
まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
- スタックをデプロイするリージョンを選択します。
- 画面上のプロンプトおよび指示に従ってスタックを作成します。
- スタックを作成したら、「Terraformアクション」をクリックし、「プラン」を選択します。
- ジョブが完了するまで待機し、プランをレビューします。
変更を行うには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」処理を再実行します。
- これ以上変更が不要な場合は、「スタックの詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
- GitHubのTerraformコードを使用してデプロイします:
- GitHubにアクセスします。
- リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
README
ドキュメントの手順に従います。