Skip to content

Latest commit

 

History

History
158 lines (93 loc) · 5.63 KB

DEPLOYMENT.md

File metadata and controls

158 lines (93 loc) · 5.63 KB

※GUIでElastic Beanstalkの設定をいじらないでください。デプロイで戻ります。

Elastic Beanstalkの設定はコードで管理されています。

インスタンスタイプやオートスケールの設定が違うため、stagingとproductionで一部ファイルが別です。それ以外の共通の設定は同じファイルを使っているので気を付けて下さい。

共通: deployments/.ebextensions

staging: deployments/staging production: deployments/production

デプロイの際に上記の設定ファイルを元にデプロイが実行されます。コードでの設定がある場合、インフラも含め反映されます。

急ぎで、GUIで変更することはあると思います。しかし、GUIだけ変更してソースコードを変更しないと、デプロイの際に戻って事故の原因になります。なので、ソースコードに反映してください。

GUIの設定とコードの書き方は、公式 を参考にしてください。

環境変数は環境別に設定する値だけ、deployments/production/00_env_options.config or deployments/staging/00_env_options.config に記載して下さい。

秘密鍵などのSSM経由で参照される値は、デプロイ時に動的に展開されます。

{{resolve:ssm:ssmのパラメータの名前:バージョン}}

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/dynamic-references.html

GitHubからデプロイ

ワークフローの設定:.github/workflows/deploy.yml デプロイの基本設定: deployments/

  1. ECRにログイン
  2. Dockerコンテナをbuild
  3. short commit hashを含む環境ごとのタグで、ECRにDockerイメージをpush
  4. elastic beanstalkに該当のイメージを指定してデプロイ

Dockerイメージのタグ例: staging-dfasfste

[デプロイされる環境名]-[commit-hash]

GitHubに必要な環境変数

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_ECR_REPO_NAME

デプロイ手順

production

切り戻しを早くするため、masterマージの際、Dockerイメージは毎回buildします。

パイプラインが通ったのを確認後、Git上でデプロイしたいコミットに、v○○とタグを打ちます。 タグはvから始まる必要があります。すぐにeb deployが実行されます。

例: v1.0.0

staging

developブランチにpushすると自動でデプロイされます。

切り戻し

production

普通にデプロイするのと同様に戻したい先commitに対してタグを打ちます。 バグの場合、バグが発生したcommitの1つ前のcommitにたいしてタグを打ちます。

コンテナイメージはbuild済みなので、すぐにeb deployが実行されます。

staging

revetしてdevelopブランチにpushしてください。

CfJ Decidim AWS への Install(Beanstalk 編)

1. Install AWS tools and setup user

こちらの手順書 の手順2を実施

2. Get Decidim source code

git clone https://github.com/codeforjapan/decidim-cfj.git

3. Bundle install

Ruby 環境はインストール済とする(ruby 2.7.4p191)

cd decidim-cfj
bundle install

4. Elastic Beanstalk に 環境をセットアップする

  1. docker-compose.yml{RepositoryName}をデプロイしたいECRのイメージパスに修正。
  2. docker-compose.yml{EBEnvironment}をデプロイする環境名に修正。
  3. 作成したい環境の設定をコピー。

deployments/.elasticbeanstalk/config.ymlに設定があるので、基本的に何も聞かれないはずです。

cd deployments

# production
cp production/*.config .ebextensions/
# staging(台数とかログの保持期間が小さい)
cp staging/*.config .ebextensions/

eb create production --process

最後エラーで終わるがOK

4. Secret Key Base を設定

eb setenv SECRET_KEY_BASE=$(bin/rails secret)

5. Postgres データベースを作成する

必要な設定を行い、DBを立ち上げる

その後eb deployを実行

6. CNAME 設定とSSL設定

Elastic Beanstalk のインスタンスをAレコードとして割り当てる

ロードバランサの設定をする(手順6.2 Configure SSL

7. 最初のユーザを作る

6.3 Create the first admin user に従う(root で)

8. SES の設定をする

6.4 Setup email

9. Redis の設定をする

6.5 Configure the job system with Sidekiq and Redis

sidekiqの設定をする必要はありません。dockerでデプロイされています。

stagingはcloud formationで作成しています。 ./INFRA.md#Redis

10. S3 の設定をする

6.6 File storage