Slide 1

Slide 1 text

Terraform で作る Amazon ECS の CI/CD

Slide 2

Slide 2 text

自己紹介 名前 / 檜山 準(ひやんが / hiyanger) 職種 / AWS エンジニア 所属 / クラウド系 SIer 出身 / 栃木県 宇都宮市 趣味 / ギター 🎸 @hiyanger

Slide 3

Slide 3 text

自己紹介 出身 / 宇都宮  錦小学校  陽北中学校  宇都宮北高

Slide 4

Slide 4 text

自己紹介 名前 / 檜山 準(ひやんが / hiyanger) 職種 / AWS エンジニア 所属 / クラウド系 SIer 出身 / 栃木県 宇都宮市 趣味 / ギター 🎸 @hiyanger

Slide 5

Slide 5 text

自己紹介 AWS でやってきたこと 現 SIer には 2022/12 入社 そこから AWS をさわり始める

Slide 6

Slide 6 text

自己紹介 本日は改めて ご参加ありがとうございます! うーたんさんとの初回は東京の LT会、めぐろ LT 会にて。 その後、企画からお誘いいただ きました🙏

Slide 7

Slide 7 text

Terraform で作る Amazon ECS の CI/CD

Slide 8

Slide 8 text

はじめに ※補足 各用語の概要 Terraform コードでインフラが作れる IaC のひとつ。コードはインフラエ ンジニアにも優しい。 ECS AWS で使われるコンテナの代 表格。オーケストレーション的 なこともできちゃう。 CI/CD コードの変更からビルド、テス ト、デプロイまで自動化。

Slide 9

Slide 9 text

もくじ 1. どのような CI/CD パイプラインを作るかの検討 2. 実際に CI/CD パイプラインを構築

Slide 10

Slide 10 text

1.どのような CI/CD パイプライン を 作るかの検討

Slide 11

Slide 11 text

どのような CI/CD パイプラインを作るかの検討 もくじ  1. GitHub Actions のみ  2. AWS Code シリーズ のみ  3. GitHub Actions + AWS Code シリーズ

Slide 12

Slide 12 text

どのような CI/CD パイプラインを作るかの検討 1. GitHub Actions のみ メリット .yml 1つで完結する デメリット ・AWS との複数の API 連携で処理が増える ・Blue/Green が できなさそう

Slide 13

Slide 13 text

どのような CI/CD パイプラインを作るかの検討 2. AWS Codeシリーズ のみ メリット ・他サービスと 連携しやすいし柔軟 ・Blue/Green、ロール バックも可能 デメリット IAM ロールの管理が 増える

Slide 14

Slide 14 text

どのような CI/CD パイプラインを作るかの検討 3. GitHub Actions + AWS Codeシリーズ メリット ・単独で使う場合の 煩雑性を解消できる ・アプリとインフラの境 界を明確にできる💡 デメリット 両方の管理が必要

Slide 15

Slide 15 text

どのような CI/CD パイプラインを作るかの検討 アプリとインフラの境界を明確化(例) アプリは GitHub Actions!インフラは Code シリーズ! appspec.yml migrations.sql dockerfile 等 pipeline.tf

Slide 16

Slide 16 text

2. 実際に CI/CD パイプラインを 構築

Slide 17

Slide 17 text

実際に CI/CD パイプラインを構築 構成図 💡ポイント💡 ・アプリとインフラが いる ・GHA と Code シリーズ が混在

Slide 18

Slide 18 text

実際に CI/CD パイプラインを構築 構築のながれ  1. GitHub Actions  2. 基本リソースの作成  3. AWS Code シリーズ

Slide 19

Slide 19 text

実際に CI/CD パイプラインを構築 1. GitHub Actions ・dockerfile から  docker image をビルド ・docker image を ECR に push  (💡OIDC 接続 / AWS クレデンシャル配置不要) ・migrations.sql を S3 へ配置 OIDC

Slide 20

Slide 20 text

はじめに 1. GitHub Actions / Terraform(IAMロール) OIDC で GitHub からの アクセスを許可💡

Slide 21

Slide 21 text

実際に CI/CD パイプラインを構築 2.基本リソースの作成 ・ECS ・VPC ・RDS ・ALB ・S3 VPC VPC

Slide 22

Slide 22 text

はじめに 2.基本リソースの作成 / Terraform(ECS) deployment_conrroller は CODE_DEPLOY💡

Slide 23

Slide 23 text

実際に CI/CD パイプラインを構築 3. AWS Code シリーズ ・CodePipeline ・CodeBuild  💡RDS が プライベートサブネットに  あると VPC への配置と NAT GW が必要 ・CodeDeploy  💡ログがないのでエラーがでるとつらい

Slide 24

Slide 24 text

実際に CI/CD パイプラインを構築 3. AWS Codeシリーズ / Terraform(CodeDeploy) ロールバックや、 Blue/Green はここで設定💡

Slide 25

Slide 25 text

実際に CI/CD パイプラインを構築 パイプラインを流してみる ECR へプッシュ DB マイグレーション ECS デプロイ ECR からトリガー

Slide 26

Slide 26 text

参考 ・より詳細な自分の Qiita 記事(GHA やTerraformのコードはこちらから) 【AWS】ECS CI/CD の作り方(GitHub Actions / Code シリーズ / Terraform) https://qiita.com/hiyanger/items/05d9203048d09da28288 ・ECS用のCDパイプラインに対する考察 https://zenn.dev/reireias/articles/8e987af2762eaa#3.-image-build%E3%81%AE%E3%81% BFgithub-actions%E3%81%A7%E3%82%84%E3%82%8B ・AWSとGitHubを用いたパターン別CI/CD構成解説 https://speakerdeck.com/tsukuboshi/cdgou-cheng-jie-shuo?slide=29 ・GitHub Actions から ECR に Docker イメージを push する https://zenn.dev/kou_pg_0131/articles/gh-actions-ecr-push-image#1.-github-actions-%E 7%94%A8%E3%81%AE-id-%E3%83%97%E3%83%AD%E3%83%90%E3%82%A4%E3%83%80 %E3%81%A8-iam-%E3%83%AD%E3%83%BC%E3%83%AB%E3%82%92%E4%BD%9C%E6%88 %90%E3%81%99%E3%82%8B

Slide 27

Slide 27 text

以上です。 ありがとうございました! 今後とも「栃木ゆるIT勉強会」を よろしくおねがいします!