本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS Fargate 和 Network Load Balancer 在亚马逊ECS上私下访问容器应用程序 AWS PrivateLink
由 Kirankumar Chandrashekar 创作 () AWS
摘要
此模式描述了如何使用带有 Far AWS gate 启动类型的亚马逊弹性容器服务 (亚马逊AWS),在网络负载均衡器后面,在亚马逊云服务 (ECS) 云上私下托管 Docker 容器应用程序,并使用访问该应用程序。AWS PrivateLinkAmazon Relational Database Service (AmazonRDS) 托管在亚马逊上运行的应用程序的关系数据库,ECS具有高可用性 (HA)。如果应用程序需要永久存储,则可以使用 Amazon Elastic File System (AmazonEFS)。
此模式对运行 Docker 应用程序的亚马逊ECS服务使用 Fargate 启动类型,前端为网络负载均衡器。然后可以将其与虚拟私有云 (VPC) 端点关联以供访问AWS PrivateLink。然后,可以使用其他VPC终端节点与其他人共享VPCs该VPC终端节点服务。
您可以使用 Fargate with Amazon ECS 来运行容器,而无需管理服务器或亚马逊弹性计算云 (AmazonEC2) 实例集群。你也可以使用 Amazon A EC2 uto Scaling 群组来代替 Fargate。有关更多信息,请参阅使用AWS PrivateLink 和 Network Load Balancer 在 Amazon ECS 上私下访问容器应用程序。
先决条件和限制
先决条件
一个活跃的AWS账户
AWS命令行界面 (AWSCLI) 版本 2,在 Linux、macOS 或 Windows 上安装和配置
Docker
,已在 Linux、macOS 或 Windows 上安装并配置 在 Docker 上运行的应用程序
架构
技术堆栈
Amazon CloudWatch
亚马逊弹性容器注册表(亚马逊ECR)
Amazon ECS
Amazon EFS
Amazon RDS
Amazon Simple Storage Service(Amazon S3)
AWS Fargate
AWS PrivateLink
AWS Secrets Manager
应用程序负载均衡器
网络负载均衡器
VPC
自动化和扩缩
您可以使用 AWS CloudFormation“基础设施即代码” 来创建此模式。
工具
AWS 服务
Amazon Elastic Container Registry (AmazonECR) 是一项安全、可扩展且可靠的托管AWS容器镜像注册服务。
Amazon 弹性容器服务 (AmazonECS) 是一项高度可扩展、快速的容器管理服务,可以轻松地在集群上运行、停止和管理容器。
Amazon Elastic File System (AmazonEFS) 提供了一个简单、可扩展、完全托管的弹性NFS文件系统,用于AWS云服务和本地资源。
AWS Fargate是一种您可以与 Amazon 配合使用ECS来运行容器的技术,而无需管理服务器或亚马逊EC2实例集群。
Amazon Relational Database Service (AmazonRDS) 是一项网络服务,可以更轻松地在中设置、操作和扩展关系数据库 AWS Cloud。
亚马逊简单存储服务 (Amazon S3) Sem ple Service 是互联网存储。该服务旨在降低开发人员进行网络规模级计算的难度。
AWS Secrets Manager通过API调用 Secrets Manager 以编程方式检索密钥,帮助您替换代码中的硬编码凭据(包括密码)。
Amazon Virtual Private Cloud(亚马逊VPC)可帮助您将AWS资源启动到您定义的虚拟网络中。
Elastic Load Balancing (ELB) 将传入的应用程序或网络流量分发到多个可用区域中的多个目标,例如EC2实例、容器和 IP 地址。
其他工具
Docker
可帮助开发人员轻松打包、交付和运行任何应用程序,将其作为轻量级、便携且自给自足的容器。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
创建 VPC。 |
| 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建网络负载均衡器。 |
要获取有关此操作和其他操作的帮助,请参阅相关资源部分。 | 云管理员 |
创建应用程序负载均衡器。 |
| 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建 Amazon EFS 文件系统。 |
| 云管理员 |
子网的挂载目标。 |
| 云管理员 |
验证子网是否已挂载为目标。 |
| 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建 S3 存储桶。 | 如果需要,打开 Amazon S3 控制台并创建一个 S3 存储桶来存储应用程序的静态资产。 | 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建用于加密 Secrets Manager 密AWSKMS钥的密钥。 | 打开AWS密钥管理服务 (AWSKMS) 控制台并创建KMS密钥。 | 云管理员 |
创建 Secrets Manager 密钥来存储亚马逊RDS密码。 |
| 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建数据库子网组。 |
| 云管理员 |
创建一个 Amazon RDS 实例。 | 在私有子网内创建和配置 Amazon RDS 实例。确保已启用多可用区以实现高可用性 (HA)。 | 云管理员 |
将数据加载到 Amazon RDS 实例。 | 将应用程序所需的关系数据加载到您的 Amazon RDS 实例中。此流程将根据应用程序的需求以及数据库架构的定义和设计方式而有所不同。 | DBA |
任务 | 描述 | 所需技能 |
---|---|---|
创建 ECS 集群。 |
| 云管理员 |
创建 Docker 映像 | 云管理员 | |
创建 Amazon ECR 存储库。 |
| 云管理员、 DevOps 工程师 |
将 Docker 镜像推送到亚马逊ECR存储库。 |
| 云管理员 |
创建 Amazon ECS 任务定义。 | 在亚马逊ECS中运行 Docker 容器需要任务定义。
重要有关设置任务定义的帮助,请参阅相关资源部分中的“创建任务定义”。请务必提供您推送到亚马逊ECR的 Docker 镜像。 | 云管理员 |
创建ECS服务并选择 Fargate 作为启动类型。 |
| 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
设置AWS PrivateLink 终端节点。 |
| 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
创建VPC 终端节点。 | 为您之前@@ 创建的VPC终AWS PrivateLink 端节点创建终端节点。VPC端点完全限定域名 (FQDN) 将指向该AWS PrivateLink 端点FQDN。这会为域名服务终端节点可以访问的VPC终端节点服务创建一个 elastic network 接口。 | 云管理员 |
任务 | 描述 | 所需技能 |
---|---|---|
将 Application Load Balancer 添加为目标。 | 要将应用程序负载均衡器添加为网络负载均衡器的目标,请按照AWS 文档中的说明进行操作。 | 应用程序开发人员 |
相关资源
创建负载均衡器:
创建 Amazon EFS 文件系统:
创建 Secrets Manager 密钥:
创建一个 Amazon RDS 实例:
创建 Amazon ECS 组件
其他资源: