Fargate上にJiraをデプロイしてみた

記事タイトルとURLをコピーする

はじめに

こんにちは。SRE2課の福島です。
最近、世界遺産検定の勉強を始めました。
9月に試験を受けるので、合格できるように頑張ります~

さて今回は、プロジェクト管理ツールであるJiraをFargate上に
デプロイする機会があったので、やったことをブログをまとめたいと思います。

構成図

簡易的ですが、構成図は、こんな感じです。

f:id:swx-fukushima:20200808012841p:plain

やったこと

やったことは、以下の通りです。
※事前にパブリックサブネット1つと8080への通信を許可したSGを作成しておきます。

①ECRの作成
②Jiraイメージのアップロード
③Fargateの作成
④タスク定義の作成
⑤サービスの起動
⑥Jiraのセットアップ

本当は、ALBの構築やデータを外だしできるようにEFS、RDSも構築したのですが、 それは、また別の機会にブログにまとめたいと思います。

①ECRの作成

ECRとは、Dockerのコンテナイメージを管理できるAWSサービスです。

1-1. 「リポジトリの作成」をクリック
f:id:swx-fukushima:20200807225800p:plain

1-2. リポジトリ名を入力し、「リポジトリの作成」をクリック
f:id:swx-fukushima:20200808014728p:plain

②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の画面から取得 f:id:swx-fukushima:20200807232213p:plain

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. アップロードの確認 f:id:swx-fukushima:20200807235109p:plain

③Fargateの作成

3-1. 「クラスタの作成」をクリック。 f:id:swx-fukushima:20200807235200p:plain

3-2. 「ネットワーキングのみ」を指定し、「次のステップ」をクリック。 f:id:swx-fukushima:20200807235252p:plain

3-3. 「クラスター名」を入力し、「作成」をクリック。 f:id:swx-fukushima:20200807235408p:plain

3-4.作成完了。 f:id:swx-fukushima:20200807235514p:plain

④タスク定義の作成

タスク定義では、デプロイするコンテナイメージや コンテナに割り当てるCPU,メモリ、コンテナの環境変数の設定などができます。

4-1. 「新しいタスク定義の作成」をクリック。 f:id:swx-fukushima:20200807235601p:plain

4-2. 「Fargate」を選択し、「次のステップ」をクリック。 f:id:swx-fukushima:20200807235648p:plain

4-3. 「タスク定義名」を入力し、「タスクロール」は「なし」。 f:id:swx-fukushima:20200807235732p:plain

4-4.「タスク実行ロール」、「タスクメモリ」、「タスクCPU」を入力。 f:id:swx-fukushima:20200807235852p:plain

タスクロールとタスク実行ロールの違いって...?

そもそも、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.「コンテナの追加」をクリック。 f:id:swx-fukushima:20200808000124p:plain

4-6.「コンテナ名」、「イメージ」、「ポートマッピング」を入力し、追加をクリック。
イメージは、「2-5. アップロードの確認」の画面に表示されているURIを入力。
ポートマッピングは、8080を入力。(Jiraのデフォルトポート)
f:id:swx-fukushima:20200808014918p:plain

4-7. 作成をクリック。 f:id:swx-fukushima:20200808001935p:plain

4-8. 作成完了。 f:id:swx-fukushima:20200808002056p:plain

⑤サービスの起動

5-1. 作成したクラスタをクリックし、「サービス」タグの「作成」をクリック。 f:id:swx-fukushima:20200808002726p:plain

5-2. 色々、編集。

項目
起動タイプ Fargate
タスク定義 jira-task
リビジョン 1(latest)
プラットフォームバージョン LATEST
クラスター jira-fargate
サービス名 jira-service
タスクの数 1

f:id:swx-fukushima:20200808002916p:plain

プラットフォームバージョンの「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. 「次のステップ」をクリック。 f:id:swx-fukushima:20200808004245p:plain

5-4.「クラスターVPC」、「サブネット」、「セキュリティグループ」、「パブリックIPの自動割り当て」を入力。 f:id:swx-fukushima:20200808004854p:plain

5-5. 「次のステップ」をクリック。 f:id:swx-fukushima:20200808005040p:plain

5-6.「次のステップ」をクリック。 f:id:swx-fukushima:20200808005118p:plain

5-7.「サービスの作成」をクリック。 f:id:swx-fukushima:20200808015044p:plain

5-8. 作成完了。 f:id:swx-fukushima:20200808005238p:plain

5-9. タスクをクリック。 f:id:swx-fukushima:20200808005448p:plain

5-10. パブリックIPを確認。 f:id:swx-fukushima:20200808015203p:plain

⑥Jiraのセットアップ

6-1. ブラウザからパブリックIP:8080へアクセス。 f:id:swx-fukushima:20200808005727p:plain

6-2. 「I'll set it up myself」をクリック。 f:id:swx-fukushima:20200808005926p:plain

6-3. 「Built In」をクリック。 f:id:swx-fukushima:20200808010014p:plain  データベースのセットアップは少し時間がかかります。

6-4.「Next」をクリック。 f:id:swx-fukushima:20200808010343p:plain

6-5.「generate a Jira traial license」をクリック。 f:id:swx-fukushima:20200808010427p:plain

6-6.「Jira Software(Server)」を選択し、「ライセンスの生成」をクリック。 f:id:swx-fukushima:20200808010647p:plain

6-7.元の画面に戻るので、「Next」をクリック。 f:id:swx-fukushima:20200808010805p:plain

6-8.必要な情報を入力し、「Next」をクリック。 f:id:swx-fukushima:20200808011216p:plain

6-9. Finishi!! f:id:swx-fukushima:20200808011307p:plain

6-10.日本語を選択し、「続行」をクリック。 f:id:swx-fukushima:20200808011404p:plain

6-11.アバターを選択し、「次へ」をクリック。 f:id:swx-fukushima:20200808011505p:plain

6-12.ようこそ!! f:id:swx-fukushima:20200808011605p:plain

最後に

これでセットアップ完了です。 後は、Jiraを好きなように使いましょう!!

またお会いしましょう~~

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。