最近在学习ECS和Terraform,于是用Terraform配置了一个基本的ECS Cluster,Cluster里面有2个EC2,上面跑了4个Nginx的容器。
整个配置的流程用resource 完成,并未使用Module,思路和用AWS Console手动创建的过程一一匹配。
https://github.com/beanxyz/ecs
执行terraform apply的效果
基本流程:
- 配置基本的VPC网络,包括VPC,公网,私网,路由表,NGW, IGW
- 配置一个launch-configuraion 和 Autoscaling Group,放置我们的EC2 host
- 配置一个ALB,但是不要配置Target Group
- 配置一个Cluster
- 配置一个Task definition,这里面就是容器镜像相关的配置
- 配置一个service,调用上面的Cluster和Task, 关联我们的ALB和 容器,注意在配置service的时候,我们还可以配置ECS 容器级别的Auto scaling,不要和EC2的 Auto Scaling搞混了
效果:
两个容器跑在两个不同的EC2 host
ALB 指向 Target Group , 可以看见他有不同的端口,这里用的是Docker的Bridge网络模式,ALB端口转发 从 80端口指向EC2的 32768端口,然后 EC2 再次端口转发到容器的80端口
访问 ALB 的DNS 看看
成功