はじめに
こんにちは。SRE2課の福島です。
最近、世界遺産検定の勉強を始めました。
9月に試験を受けるので、合格できるように頑張ります~
さて今回は、プロジェクト管理ツールであるJiraをFargate上に
デプロイする機会があったので、やったことをブログをまとめたいと思います。
構成図
簡易的ですが、構成図は、こんな感じです。
やったこと
やったことは、以下の通りです。
※事前にパブリックサブネット1つと8080への通信を許可したSGを作成しておきます。
①ECRの作成
②Jiraイメージのアップロード
③Fargateの作成
④タスク定義の作成
⑤サービスの起動
⑥Jiraのセットアップ
本当は、ALBの構築やデータを外だしできるようにEFS、RDSも構築したのですが、 それは、また別の機会にブログにまとめたいと思います。
①ECRの作成
ECRとは、Dockerのコンテナイメージを管理できるAWSサービスです。
1-1. 「リポジトリの作成」をクリック
1-2. リポジトリ名を入力し、「リポジトリの作成」をクリック
②Jiraイメージのアップロード
2-1. Jiraイメージをダウンロード
Jiraのイメージは、DockerHubに公開されているので、それを利用します。
https://hub.docker.com/r/atlassian/jira-software
実行コマンド)
docker images docker pull atlassian/jira-software docker images
実行例)
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE # # docker pull atlassian/jira-software Using default tag: latest latest: Pulling from atlassian/jira-software 7595c8c21622: Pull complete d13af8ca898f: Pull complete 70799171ddba: Pull complete b6c12202c5ef: Pull complete c54d424eaa66: Pull complete 41534844af48: Pull complete b11887945baa: Pull complete 5ceab5a7d583: Pull complete fb8dcb3732a4: Pull complete 2bc41d47dd50: Pull complete 4e0b69599428: Pull complete e933924e3192: Pull complete bf2d64196257: Pull complete 5ef4ba8329d6: Pull complete Digest: sha256:e8982070cdb097a11b35d28211beca4efc39ef75820a914928507577e60f3381 Status: Downloaded newer image for atlassian/jira-software:latest docker.io/atlassian/jira-software:latest # # docker images REPOSITORY TAG IMAGE ID CREATED SIZE atlassian/jira-software latest c6d85efa543f 5 days ago 769MB #
2-2. ECRへアクセスするための認証トークンを発行
環境に合わせて、[AWSアカウントID]を修正。
実行コマンド)
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com
実行例)
# aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded #
2-3. Jiraイメージにタグを付与
環境に合わせて、[ECRのURI]を修正。
実行コマンド)
docker tag atlassian/jira-software:latest [ECRのURI]
実行例)
# docker tag atlassian/jira-software:latest [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/jira-repository:latest #
※[ECRのURI]は、ECRの画面から取得
2-4. Jiraイメージのアップロード
環境に合わせて、[AWSアカウントID]および[リポジトリ名]を修正。
実行コマンド)
docker push [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/[リポジトリ名]:latest
実行例)
# docker push [AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/jira-repository:latest The push refers to repository [[AWSアカウントID].dkr.ecr.ap-northeast-1.amazonaws.com/jira-repository] 2dda864cc16a: Pushed 9495f6db283b: Pushed 635bf64b2e50: Pushed 95b01695292e: Pushed 964b072de0ec: Pushed 34eed33aab83: Pushed b82a50fc5030: Pushed 6fd4807a3a70: Pushed 23f36aae82ef: Pushed 60d7a9dafbc1: Pushed 8682f9a74649: Pushed d3a6da143c91: Pushed 83f4287e1f04: Pushed 7ef368776582: Pushed latest: digest: sha256:e8982070cdb097a11b35d28211beca4efc39ef75820a914928507577e60f3381 size: 3249 #
2-5. アップロードの確認
③Fargateの作成
3-1. 「クラスタの作成」をクリック。
3-2. 「ネットワーキングのみ」を指定し、「次のステップ」をクリック。
3-3. 「クラスター名」を入力し、「作成」をクリック。
3-4.作成完了。
④タスク定義の作成
タスク定義では、デプロイするコンテナイメージや コンテナに割り当てるCPU,メモリ、コンテナの環境変数の設定などができます。
4-1. 「新しいタスク定義の作成」をクリック。
4-2. 「Fargate」を選択し、「次のステップ」をクリック。
4-3. 「タスク定義名」を入力し、「タスクロール」は「なし」。
4-4.「タスク実行ロール」、「タスクメモリ」、「タスクCPU」を入力。
タスクロールとタスク実行ロールの違いって...?
そもそも、Fargateは、EC2にECSエージェントを導入することで
コンテナのデプロイを管理しています。
また、ECSエージェントは、コンテナとして、起動しています。
なので、イメージとしては、以下の感じです。
タスクロール:デプロイするコンテナ用ロール(今回は、Jiraのコンテナ用ロール)
タスク実行ロール:ECSエージェントのコンテナ用ロール
今回、Jiraのコンテナは、AWSのサービスにアクセスする必要がないため、
タスクロールを割り当てていないです。
ちなみにタスク実行ロールの項目で「新しいロールを作成」を選択すると
必要な権限を付与したロールを自動で作成してくれます。
ポリシーは以下の通りです。(ECRとロググループへのアクセス権限があります。)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
4-5.「コンテナの追加」をクリック。
4-6.「コンテナ名」、「イメージ」、「ポートマッピング」を入力し、追加をクリック。
イメージは、「2-5. アップロードの確認」の画面に表示されているURIを入力。
ポートマッピングは、8080を入力。(Jiraのデフォルトポート)
4-7. 作成をクリック。
4-8. 作成完了。
⑤サービスの起動
5-1. 作成したクラスタをクリックし、「サービス」タグの「作成」をクリック。
5-2. 色々、編集。
項目 | 値 |
---|---|
起動タイプ | Fargate |
タスク定義 | jira-task |
リビジョン | 1(latest) |
プラットフォームバージョン | LATEST |
クラスター | jira-fargate |
サービス名 | jira-service |
タスクの数 | 1 |
プラットフォームバージョンの「LATEST」は表記に要注意
2020/08/08時点では、プラットフォームバージョンを「LATEST」と
指定しても、最新である「1.4」ではなく、「1.3」になりますので、注意が必要です。
「AWS Secrets Manager」を利用する場合、「1.4」以上ではないと利用できないため、
「LATEST」ではなく、明示的に「1.4」を指定する必要があります。
さらに注意点としては、「1.4」を利用し、
ECRへVPCエンドポイント経由してアクセスする場合、
1.3以前と比べて、必要なVPCエンドポイントに以下の違いがあります。
1.3以前:com.amazonaws.region.ecr.dkr 、Amazon S3 ゲートウェイエンドポイント 1.4以降:com.amazonaws.region.ecr.dkr 、com.amazonaws.region.ecr.api、Amazon S3 ゲートウェイエンドポイント
Fargate 起動タイプおよびプラットフォームバージョン 1.3.0 以前を使用する Amazon ECS タスクでは、この機能を活用するために必要なのは com.amazonaws.region.ecr.dkr Amazon ECR VPC エンドポイントおよび Amazon S3 ゲートウェイエンドポイントのみです。
Fargate 起動タイプとプラットフォームバージョン 1.4.0 以降を使用する Amazon ECS タスクでこの機能を使用するには、com.amazonaws.region.ecr.dkr と com.amazonaws.region.ecr.api Amazon ECR VPC エンドポイントの両方、および Amazon S3 ゲートウェイエンドポイントが必要です。
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/vpc-endpoints.html
5-3. 「次のステップ」をクリック。
5-4.「クラスターVPC」、「サブネット」、「セキュリティグループ」、「パブリックIPの自動割り当て」を入力。
5-5. 「次のステップ」をクリック。
5-6.「次のステップ」をクリック。
5-7.「サービスの作成」をクリック。
5-8. 作成完了。
5-9. タスクをクリック。
5-10. パブリックIPを確認。
⑥Jiraのセットアップ
6-1. ブラウザからパブリックIP:8080へアクセス。
6-2. 「I'll set it up myself」をクリック。
6-3. 「Built In」をクリック。 データベースのセットアップは少し時間がかかります。
6-4.「Next」をクリック。
6-5.「generate a Jira traial license」をクリック。
6-6.「Jira Software(Server)」を選択し、「ライセンスの生成」をクリック。
6-7.元の画面に戻るので、「Next」をクリック。
6-8.必要な情報を入力し、「Next」をクリック。
6-9. Finishi!!
6-10.日本語を選択し、「続行」をクリック。
6-11.アバターを選択し、「次へ」をクリック。
6-12.ようこそ!!
最後に
これでセットアップ完了です。 後は、Jiraを好きなように使いましょう!!
またお会いしましょう~~