AWS 上の CI/CD
CI/CD は、パイプラインとして考えることができます。パイプラインでは、一方の端で新しいコードが引き渡され、一連のステージ (ソース、ビルド、ステージング、本番) でテストされた後、本番環境で使用できるコードとして公開されます。
![AWS コードパイプラインの例を示す図](images/cicd_5g2.png)
CICD パイプラインの概要
CI/CD パイプラインの各ステージは、デリバリープロセスの論理ユニットとして構造化されています。各ステージは、コードの特定の側面を精査するゲートとして機能します。コードがパイプラインを進むにつれて、より多くの側面が検証され続けるため、後のステージではコードの品質が高くなると想定されます。早い段階で問題が明らかになったコードについては、パイプラインでの進行が停止します。テストの結果は即座にチームに送信され、ソフトウェアがステージを正常に通過しなければ、それ以降のビルドやリリースはすべて停止されます。
AWS は、ソフトウェア開発とリリースサイクルを加速する CI/CD デベロッパーツール一式を提供しています。AWS CodePipeline
コードパイプラインは他のサービスと統合できます。例えば、Amazon Simple Storage Service
-
AWS CodeBuild
によるコードのコンパイル、ビルド、テスト -
クラウドに対する、コンテナベースのアプリケーションの継続的なデリバリー
-
ネットワークサービスまたは特定のクラウドネイティブネットワーク機能に必要なアーティファクト (記述子、コンテナイメージなど) のデプロイ前の検証
-
コンテナ化ネットワーク機能/仮想ネットワーク機能 (CNF/VNF) の機能、統合、およびパフォーマンステスト (ベースラインテストと回帰テストを含む)
-
信頼性および災害対策 (DR) テスト
![AWS CICD パイプラインコンポーネントを示す図](images/cicd_5g3.png)
AWS CICD パイプラインコンポーネント
AWS では、次の AWS デベロッパーツールを使用して CI/CD パイプラインをセットアップできます。
CI/CD パイプラインの作成は、AWS CDK
CI/CD プロセスには、以下のステップが含まれます。
-
ネットワークのセットアップ – AWS CDK および AWS CloudFormation により、ネットワーク前提条件の作成が開始されます:
-
インフラストラクチャのデプロイ – AWS CDK および AWS CloudFormation により、次のリソーススタックの作成が開始されます:
-
クラウドネットワーク機能 (CNF) のデプロイ – このステージでは、Kubectl
および Helm チャートツールを使用して CNF が EKS クラスターにデプロイされます。このステージでは、CNF の効率的な動作に必要な特定のアプリケーションやツール (Prometheus や Fluentd など) もデプロイされます。CNF は、Lambda 関数または AWS CodeBuild を使用してデプロイできます。 -
継続的な更新とデプロイ — コンテナ/設定への変更をデプロイしてアップグレードを行うために、反復的に実行される一連のステップです。CNF のデプロイの場合と同様、AWS CodeCommit
、Amazon Elastic Container Registry (Amazon ECR)、またはサードパーティ製ソースシステム (GitLab Webhooks など) からのトリガーにより、AWS のサービスを使用して継続的な更新とデプロイを自動化できます。
![AWS の CICD パイプラインフローを示す図。](images/cicd_5g4.png)
AWS の CICD パイプラインフローの図
CI/CD パイプラインは、ソフトウェアのリリースに必要なステップをモデル化、視覚化、自動化する継続的デリバリーサービスを利用して、AWS CodePipeline