Categories
程式開發

Docker发布了用于简化在AWS ECS和Fargate中部署的插件


Docker已经发布了增强Docker与 AWS Elastic Container ServiceAWS Fargate集成的 公测版本ECS插件的发布使开发人员可以利用Docker的经验来创建必要的基础设施以在AWS中操作。

目前用户可以体验的beta版需要在Docker命令中使用 ecs 语法,因为该插件在短期内会被直接利用。例如,执行 docker ecs compose up 将会创建应用程序以及AWS所需的所有资源,如 compose.yaml 文件。这样就不需要单独创建不属于Compose规范的AWS ECS资源了,比如 VPCsECS集群ECS任务定义

ECS Docker插件需要设置一个AWS配置文件,以便从中选择必要的AWS API凭证。创建之后,AWS配置文件和区域将存储在Docker上下文中。这可以通过 docker ecs setup 命令启动。

该插件将解析 compose.yaml 文件,并将其转换为适当的 CloudFormation模板。然后,使用该模板按指定的顺序创建应用程序资源。资源可以通过 down 命令清理,或者在部署失败时自动清理。

ECS集成过程会执行四个步骤。加载阶段( Load phase)依赖于 compose-go来加载和解析 compose.yaml 文件。在验证阶段(Validate phase),会将ECS默认值注入到compose-go模型中,并对 compose.yaml 文件进行验证以确保其不包含不受支持的功能。转换阶段(Convert phase)生成一个CloudFormation模板,该模板定义了在AWS上实现应用程序模型所需的所有应用程序资源。最后,应用阶段(Apply phase)执行CloudFormation模板的应用,方法是导出到堆栈文件或部署到AWS上。

在此过程中,Compose服务将映射到ECS服务。由于Compose不支持多容器服务,比如 Kubernetes Podssidecars等,因此可以使用自定义的Compose扩展(即 x-aws-* )将ECS特性作为服务级特性公开。

网络抽象从Compose模型映射到 AWS安全组。应用程序在单个VPC中创建,每个Compose网络都将创建安全组,包括隐式的默认安全组。然后根据Compose模型中网络的声明方式附加服务。这使得附加到公共安全组的服务能够彼此通信。

还为每个应用程序创建了一个 Cloud Map私有命名空间,名称为 {project}.local 。 AWS Cloud Map是一种资源发现服务。它允许使用自定义名称注册任何应用程序资源。然后,Cloud Map将检查已注册资源的运行状况,以确保其位置是最新的。

GA版本预计在今年晚些时候发布,它将把该插件纳入到 Docker Contexts中。 Docker Contexts为单个CLI实例提供了一种拥有多个上下文的方法。每个上下文都包含管理集群或节点所需的所有必要端点和安全信息。例如,同一台笔记本电脑上可能有一个开发上下文和一个生产上下文。可以用 docker context use 命令在上下文之间切换。

想要开始尝试,需要一个Docker ID和 Docker Desktop Edge 2.3.3.0版GitHub仓库中包含了一个 演示应用程序。 Docker也在寻找提交到 路线图的特性请求。

原文链接:

Docker Releases Plugin for Simplified Deployments into AWS ECS and Fargate