LoginSignup
2
1

More than 1 year has passed since last update.

AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~Fargate+ECSの構築~

Last updated at Posted at 2023-04-03

前記事

AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~ECRへのビルド~
image.png

今回やること

Fargate+ECSの構築!!
Brue/Greenデプロイメント環境の構築!!
image.png

分けるのも難しかったのでドカッと進みます。
大きく分けると以下2点ですかね、

  • Brue/Greenデプロイメント用ALBの構築
  • ECS Clusterの作成

頑張っていきましょう!!

Brue/Greenデプロイメント用ALBの作成

ECSでBrue/Greenデプロイメントを行うためにALBを追加します。
↓ここの部分ですね。
image.png

ALBの作成

Blue/Green用ターゲットグループ作成

「EC2」→「ターゲットグループ」から作成します。
ターゲットグループへの振り分けルールを設定することでBrue/Greenデプロイメント環境を構築できます。
19.PNG

上記画面を参考にBrue、Green両方のターゲットグループを作成します。
20.PNG

ALBを作成

「EC2」→「ロードバランサー」から作成します。

ここでハプニング発生。泣
ALBってAZ2つ以上必要なんですね。今回は検証なのでダミーAZ(ap-northeast-3)を作成しました。
本当はちゃんと両方にコンテナ配置して分けないといけないようですが、今回は勉強のみのためこのままやってしまいます。

ALBを選択し、以下画面のように設定しました。
セキュリティグループには第2回で作成したセキュリティグループを設定、
ターゲットグループはそれぞれBrue:80, Green:10080のポート番号を設定しています。
22.PNG

Blue/Greenデプロイメント用のIAMロール作成

ECSとALBが連携してBrue/Greenデプロイメントを行えるようにIAMロールで許可していきます。
以下の権限でロールを作成します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ecs:DescribeServices",
                "ecs:CreateTaskSet",
                "ecs:UpdateServicePrimaryTaskSet",
                "ecs:DeleteTaskSet",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeListeners",
                "elasticloadbalancing:ModifyListener",
                "elasticloadbalancing:DescribeRules",
                "elasticloadbalancing:ModifyRule",
                "lambda:InvokeFunction",
                "cloudwatch:DescribeAlarms",
                "sns:Publish",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "iam:PassRole"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "iam:PassedToService": [
                        "ecs-tasks.amazonaws.com"
                    ]
                }
            }
        }
    ]
}

Fargate+ECSの構築

本命のFargateくんとECSちゃんを構築していきます!!

ECSタスクの定義

「ECS」→「タスク」から定義していきます。
コンテナ詳細の名前、URIは前回作成したECRの名前とURIをコピーして貼り付けます。
25.PNG

アプリケーション環境はもちろん「Fargate」
スペックは各々いい感じに設定すれば良いです。
このタイミングで「ログ設定」にチェックを入れておくと、Cloud Watchにログがたまるようになります。
26.PNG

ECS Clusterの作成

次にECS Clusterを作成します。
「ECS」→「クラスター」から作成します。
「ネットワーキングのみ」で作成し、サブネットはコンテナを配置するPrivate subnetを選択します。
(本来ここで2つのAZにまたがってコンテナ実行環境を整える必要があります。。)
27.PNG

ECSサービスの作成

先ほど作成したタスク定義を「ファミリー」に設定します。
必要なタスクは可用性を考慮し「2」と設定しています。
28.PNG

ここで第2ハプニング。新コンソールではそのままBrue/Greenデプロイメントの設定が出来なさそうです。泣
そのため旧コンソールに切り替えて設定します。

Brue/Greenデプロイメントをするための設定です。
ロールには先ほど作成したIAMロールを設定します。
29.PNG

最終設定は以下画像の通りです。
セキュリティグループにはバックエンド用に作成したセキュリティグループを設定。
ポート80にBlue側のターゲットグループ、ポート10080側にGreen側のターゲットグループを設定しています。
また、コンテナ実行環境はPrivate subnetに構築しているため、IPの自動割当はDISABLEにしています。
31.PNG

以下画面のように2つのタスクが「RUNNING」状態になれば完了です。
32.PNG

Brue/Greenデプロイメント用CodeDeployの確認

ECSサービスを作成後、Brue/Greenデプロイメント用にCodeDeployが自動で作成されます。
キャプチャ.PNG

コンテナのデプロイ確認

今回は最初にバックエンド側からデプロイしました。
バックエンドアプリの疎通確認にはCloud9から内部のALBへ通信を行うことで確認できます。
「EC2」→「ロードバランサ―」から内部ALBを選択し、ALBのDNSを確認して送信します。

$ curl http://{ALBのDNS名}:80

このルートですね。
image.png

まとめ

後はほぼ同様の手順でフロントエンド側も作成したら完了です!!
フロントエンドの疎通確認はALBのDNSをブラウザに打ち込んだら良いと思います!!

後少しですね、、笑笑
最後はDB、Secret Managerを設定して完了です。
あと少し頑張ります。

次↓
AWS Fargate, ECSを用いたコンテナ運用設計、構築をしてみた。~DB構築とラスト~

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