4
1

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.

CodeDeploy(Blue/Green)でinstallが50%から終わらない

Last updated at Posted at 2022-02-01

はじめに

CI/CDの勉強をしている中でCodeDeployのBlue/Greenにチャレンジしました。
その中で、デプロイが終わらない事態が発生したのでまとめたいと思います。

ネットやTwitterにも同じ現象で悩んでいる人がいますが、解決策というような解決策の記事がまとめられていなかったので誰かの助けになればと思います。

問題

bandicam 2022-02-01 03-02-02-604.jpg

CodeDeployでBlue/Greenデプロイをすると上の状態で止まる。
本来であれば数分で終わるらしいので何かがおかしいと思い調べました。

ネットの記事にはtaskdef.jsonが間違っていたというのもありますが、今回はそれに該当しなさそうでした。
また、検証もログが出力されないので難しいです。

解決方法

この問題は以下の2つの原因があるかと思われます。

1. コンテナに問題がある

コンテナが起動できない場合はそもそもデプロイに成功しないため待ち状態になってしまいます。

そこで、利用するイメージが正しく動くかをFargateのローリングアップなどで実際に起動してアクセスできるか確認してみてください。

また、Blue/Greenデプロイしている状態でもうまく立ち上がっていれば、2つのポート(80、8080)でコンテナが起動しているはずですので、プライベートIPからアクセスして確認することができます。

bc596418845e-20220201.png

もし、ここでアクセスできない状態ならローリングアップなどで起動してCloudWatchのログを見ながら修正していく必要があります。

taskdef.jsonで新しいタスクができていると思うので、それをローリングデプロイして確認します。私はそれでECRのURLが違うため起動できていないことに気づきました。

2. ロードバランサーが正しくアクセスできていない

以下の記事を見つけました。
AWS CodePipeline "An AppSpec file is required, but could not be found in the revision"

この記事によるとロードバランサーのHealth Checkが関係しているようでした。

そこでロードバランサーのターゲットグループのヘルスチェックを確認すると

Health check path: /

となっていました。しかし、私が作成したRailsアプリは/test以外は404になるように設定されていました。
ヘルスチェックをしたときに200 OKが返ってこないのでロードバランサーがヘルスチェックで止まってしまっていたのが原因でした。

また、途中で止まって失敗したときにロールバックを行わなかったことで余計なターゲットが追加されていたのも原因だったかもしれません。ヘルスチェックが正しい場合は、ロードバランサー、ターゲットグループ、ECSサービスのタスクを再度1から作成するのもよいかもしれないです。

追加

you permission to perform operations in the following aws service: amazon elasticloadbalancingv2. contact your aws administrator if you need help. if you are an aws administrator, you can grant permissions to your users or groups by creating iam policies.

というエラーが出て、allowtesttraffic で失敗するというのが起きました。CodeDeployのロールにElasticLoadBalancingFullAccessを追加したら成功しました。

おわりに

CodeDeployでRails(Docker)をBlue/Greenデプロイする (CI/CDまでの道⑨)
こちらの記事でCI/CDの方法については解説していますのであわせて参考にしてください。

やはりできる人が少ない分野になってくるとネットに情報がなくて原因を理解するのに時間がかかりますね。

参考

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?