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-roleIAM角色文档。

服务的端口被映射到安全组的IngressRule和负载均衡器Listener。仅使用HTTP服务(使用端口80/443或x-aws-protocol设置为http)来编写应用程序,然后创建应用程序负载平衡器,否则将使用网络负载平衡器。

TargetGroup每个服务都会创建一个A,以通过负载均衡器将流量分配给匹配的容器

绑定到服务的机密会转换为InitContainer服务的TaskDefinition。此init容器负责/run/secrets为secret创建一个文件,以匹配docker secret模型,并使应用程序代码可移植。TaskExecutionRole还为每个服务创建一个A ,并对其进行更新以授予对绑定机密的访问权限。

使用GPU(DeviceRequest)的服务通过ClusterEC2CapacityProvider进行扩展,并使用AutoscalingGroup来管理基于的EC2资源分配LaunchConfiguration。后者使用ECS建议的AMI和GPU的机器类型。

声明deploy.x-aws-autoscaling获取ScalingPolicy指定配置的CPU使用率指标的已创建目标的服务

DockerAmazon集成ECS编写架构映射