インフラ - takaaki12353491/tecpark GitHub Wiki
インフラについて
- Terraformを使う
- ラッパーツールとしてTerragruntを使う
- GitHub ActionsでCI/CDを行う
クラウド
主にAWSを使う
選定
AWS
- web系においてシェアが1番高く使い慣れている
GCP
- 何もわからない
Cloudflare
- 何もわからない
Tips
IAM
- IAMユーザーは作成せずにSSOを使うことでアクセスキー流出のリスクを下げる
ECS
- private subnetに配置することで外部からの不正アクセスのリスクを下げる
RDS
- private subnetに配置することで外部からの不正アクセスのリスクを下げる
- Secrets Managerを使ってパスワード管理を行う。ローテートもできれば行う
- ワンクリック接続をセットアップすることで簡単にEC2から接続できるようになる
Cloudfront
- Cloudfront経由のみでしかアクセスできないようにすることでDos攻撃などの対策を行う
- 適宜AWS Wafなどで設定を追加していく
SSM
- 踏み台サーバーはSSH接続ではなく、SSM接続を行うことで外部からの不正アクセスのリスクを下げる
VPC Endpoint
- S3とRedisは無料なので作っておいた方が良い
- CloudWatchなどの通信が多いものだけに絞っておかないと逆に料金が高くなる
IaC
Terraform(Terragrunt)を使う
選定
Terraform
- IaCツールとして1番人気で情報量が多い
- AWS以外も構築に組み込める
- 表現力は低い
Tips
- 依存関係が複雑にならないようにリソース単位で分割せず、ライフサイクルが同じもので分割するようにする
- tfstateは暗号化しておく
- GitHubの設定も行う
- backendの設定を変更する場合は
terragrunt init -migrate-state
Terragrunt
- providerなどのモジュール間の共通部分を定義できる
- 依存関係を明示することで解決してくれる
- ディレクトリを分けてもrun-allで同時にコマンドを実行できる
CI/CD
GitHub Actions一択
Tips
- アクセスキーが流出しないようにIDプロバイダーで認証を行う