Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CICDを使用したECS Blue Greenデプロイを実施する際に必要なファイルについて

takashi
April 15, 2023
220

CICDを使用したECS Blue Greenデプロイを実施する際に必要なファイルについて

takashi

April 15, 2023
Tweet

Transcript

  1. 目次 ❏ 自己紹介 ❏ 前提 ❏ 構成図 ❏ サービスについて ❏

    CICDで必要なファイルについて ❏ CodePipelineの設定値について
  2. 自己紹介 所属 : アイレット株式会社 業務内容 : AWSインフラ構築、運用 保有資格 : AWS

    SAA、SOA、DVA、SAP、DOP、SCS、DBS 詳しくなりたいAWSサービス : AWS ECS
  3. サービスについて ❏ AWS CodeCommit ❏ プライベート Git リポジトリをホストする、安全で高度にスケーラブルなフルマネージド型ソース管理サービス ❏ AWS

    CodeBuild ❏ ソースコードをコンパイルし、テストを実行し、すぐにデプロイできるソフトウェアパッケージを生成する、フルマネージド 型の継続的インテグレーションサービス ❏ AWS CodeDeploy ❏ Amazon Elastic Compute Cloud (EC2)、Amazon Elastic Container Service (ECS)、AWS Lambda、オンプレミスサー バーなどのさまざまなコンピューティングサービスへのソフトウェアデプロイを自動化するフルマネージド型のデプロイ サービス ❏ AWS CodePipeline ❏ フルマネージドの継続的デリバリーサービスで、迅速かつ確実性のあるアプリケーションとインフラストラクチャをアッ プデートするパイプラインのリリースを自動化します
  4. CICDで必要なファイルについて ❏ buildspec.yml ❏ Codebuildでビルド実行時に実行するコマンドを記述したファイルです。 ❏ appspec.yml ❏ ECSで使用するタスク定義を定義し、 CodeDeployでデプロイ中にトラフィックを再ルーティングする

    タスク(コンテナ)名、ポートを定義します。 ❏ taskdef.json ❏ タスク定義を作成するファイルです。 ❏ imageDetail.json ❏ ECS イメージ URI を説明する JSON ファイルです。
  5. CICDで必要なファイルについて ❏ pre_buildフェーズ ❏ 最終的にimageをプッシュするECRにログインしています。 ❏ aws ecr get-login-password --region

    $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com ❏ Imageタグにビルドの実行IDを指定しています。 ❏ IMAGE_TAG=build-$(echo $CODEBUILD_BUILD_ID | awk -F":" '{print $2}') ❏ ビルド実行IDは {ビルドプロジェクト名 : ビルド実行ID} で生成されるので、: 以降のみを抽出 してImageタグに指定しています。
  6. CICDで必要なファイルについて ❏ buildフェーズ ❏ ビルド環境でImageをビルドしています。 ❏ DOCKER_BUILDKIT=1 docker build -t

    $IMAGE_REPO_NAME . ❏ DOCKER_BUILDKITはDocker Buildの拡張版です。 ❏ ビルドしたImageを参照して、ECRにプッシュするための Imageを作成しています。 ❏ docker tag $IMAGE_REPO_NAME:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_R EPO_NAME:$IMAGE_TAG
  7. CICDで必要なファイルについて ❏ post_buildフェーズ ❏ ECRにビルドしたImageをプッシュしています。 ❏ docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_R EPO_NAME:$IMAGE_TAG

    ❏ ECSにデプロイする際に使用する ImageURIを記載したImageDetail.jsonファイルを作成していま す。 ❏ printf '{"ImageURI":"%s"}' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_R EPO_NAME:$IMAGE_TAG > imageDetail.json ❏ “%s”にECRにプッシュしたImageを代入しています。 ❏ 作成したImageDetail.jsonは下記のような形で生成されます。
  8. CICDで必要なファイルについて ❏ TargetService ❏ 今回デプロイ対象は ECSになるので、AWS::ECS::Serviceを選択しています。 ❏ TaskDefinition ❏ 別途用意したtaskdef.jsonの内容を記載するため、

    "<TASK_DEFINITION>"を記載しています。 ❏ ContainerName ❏ ECSで起動されているタスク定義に記載されたタスク名と同じ必要があります。 ❏ ContainerPort ❏ ECSで起動されているタスク定義に記載されたポートと同じ必要があります。