迈出第一步
简介
容器是现代应用程序开发的关键组成部分。它们已经成为组织计算资源以及管理应用程序部署内容的标准方式。
容器提供了离散的可重现计算环境,还提供了一种简化打包和依赖项管理的方法。从超大型多集群资产的编排到 Web 应用程序的编排,甚至测试您的工作并在您的笔记本电脑上进行概念验证,它们都是入门和构建在云端部署的软件的好方法。
本决策指南可帮助您入门并选择适合现代应用程序开发的 AWS 容器服务。
这段四分钟的摘录摘自 AWS 的 Principal Technical Account Manager,Vikram Venkataraman 在 2022 年 AWS 华盛顿特区峰会上发表的 57 分钟演讲录像。它概述了可用的 AWS 容器服务。
阅读时间
20 分钟
用途
帮助确定哪项 AWS 容器服务最适用于贵组织。
级别
新手
上次更新日期
2023 年 4 月 26 日
涵盖的服务
了解
容器已经成为将应用程序代码、配置和依赖项打包到单个构件中的事实标准,因为它们能以一致的方式部署到多个环境中。
容器是任何现代应用程序开发策略的关键部分。为了提供与容器相关的 AWS 服务的一些背景信息,右图显示了按层划分的可用 AWS 容器选项(在本视频中进行了更全面的说明)。
容量
容量是指您要将容器部署到其中的底层计算,以及您的中央处理器(CPU)和内存要求。容量是容器将在其上运行的基础设施。关于 AWS 上容器的容量,您有两种选择:
- Amazon Elastic Compute Cloud(AmazonEC2)允许您在自己管理的虚拟机上运行容器。
- AWS Fargate 是用于容器的无服务器计算引擎,允许您运行容器而无需管理底层基础设施。借助 Fargate,您可以启动和扩展容器,而不必担心底层 EC2 实例。
编排
一个组织运行不止一个或几个容器,而是数千个容器,这种情况并不罕见。管理如此复杂的环境十分具有挑战性。编排服务有助于简化这些应用程序的部署和管理。AWS 提供三种编排服务:
- Amazon Elastic Container Service(Amazon ECS)是一项完全托管的容器编排服务,非常适合希望以简单且经济实惠的方式部署和管理容器化应用程序的组织。
- Amazon Elastic Kubernetes Service(Amazon EKS)是一项完全托管式 Kubernetes 服务,可让您在 AWS 上运行和管理 Kubernetes 集群。
- AWS 云端 Red Hat OpenShift 服务(ROSA)是一项完全托管式 OpenShift 服务,可让您在 AWS 上运行和管理 OpenShift 集群。对于已经在本地运行 OpenShift 的客户而言,该服务式理想选择。
预置
预置为服务编排层提供了接口。每种编排工具都有自身的复杂性。预置服务可以隐藏这种复杂性,有助于您更轻松地使用该服务。该类别中的 AWS 服务包括:
- AWS App Runner 是一项完全托管式服务,可通过您的源代码自动构建容器映像,将容器部署到完全托管式基础设施,并根据需要对其进行扩展。
- AWS Elastic Beanstalk 是一项完全托管式服务,可以轻松部署、管理和扩展 Web 应用程序。Elastic Beanstalk 还支持容器,为部署和扩展容器化应用程序提供完全托管式平台。
- Amazon Lightsail 是一种简单且经济高效的方式,用于启动和管理虚拟私有服务器,还提供了对容器的支持,可让您使用 Lightsail 实例创建和部署容器化应用程序。
考虑
选择符合您的应用程序要求和操作偏好的容器服务非常重要。以下部分概述了选择容器服务以及支持工具和服务时需要考虑的一些关键标准。
-
托管服务和运营开销
-
工作负载特征
-
应用程序可移植性
-
组织规模和技能
-
易于部署
-
组织可以选择云,通过对托管服务进行标准化,将运营负担转移到 AWS,从而降低运营成本。更高的抽象级别使开发人员和运营商能够专注于自己独特的增值活动,而不是千篇一律的任务。
使用 AWS 上的容器进行构建,会使用具有更高抽象级别的服务,将维护基础设施的运营开销转移到 AWS。
-
通过了解您的工作负载模式,您可以更轻松地做出架构选择。这可能包括 Web 应用程序、基于 API 的微服务、事件驱动型应用程序、流式传输和消息收发、数据管道、IT 自动化等。与其他类型的计算环境相比,某些工作负载在某种计算环境中的性能更好或更经济高效。
-
很多客户希望确保其应用程序可在其他环境中运行,并可轻松迁移或移动到该环境中。他们必须能够保留选择权,或同时在本地和云中运行应用程序。
我们建议在软件架构和建包方面培养能力,这样您能够更轻松地在计算服务之间移植差异化业务逻辑。
使用某些技术构建的应用程序在某些计算服务上的运行可能比其他计算服务更有效。
-
在决定使用哪些容器服务时,贵组织的技能是一项主要因素。无论您采用什么方法,都需要对 DevOps 和站点可靠性工程师(SRE)团队进行一些投资。构建自动化管道以部署应用程序对于大多数现代应用程序开发而言很常见。
有些选择会提高管理工作量。例如,一些组织拥有运行和管理 Kubernetes 实施的技能及资源,因为他们对强大的 SRE 团队进行了投资,以管理 Kubernetes 集群。这些团队负责处理频繁的集群升级(例如,Kubernetes 每年发布三个主要版本,并且会弃用旧版本)。
组织规模是一项关键因素,因为规模较小的初创企业可能仅有少量 IT 员工,每位员工都要履行多种角色,而大型企业可能要在生产中同时支持数百个工作负载。
-
不同 AWS 容器服务可以满足部署复杂性方面的独特需求。以下是各项服务针对自身角色进行优化的方式:
- AWS AppRunner 提供了最简单的途径,可让您在公共互联网上部署应用程序,而无需管理或自定义底层基础设施。
- 如果您需要在不牺牲规模或功能的情况下对网络和安全配置进行更多控制,则 Amazon ECS 是一个理想选择。
- Amazon EKS 使您能够利用 Kubernetes 技术为应用程序部署及编排提供的灵活性和控制。
- AWS AppRunner 提供了最简单的途径,可让您在公共互联网上部署应用程序,而无需管理或自定义底层基础设施。
选择
现在您已经了解评估容器选项所依据的标准,能够选择出哪些 AWS 容器服务可能适用于贵组织的要求。
下表突出显示了不同服务针对哪些情况进行了优化。请使用该表帮助确定最适用于您的组织和使用案例的容器服务。
AWS 云端 Red Hat OpenShift 服务(ROSA)
AWS 云端 Red Hat OpenShift 服务可轻松在 AWS 上创建和操作 Red Hat OpenShift 集群。对于已在 OpenShift 容器平台本地完成容器化的应用程序,ROSA 提供了一个常见的 API 界面,并保持部署工具链不变,使您可以专注于重构数据模型,而不是整个应用程序堆栈。
Amazon Elastic Kubernetes Service
Amazon EKS 有助于在 AWS Cloud 或本地启动、运行和扩展 Kubernetes 应用程序。
Amazon ECS 是一项完全托管的容器编排服务,有助于部署、管理和扩展容器化应用程序。
Amazon Elastic Container Registry
Amazon ECR 是完全托管式容器注册表,提供高性能托管,让您能在任何地方可靠地部署应用程序映像和构件。
Amazon Elastic Container Service (ECS) Anywhere
Amazon ECS Anywhere 是 Amazon ECS 的一种功能,此功能可让您轻松地运行和管理基础设施上的容器工作负载。
Amazon EKS Anywhere 让您在自己的基础设施中创建和操作 Kubernetes 集群。
Amazon EKS 使用 Amazon EKS Distro,这是由 AWS 构建和维护的 Kubernetes 发行版本。Amazon EKS Distro 使创建安全可靠的集群变得更加容易。
使用
现在,您应该已经清楚了解每项 AWS 容器服务(以及支持的 AWS 工具和服务),以及哪一种容器服务最适合您的组织和使用案例。
为了探索如何使用每项可用的 AWS 容器服务,以及了解有关各项服务的更多信息,我们提供了探索每项服务工作原理的途径。以下部分提供了深入学习文档、操作教程和资源的链接,以帮助您入门。
-
Amazon EC2
-
Amazon ECR
-
Amazon ECS
-
Amazon EKS
-
Amazon Lightsail
-
AWS App Runner
-
AWS Elastic Beanstalk
-
AWS Fargate
-
ROSA
-
Amazon EC2
-
-
Amazon ECR
-
使用 Amazon ECR 源和 ECS-to-CodeDeploy 部署创建管道
在 AWS CodePipeline 中配置一个管道,该管道使用支持 Docker 映像的蓝绿部署来部署容器应用程序。
-
Amazon ECS
-
Amazon ECS 入门
本指南将提供可用于访问 Amazon ECS 的工具简介,以及运行容器的介绍性分步程序。
Amazon ECS 的新增功能和未来展望
了解自 Amazon ECS Anywhere 推出以来的新增功能、AWS Fargate 的新功能,以及对激动人心的 Amazon ECS 增强功能的展望。
-
Amazon EKS
-
Amazon EKS 入门
了解有关 Amazon Elastic Kubernetes Service(Amazon EKS)的更多信息,Amazon EKS 是一项托管式服务,您可以使用它来运行 AWS 上的 Kubernetes,而无需安装、操作和维护您自己的 Kubernetes 控制面板或节点。
Amazon Elastic Kubernetes Service(EKS)部署
探索 AWS 上的 Amazon EKS 部署选项,了解如何使用它来管理通用容器化应用程序。
Amazon EKS 快速入门参考部署
我们使用快速入门参考部署指南,提供部署 Amazon Elastic Kubernetes Service(Amazon EKS)集群的分步说明。
-
Amazon Lightsail
-
使用 Amazon Lightsail 创建、推送及
部署容器映像
本教程将向您介绍如何使用 Dockerfile 在本地计算机上创建容器映像。映像创建完成后,您可以将其推送到 Lightsail 容器服务以进行部署。
Amazon Lightsail 资源中心
探索 Lightsail 教程、视频和核心概念文档链接。
使用 Amazon Lightsail 启动 Linux 虚拟机
在本教程中,您将在 Amazon Lightsail 中创建一个 Amazon Linux 实例。该实例启动并运行后,您可以使用基于浏览器的 SSH 终端在 Lightsail 控制台内通过 SSH 连接它。
-
AWS App Runner
-
AWS App Runner 入门
本教程将引导您配置源代码和部署、服务构建以及服务运行时系统,以将应用程序部署到 App Runner 服务。它还将介绍如何部署代码版本、更改配置和查看日志。
使用教程 »
AWS App Runner:只需几分钟即可实现从代码到可扩展、安全的 Web 应用程序
探索 AWS App Runner 是如何精心设计,使您能够更轻松地将 Web 应用程序和 API 部署到云,而无需考虑它们使用哪种语言编写,即便对于之前缺乏部署和管理容器或基础设施经验的团队也能轻松使用。
使用 AWS App Runner 部署 Web 应用程序
请按照以下分步说明使用 AWS App Runner 部署容器化 Web 应用程序。从源代码或容器映像开始。App Runner 自动构建和部署 Web 应用程序,并通过加密实现流量的负载平衡。 -
AWS Elastic Beanstalk
-
AWS Fargate
-
AWS Fargate 入门
本指南将介绍 AWS Fargate 的基础知识,您可以将该技术与 Amazon ECS 配合使用来运行容器,而无需管理 Amazon EC2 实例的服务器或集群。
使用 AWS Fargate 上的 Linux 容器开始使用控制台
通过在 Amazon ECS 支持 AWS Fargate 的区域针对您的任务使用 Fargate 启动类型,开始在 AWS Fargate 上使用 Amazon ECS。
使用 AWS CLI 创建包含 Fargate Linux 任务的集群
使用 AWS CLI 在 Amazon ECS 中设置集群、注册任务定义、运行 Linux 任务以及执行其他常见场景。 -
ROSA