ECS集成架构
预计阅读时间:3分钟
建筑学
ECS集成依靠CloudFormation来以原子操作方式管理AWS资源。本文档介绍了撰写应用程序模型与AWS组件之间的映射
概述
此图显示了组成模型和作为等效资源创建的同一行AWS组件
+----------+ +-------------+ +-------------------+
| Project | . . . . . . . . . . . . . . | Cluster | . . . . . . . | LoadBalancer |
+-+--------+ +-------------+ +-------------------+
|
| +----------+ +-------------++-------------------+ +-------------------+
+----+ Service | . . . . . . . . . . | Service || TaskDefinition | | TargetGroup |
| +--+-------+ +-------------++-------------------+-+ +-------------------+
| | | TaskRole |
| | +-------------------+-+
| | x-aws-role, x-aws-policies . . . . . . . . | TaskExecutionRole |
| | +-------------------+
| | +---------+
| +--+ Deploy |
| | +---------+ +-------------------+
| | x-aws-autoscaling . . . . . . | ScalableTarget |
| | +-------------------+---+
| | | ScalingPolicy |
| | +-------------------+-+
| | | AutoScalingRole |
| | +-------------------+
| |
| | +---------+ +-------------+ +-------------------+
| +--+ Ports | . . . . . . . | IngressRule +-----+ | Listener |
| | +---------+ +-------------+ | +-------------------+
| | |
| | +---------+ +---------------+ +------------------+
| +--+ Secrets | . . . . . . . | InitContainer | |TaskExecutionRole |
| | +---------+ +---------------+ +------------+-----+
| | | |
| | +---------+ | |
| +--+ Volumes | | |
| | +---------+ | |
| | | |
| | +---------------+ | | +-------------------+
| +--+ DeviceRequest | . . . . . . . . . . . . . . . | . . . . | . . . | CapacityProvider |
| +---------------+ | | +-------------------+--------+
| | | | AutoscalingGroup |
| +------------+ +---------------+ | | +---------------------+
+---+ Networks | . . . . . . . . . | SecurityGroup +---+ | | LaunchConfiguration |
| +------------+ +---------------+ | +---------------------+
| |
| +------------+ +---------------+ |
+---+ Secret | . . . . . . . . . | Secret +--------------+
+------------+ +---------------+
每个撰写应用程序服务均映射到ECS Service
。ATaskDefinition
是根据撰写定义创建的。实际映射受Cloud平台和Fargate限制的约束。TaskDefinition
根据compose模型,这种a是用单个容器设置的,该模型不提供支持sidecar容器的语法。
IAM角色已创建并配置为TaskRole
在需要时向其他AWS资源授予服务访问权限。为此,用户可以设置x-aws-policies
或定义细粒度的x-aws-role
IAM角色文档。
服务的端口被映射到安全组的IngressRule
和负载均衡器Listener
。仅使用HTTP服务(使用端口80/443或x-aws-protocol
设置为http
)来编写应用程序,然后创建应用程序负载平衡器,否则将使用网络负载平衡器。
TargetGroup
每个服务都会创建一个A,以通过负载均衡器将流量分配给匹配的容器
绑定到服务的机密会转换为InitContainer
服务的TaskDefinition
。此init容器负责/run/secrets
为secret创建一个文件,以匹配docker secret模型,并使应用程序代码可移植。TaskExecutionRole
还为每个服务创建一个A ,并对其进行更新以授予对绑定机密的访问权限。
使用GPU(DeviceRequest
)的服务通过Cluster
EC2CapacityProvider
进行扩展,并使用AutoscalingGroup
来管理基于的EC2资源分配LaunchConfiguration
。后者使用ECS建议的AMI和GPU的机器类型。
声明deploy.x-aws-autoscaling
获取ScalingPolicy
指定配置的CPU使用率指标的已创建目标的服务