ecs-deployでECSにアプリをCIからデプロイする〜その②〜

こんにちわ、まつしん(@matsushin11)です。

前回の記事では、サンプル用のGoアプリの実装とDocker化まで行いました。

ecs-deployでECSにアプリをCIからデプロイする〜その①〜

2019年5月10日

この記事では前回の続きとしてECS環境を構築してアプリが動くようになるところまで行いたいと思います。

本記事でやること

ECR(Amazon Elastic Container Registry)を利用してECS(Amazon Elastic Container Service)環境の構築を行います。

次の記事で最後の仕上げとしてCircleCIからECSにデプロイするようにしていきます。

ECRにリポジトリ作成

ECRとはDockerのイメージを管理することができるサービスになります。

それでは早速ECR上にリポジトリを作成していきましょう。

AWSマネジメントコンソールにログインしてサービスでECRを選択。リージョンは東京(ap-northeast-1)を選択しておきましょう。

ECRのトップ画面にアクセスできたらリポジトリを作成します。今回はgo-ecs-deploy-appとしました。

Amazon ECR

リポジトリが作成できたらDockerのイメージをプッシュしていきます。

ECRに初回プッシュ

以下は、すべてリポジトリの画面にて「プッシュコマンドの表示」した際に表示されるコマンド通りです。

Amazon ECR

まずはECRにログインします。

次にプッシュしたいDockerイメージを作成します。

ECRにプッシュするために作成したDockerイメージにタグ付けをします。

最後に作成したECRリポジトリにイメージをプッシュします。

ECRの画面側でプッシュされたことを確認できればOK!

Amazon ECR

ECSの起動

次にECSの設定を行います。

タスククラスターサービスの概念や詳細を知りたければこちらがとても参考になるかと思います。

タスクの作成

タスクの登録ではどのDockerイメージを使うのかやメモリやCPUなどのハードウェア要件などを定義できます。

それではタスクの作成をするためにAWSマネジメントコンソールのサービスでECSを選択してECSの画面へ。

次にサイドメニューのタスク定義を選択してから新しいタスク定義の作成へ。

起動タイプの互換性は今回はEC2を選択。(FARGATEの利用方法はただいま学習中)

Amazon ECS

タスク定義名を入力。

Amazon ECS

コンテナの追加から、コンテナ名イメージ(ECRのImage URI)メモリ制限ポートマッピング(8080)を入力していきます。

Amazon ECS

コンテナが追加されたらタスクの作成を実行してください。

クラスターの作成

次にクラスターの作成です。

クラスターではタスクを実行するためのEC2のインスタンスやネットワークの環境の定義を行います。

まずはテンプレートとしてEC2 Linux + ネットワーキングを選択。

Amazon ECS

次にクラスター名EC2インスタンスタイプを選択します。

Amazon ECS

次に、利用できるVPCサブネットを1つ選択してポート範囲を8080としておきます。

Amazon ECS

そのまま進んで作成へ。

Amazon ECS

しばらく待って以上のようにすべて緑になればクラスタの作成は完了です。

サービスの作成

次にサービスを作成します。

サービスでは利用するタスクの定義やネットワーク構成、Auto Scalingの定義などができます。

それではまずはクラスターの画面からサービス作成画面へ。

Amazon ECS

起動タイプはEC2を選択、サービス名を入力して、サービスタイプDAEMONを選択します。

Amazon ECS

そのまま進んでいき作成実行へ。

Amazon ECS

しばらく待って以上のようにすべて緑になればサービスの作成は完了です。

動作確認

最後に動作確認を行います。

まずはサービスの画面からタスクのステータスがRUNNINGとなっていることを確認します。サービス作成後はRUNNINGとなるのに少し時間がかかります。

Amazon ECS

次に稼働しているEC2のエンドポイントを確認します。

EC2のダッシュボードから稼働しているインスタンスのパブリックDNSを確認。

インスタンス EC2 Management Console

エンドポイントを用いてコマンドを実行して下記のようになればOK。

これでECSを利用してアプリが動くところまではできました!

記事ではここまでで次が最後です。いよいよ次回CircleCIからecs-deployを利用してECSにデプロイできるようにしていきたいと思います!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です