6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS FargateでCDK Typescriptを使ってCodeDeplyを作成する。

Posted at

AWS FargateでCDK Typescriptを使ってCodeDeplyを作成する。

CDKでFargateのCodeDeployを作成したので、記事を書きます。
本番環境にデプロイするときは、Codedeploy使ったほうがいいですよね。
またCDKで記述しておけば、後々らくです。

手作業に対するCodeDeployのメリット

  • 公開する前に、同じ環境で、動作確認ができる。
  • 一部の人に最初に公開し、問題ないか確認できる。
  • すぐに切り戻しができる。
  • ある程度、好きなタイミングで公開できる。

前置き

  • すでにCDKでFargateを作成していること。今回の記事はCodeDeploy部分の解説です。
  • CodeDeployの動きなどは自分で調べてください。
  • サービスの命名はきちんと適切なものに変更してください。

サービスの修正


    const loadBalancedFargateService = new ecsPatterns.ApplicationLoadBalancedFargateService(this,srvName, {

......
      deploymentController: {
        type: ecs.DeploymentControllerType.CODE_DEPLOY
      }
    });

クラスタのサービスにdeploymentControllerのCODE_DEPLOYを指定します。
この修正は、サービスが再作成になるので、注意が必要です。

ターゲットグループの追加

    const targetgroup2 = new elbv2.ApplicationTargetGroup(this, 'srv-target-green', {
      targetType: elbv2.TargetType.IP,
      targets: [fargateService],
      port: 80,
      targetGroupName: 'tgt-green',
      healthCheck: { path: '/health' },
      vpc: vpc,
    })

今まであるターゲットグループと同じように作成します。

ロードバランサのlistener作成

    const listener2 = loadBalancedFargateService.loadBalancer.addListener('http-listener', {
      protocol: ApplicationProtocol.HTTP,
      port: 80,
      defaultTargetGroups:[targetgroup2],
    });

ターゲットグループと同じようにlistenerももう一つ作成します。以前のポートとは違うポートを指定します。
今回はHTTPSに対してHTTPを作成しました。テスト接続用のlistenerになります。
前で作成したtargetgroupを指定します。

ApplicationとDeploymentGroupを作成

    // create code deploy ecsApplication
    const ecsApplication = new codedeploy.EcsApplication(this, 'ecs-application', {
      applicationName: 'application',
    });
    // create code deploy deploymentGroup
    const deploymentGroup = new codedeploy.EcsDeploymentGroup(this, 'deployment-group', {
      application: ecsApplication,
      deploymentGroupName: 'deplgp',
      deploymentConfig: codedeploy.EcsDeploymentConfig.ALL_AT_ONCE,
      service: fargateService,
      blueGreenDeploymentConfig: {
        blueTargetGroup: loadBalancedFargateService.targetGroup,
        greenTargetGroup: targetgroup2,
        listener: loadBalancedFargateService.listener,
        testListener: listener2,
      },
    });

EcsApplicationの作成は名前を適当に指定します。
EcsDeploymentGroupの作成は、前で作成した諸々を指定します。

最後に

  • あとはタスクを更新し、更新したものからデプロイを作成すればデプロイできるはずです。
  • ポイントポイントで書いたので、継接ぎですが、動かなかったら、すいません。
  • デプロイ自体の設定はデフォルトを使用しているので、時間等は自分で指定してください。
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?