J'utilise une application serveur open-source fonctionnant sur Docker Compose . Il a quelques services, y compris PostgreSQL DB et Redis.
Comment puis-je déployer au mieux cette application sur AWS en IaC complet avec Terraform?
ecs-cli
ecs-cli
maintenant prend en charge envoi docker compose
configs dans Amazon ECS.
Cependant, je ne pense pas que cela puisse être intégré au flux de travail Terraform (ce qui n'est peut-être pas un gros problème). Ce que je sais avec certitude, c'est que ecs-cli
n'est pas pris en charge dans CloudFormation , selon ce problème , toujours ouvert pour le moment. Je suppose donc qu'il ne peut pas non plus être facilement ajouté à Terraform.
docker-compose.yml
, traduisez-le en kubectl
YAML.Mais ce n'est pas encore entièrement IaC. Et vous devez retraduire votre configuration à chaque fois que le docker-compose change dans le référentiel source. Et cela ressemble à beaucoup de travail.
helm
fournisseur pour installer l'application avec Helm sur le cluster.J'ai lu Kompose peut traduire automatiquement une configuration Docker Compose en configuration k8s, mais ils ne semblent pas être portés sur AWS, sans parler de Terraform.
docker-compose.yml
. Et les images Docker.systemctl
.Cela ferait mal: longues constructions, surveillance difficile, pas de mise à l'échelle.
master
vous indique ce qui est déployé.Qui sait, ecs-cli-v2
pourrait être mieux intégré avec CloudFormation et/ou Terraform.
Comme mentionné dans la question. Probablement la meilleure solution, bien que nécessitant un (petit) effort pour paramétrer Helm.
Voir aussi: Premiers pas avec Helm .
Docker Swarm maintenant accepte entrées d'un docker-compose.yml
fichier. Le modèle peut être trouvé et configuré ici . Une fois configuré, il peut être intégré à une infrastructure Terraform.
Ce (3 ans) tutoriel explique comment utiliser le mode Docker Swarm sur AWS.
Pour lancer le conteneur, si nécessaire (pas complètement étudié, les commentaires sont les bienvenus), vous pouvez utiliser Terraform's local-exec
. De cette façon, vous pouvez SSH dans le nœud maître et exécuter docker stack deploy
et d'autres commandes similaires, tout en étant toujours écrites dans le style IaC.