🌩️

【PipeCD】ECS上にPipedをTerraformで構築する

2024/10/09に公開

ECS上にPipeCDのPipedを構築するサンプルをTerraformで作りました。

その概要と、構築時のポイントを説明します。

https://github.com/t-kikuc/pipecd-iac/tree/main/piped-on-ecs

想定読者

  • PipedをECS上に構築したい方
    • Pipedのconfigファイルを作成済だとベター
  • かつ、接続可能なPipeCD Control Planeが既にある方

PipeCDの前提知識(ざっくり)

  • PipeCDは Control PlanePiped の2コンポネントからなります。

  • 本記事では、デプロイエージェントであるPipedの構築を取り扱います。

構成

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に構築する例

https://t-kikuc.hatenablog.com/entry/2024/02/22/193046

サイバーエージェント Developer Productivity室

Discussion