Docker已经发布了增强 Docker 与 AWS Elastic Container Service和 AWS Fargate集成的 公测版本。 ECS插件的发布使开发人员可以利用 Docker 的经验来创建必要的基础设施以在 AWS 中操作。
目前用户可以体验的 beta 版需要在 Docker 命令中使用 ecs
语法,因为该插件在短期内会被直接利用。例如,执行 docker ecs compose up
将会创建应用程序以及 AWS 所需的所有资源,如 compose.yaml
文件。这样就不需要单独创建不属于 Compose 规范的 AWS ECS 资源了,比如 VPCs、 ECS集群和 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 Pods或 sidecars等,因此可以使用自定义的 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<context-name>
命令在上下文之间切换。
想要开始尝试,需要一个 Docker ID 和 Docker Desktop Edge 2.3.3.0版。 GitHub仓库中包含了一个 演示应用程序。 Docker 也在寻找提交到 路线图的特性请求。
原文链接:
Docker Releases Plugin for Simplified Deployments into AWS ECS and Fargate
评论