🌩️
【PipeCD】ECS上にPipedをTerraformで構築する
ECS上にPipeCDのPipedを構築するサンプルをTerraformで作りました。
その概要と、構築時のポイントを説明します。
想定読者
- PipedをECS上に構築したい方
- Pipedのconfigファイルを作成済だとベター
- かつ、接続可能なPipeCD Control Planeが既にある方
PipeCDの前提知識(ざっくり)
- PipeCDは Control Plane と Piped の2コンポネントからなります。
- 本記事では、デプロイエージェントであるPipedの構築を取り扱います。
- Control Planeの構築方法は、on ECS Fargateやby docker-composeを参照ください。
構成
ECSのサービスタスクとして、Pipedを構築します。
構築方法
READMEに手順を記載しています。
Pipedのconfigと.tfvars
ファイルを用意して、terraform apply
すれば良いです。
構築時のポイント
スケーリング
- 同じIDを持つPipedは同時に1台のみ動く必要があるため、スケールアウトは不要です。
セキュリティグループ
- Ingress
- Pipedはinbound通信不要なので、Ingressのルールを付与していません。
- 追加で独自のヘルスチェックを行う場合は、そのポートを許可すれば良いです。
- Egress
- ghcr.ioからイメージをpullしたり、GitHubからcloneするため、任意アドレスへの通信を許可しています。
シークレット管理
- Pipedの設定ファイルはクレデンシャルを含むため、Secrets Managerにて安全に管理し、Pipedの起動時オプションでそれを参照しています。
IAM権限
- Pipedがapplicationをデプロイする際には、タスクロールにECSやLambdaへの権限がいくつか必要です。最小権限を目指す際には、下記を参照に権限の絞り込みを行ってください。
参考・関連文献
- PipedをApp Runnerに構築する例
Discussion