0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CDKでインフラを構築してみた

Posted at

概要

近年のWebアプリに必要そうなインフラをCDKを用いて構築

  • コンテナオーケストレーション
  • CI/CD
  • SPA構成のWebアプリ
    インフラ構成図.jpeg

リポジトリ
https://github.com/salt0000/portfolio/tree/main/infra
※これからもアップデート予定

環境

  • Docker
  • CDK(2.75.1)

詳細

全てCDKで構築しているわけではなく、一部マネコンを使っている
マネコンでの作業

  • ドメイン取得
  • ACMを使ってSSL/TSL証明書を取得
  • GitHubアカウントの認証連携
  • ParameterStoreでアプリの環境変数などを設定
  • EC2のPemファイル作成

CDKで行っている事

  • Route53
    • ALBのレコード追加
    • CloudFrontのレコード追加
  • CodePipeline
    • CodeStarを使ってGitHubとの連携
    • CodeBuild
      • Clientアプリのビルドとデプロイ
      • APIのDocker BuildなどECSにデプロイするための準備
    • CodePipelineのデプロイ
      • ECSのサービスとタスクを更新
  • ECS
    • クラスター、タスク定義書、サービスの作成
  • VPC
    • 自動でパブリックサブネットが二つ作成されるようにしている(ALBを作成する都合上二つ必要)
  • ALB
    • CodePipelineでCI/CDするために必要
    • EC2に新しいコンテナをデプロイするときにホストのポートが衝突してしまう
    • それを防ぐためにALBの動的ポートマッピングを使っている
    • ホスト側のランダムなポートとコンテナのポートを繋げて、ALBのTGでホストのポートを設定、更新する事でポートが衝突しない
  • S3・CloudFront
    • S3へのアクセスはCloudFrontに制限している

感想

僕が作ったようなCDKのサンプルってないなーと思って作成しました。
コードに直接AWSのパラメータを埋め込むからそれを公開はしな方がいいからサンプルリポジトリが少ないのかと、作ってる途中に思いました。
僕の場合は、ARNとか一部情報を伏せてGitHubにPushしています。(ローカルと差異があって、めっちゃやりづらい。。。)
かなり勢いで作成したので、たくさんメンテナンスが必要そう。。。
これからも随時更新していこうと思っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?