私はオープンソースのサーバーアプリケーションDocker Composeで実行を使用しています。 PostgreSQL DBやRedisなど、いくつかのサービスがあります。
Terraformを使用してこのアプリケーションをAWSに完全なIaCで最適にデプロイするにはどうすればよいですか?
ecs-cli
ecs-cli
現在 supports Amazon ECSでdocker compose
構成を送信します。
ただし、Terraformワークフローと統合できるとは思いません(大したことではないかもしれません)。私が確信しているのは、ecs-cli
がCloudFormationではサポートされていないであることです この問題 のとおり、現時点ではまだ開いています。したがって、Terraformにも簡単に追加できないと思います。
docker-compose.yml
ファイルを取得して、kubectl
YAMLに変換します。しかし、それはまだ完全にIaCではありません。そして、ソースリポジトリでdocker-composeが変更するたびに設定を再変換する必要があります。そして、それは多くの仕事のように聞こえます。
helm
provider を指定してTerraformを実行し、Helmを使用してアプリケーションをクラスターにインストールします。私が読んだ Kompose は、Docker Compose構成をk8s構成に自動的に変換できますが、それらはAWSに移植されていないようであり、Terraformについて話していないようです。
docker-compose.yml
が含まれています。そしてDockerイメージ。systemctl
サービスを開始します。それは一種の害になるでしょう:長いビルド、難しいモニタリング、スケーリングなし。
master
に書き込まれた構成(およびそれのみ)は、何がデプロイされているかを示します。ecs-cli-v2
はCloudFormationやTerraformとの統合が適切になる可能性があります。
質問で述べたように。 Helmをパラメーター化するための(少しの)努力が必要ですが、おそらく最良のソリューションです。
参照: Helmの概要 。
Docker Swarm now acceptsdocker-compose.yml
ファイルからの入力。テンプレートを見つけて設定できます ここ 。構成したら、Terraformインフラストラクチャに統合できます。
これ(3歳) チュートリアル AWSでDocker Swarmモードを使用する方法を説明します。
コンテナを起動するには、必要に応じて(完全に調査されていません。フィードバックを歓迎します)、Terraformの local-exec
を使用できます。このようにして、マスターノードにSSHで接続し、docker stack deploy
およびその他の同様のコマンドを実行しながら、すべてIaCスタイルで書き留めることができます。