亚马逊AWS官方博客

OpenSource | 使用mu轻松建造容器应用程序的管道

Amazon Elastic Container Service (ECS) 是部署容器化微服务的绝佳方法。mu 是 Stelligent 推出的一款开源工具,利用 CLI 简化了 ECS 集群所需 AWS 资源的声明和管理,让开发人员能够更轻松地开始在 ECS 上部署微服务。此外,它还利用 AWS CodeBuildAWS CodePipeline 创建了部署管道。在这篇客座文章中,来自 Stelligent 的 Casey Lee 说明了如何使用 mu 轻松创建这样的管道。
Arun


Amazon Elastic Container Service 支持大规模运行容器工作负载。此外,开发人员可以利用 AWS CodeBuild 和 AWS CodePipeline 等服务来编排其容器应用程序的构建和部署。所有构建块均可用于创建持续交付管道,从而快速持续地为用户创造价值。但是,如果开发人员需要高效配置各种 AWS 服务,让其协同工作,则需要经历漫长的学习过程。

在这篇文章中,我们将介绍 mu,这款开源工具可以简化为容器工作负载创建持续交付管道过程中必不可少的 AWS 资源声明和管理工作。它根据多方意见整理最佳实践,将其编纂为默认配置,让您可以在几分钟内为应用程序建立可靠的管道。我们直接通过实例演示该工具。

mu 管理三个主要组件:

  • 环境 – 环境包括容器运行必需的网络 (VPC) 和主机集群 (ECS 容器实例)。 环境具有根据部署到其中的所有微服务的资源需求自动扩展或缩减的能力。环境有很多 (例如,开发、试运行、生产)。
  • 服务 – 容器应用程序,将作为一组容器部署到一个或多个给定环境中。
  • 管道 – 持续交付管道,将管理一项服务在各种环境内的构建、测试和部署。

通过实例演示了解 mu

为了便于演示,我们将使用一款简单的 NGINX 应用程序。可以通过 https://github.com/cplee/hello-nginx 获取该应用程序的源代码,代码由以下 Dockerfile 组成:

FROM nginx:stable-alpine COPY health /usr/share/nginx/html/health mu.yml 文件包含创建必需的最低配置: ### # Define 2 environments ### environments: - name: acceptance - name: production ### # Configure the service with a route for paths /* # from the ALB to port 80 in the container ### service: port: 80 pathPatterns: - /* 

安装过程十分简单,只需下载编译后的 mu 二进制文件并将其添加到路径中即可:

curl -s https://getmu.io/install.sh | sh

运行以下命令创建管道。系统将提示您输入 GitHub 个人访问令牌,CodePipeline 需要使用此令牌配置提交挂钩。

mu pipeline up

管道创建之后,您可以通过 mu 监控管道进程:

还可以通过 mu 监控 CodeBuild 项目的 CloudWatch 日志输出:

可以通过 mu 查看 ECS 服务的 CloudWatch 日志,以监控应用程序:

通过 mu 可以查看 ECS 集群的详细信息。此外,您还可以确定 ELB 的 URL,以便随后测试应用程序:

为什么要开放源代码?

Stelligent 致力于帮助客户在 AWS 上构建持续交付管道。我们的核心价值观之一就是“分享”。我们希望以开放的态度面对客户,让客户能够访问我们在与其合作时使用的工具。通过开放 mu 的源代码,我们可以强化客户对我们在其账户中使用的工具的所有权意识。

创建 mu 和开放其源代码的另一个目标是:与社区分享我们的经验所得和想法,共同探寻实施这些管道的最佳方法。我们希望社区能使用这款工具,根据自己的使用情况促进这款工具的发展演变,并积极提供反馈意见,探索如何以更好的方式处理我们尝试解决的问题。

关于 mu 开放性的最后一点:mu 开发的一个指导原则是提供一种配置 AWS 资源的轻量级方法。因此,mu 在 AWS 中创建资源后,绝不会给您造成任何阻碍。 您可以在创建管道后继续使用它,也可以放弃它,改用传统的 AWS 工具 (控制台或 CLI)。下图展示了 mu 的工作方式,它会读入 mu.yml,并生成以各方意见为依据的 CloudFormation 模板,该模板将在 AWS 账户中运行:

为 mu 贡献您的力量!

如果您对容器工作负载的持续交付管道感兴趣,我们需要您的帮助!方法如下:

  • 试用 – 访问 mu wiki 上的快速入门,下载并安装工具。您还可以根据一段简短的教程创建您的第一项服务。
  • 分享反馈 – 在我们的 Gitter 聊天室内与我们聊天,提出问题,告诉我们您的想法。此外,如果您有任何功能需求,欢迎创建新问题
  • 提交拉取请求 – 欢迎提交任何拉取请求!访问贡献指南,了解更多详细信息。

Casey LeeStelligent 的首席架构师 – 他是一位具有 DevOps 资质的高级顾问合作伙伴,自 2009 年以来一直从事在 AWS 上实施持续交付解决方案的工作。他是 AWS 认证的 DevOps 工程师 – 专业级认证和解决方案架构师 – 专业级认证。 过去 20 年来,他为包括初创公司和《财富》杂志 500 强企业在内的各类组织提供软件系统架构设计、实施和支持。

本博文中的内容和观点均源自第三方作者,AWS 对本博文中的内容或准确性不承担任何责任。

Arun Gupta

Arun Gupta

Arun Gupta 是 Amazon Web Services 的首席开源技术专家。他在 AWS 主要负责与容器和开源有关的所有事务。他还负责 AWS 内部的 CNCF 战略,积极参与 CNCF 董事和技术会议。他曾在 Sun、Oracle、Red Hat 和 Couchbase 组建和领导开发人员社区,在此方面拥有超过 12 年的经验。他有丰富的演讲经历,在 40 多个国家/地区就各种主题发表过演讲,并且连续四年荣膺 JavaOne Rock Star。Gupta 还在美国创立了 Devoxx4Kids 分会,并继续在儿童中推广技术教育。此外,Gupta 还是一位多产的博客作者并出版过多本书籍。他热爱跑步、喜欢环球旅行。这就是 Gupta,一位 Docker 队长、一个 Java 冠军、一名 JUG 领袖、一位 NetBeans 梦之队成员。您可以访问他的博客 @arungupta,了解更多信息。