使用 AWS Fargate 和 Network Load Balancer 在亚马逊ECS上私下访问容器应用程序 AWS PrivateLink - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 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 上私下访问容器应用程序

先决条件

PrivateLink 用于访问亚马逊上ECS具有 AWS Fargate 启动类型的容器应用程序。

技术堆栈

  • Amazon CloudWatch

  • 亚马逊弹性容器注册表(亚马逊ECR)

  • Amazon ECS

  • Amazon EFS

  • Amazon RDS

  • Amazon Simple Storage Service(Amazon S3)

  • AWS Fargate

  • AWS PrivateLink

  • AWS Secrets Manager

  • 应用程序负载均衡器

  • 网络负载均衡器

  • VPC

自动化和扩缩

AWS 服务

其他工具

  • Docker 可帮助开发人员轻松打包、交付和运行任何应用程序,将其作为轻量级、便携且自给自足的容器。

任务描述所需技能

创建 VPC。

  1. 登录AWS管理控制台,然后打开 Amazon VPC 控制台。选择 “创建”VPC,VPC然后选择 “等等”。 

  2. 输入你的名字VPC,然后选择合适的CIDR区块范围。

  3. 指定两个可用区、两个公有子网、四个私有子网。两个私有子网用于 Amazon ECS 任务,两个私有子网用于 Ama RDS zon 数据库。

  4. 为每个可用区指定一个NAT网关。

  5. 选择 “创建” VPC

云管理员
任务描述所需技能

创建网络负载均衡器。

  1. 打开 Amazon EC2 控制台,然后选择包含您的AWS区域VPC。 

  2. 负载均衡下方选择负载均衡器,然后选择创建负载均衡器。 

  3. 选择网络负载均衡器,然后选择创建。 

  4. 配置负载均衡器页面上,配置您的网络负载均衡器和侦听器。重要提示:请务必将网络负载均衡器的模式选择为内部。 

  5. 选择适用的安全设置,配置安全组和目标组。在配置路由部分中选择 IP 作为目标类型。确保您没有注册目标。 

  6. 在配置完所有设置后,选择下一步:查看,然后选择创建

要获取有关此操作和其他操作的帮助,请参阅相关资源部分。

云管理员

创建应用程序负载均衡器。

  1. 在 Amazon EC2 控制台上,选择包含您的相同区域VPC。 

  2. 负载均衡下方选择负载均衡器,然后选择创建负载均衡器。 

  3. 选择应用程序负载均衡器,然后选择创建。 

  4. 重要

    配置应用程序负载均衡器及其侦听器 确保将应用程序负载均衡器的方案选择为 “内部”。 

  5. 选择适用的安全设置,配置安全组和目标组。在配置路由部分中选择 IP 作为目标类型。确保您没有注册目标。 

  6. 在配置完所有设置后,选择下一步:查看,然后选择创建

云管理员
任务描述所需技能

创建 Amazon EFS 文件系统。

  1. 打开 Amazon EFS 控制台,然后选择创建文件系统。 

  2. 创建文件系统对话框中,输入文件系统的名称,然后选择您的VPC。 

  3. 选择创建以创建文件系统。 

  4. 设置和配置您的 Amazon EFS 文件系统。

云管理员

子网的挂载目标。

  1. 返回 Amazon EFS 控制台,然后选择 “文件系统”。文件系统页面显示您账户中的 Amazon EFS 文件系统。 

  2. 选择您创建的文件系统,然后选择管理以显示可用区。 

  3. 要添加挂载目标,请选择添加挂载目标,然后添加您创建的四个私有子网。

云管理员

验证子网是否已挂载为目标。

  1. 在 Amazon EFS 控制台上,选择文件系统。 

  2. 选择网络以显示现有挂载目标的列表。确保这些子网包括您创建的四个子网。

云管理员
任务描述所需技能

创建 S3 存储桶。

如果需要,打开 Amazon S3 控制台并创建一个 S3 存储桶来存储应用程序的静态资产。

云管理员
任务描述所需技能

创建用于加密 Secrets Manager 密AWSKMS钥的密钥。

打开AWS密钥管理服务 (AWSKMS) 控制台并创建KMS密钥。

云管理员

创建 Secrets Manager 密钥来存储亚马逊RDS密码。

  1. 打开 S AWS ecrets Manager 控制台,选择存储新密钥来创建新密钥。 

  2. 选择您创建的KMS密钥,然后存储您的新密钥。

云管理员
任务描述所需技能

创建数据库子网组。

  1. 打开 Amazon RDS 控制台,然后选择子网组。 

  2. 选择创建数据库子网组,然后输入数据库子网组的名称和描述。 

  3. 选择您之前创建的,然后选择可用区和子网。VPC然后选择创建

云管理员

创建一个 Amazon RDS 实例。

在私有子网内创建和配置 Amazon RDS 实例。确保已启用多可用区以实现高可用性 (HA)。

云管理员

将数据加载到 Amazon RDS 实例。

将应用程序所需的关系数据加载到您的 Amazon RDS 实例中。此流程将根据应用程序的需求以及数据库架构的定义和设计方式而有所不同。

DBA
任务描述所需技能

创建 ECS 集群。

  1. 打开 Amazon ECS 控制台,然后选择集群。 

  2. 选择创建集群,然后根据所需的规格设置ECS集群。

云管理员

创建 Docker 映像

按照文档中的说明创建 Docker 镜像。AWS

云管理员

创建 Amazon ECR 存储库。

  1. 打开 Amazon ECR 控制台,然后选择 “存储库”。 

  2. 选择创建存储库,然后输入存储库的唯一名称。 

  3. 根据您的规格配置存储库,包括AWSKMS加密(如果需要)。

云管理员、 DevOps 工程师

将 Docker 镜像推送到亚马逊ECR存储库。

  1. 确定要推送的 Docker 镜像,然后在中运行该docker images命令。AWS CLI 

  2. 使用 Amazon ECR 注册表、存储库和可选的图像标签名称组合来标记您的图片。 

  3. 运行 docker push 命令推送 Docker 映像。 

  4. 对所有需要的映像重复上述步骤。

云管理员

创建 Amazon ECS 任务定义。

在亚马逊ECS中运行 Docker 容器需要任务定义。 

  1. 返回 Amazon ECS 控制台,选择任务定义,然后选择创建新任务定义。 

  2. 选择兼容性页面上,选择您的任务应使用的启动类型,然后选择下一步

重要

有关设置任务定义的帮助,请参阅相关资源部分中的“创建任务定义”。请务必提供您推送到亚马逊ECR的 Docker 镜像。

云管理员

创建ECS服务并选择 Fargate 作为启动类型。

  1. 使用您之前@@ 创建的ECS集群创建 Amazon ECS 服务。确保选择 Fargate 作为启动类型。

  2. 选择在上一步中创建的任务定义,并选择应用程序负载均衡器的目标组。

云管理员
任务描述所需技能

设置AWS PrivateLink 终端节点。

  1. 打开 Amazon VPC 控制台,然后创建 AWS PrivateLink 终端节点。 

  2. 将此终端节点与 Network Load Balancer 关联,这样客户就可以私下ECS使用亚马逊上托管的应用程序。 

云管理员
任务描述所需技能

创建VPC 终端节点。

为您之前@@ 创建的VPC终AWS PrivateLink 端节点创建终端节点。VPC端点完全限定域名 (FQDN) 将指向该AWS PrivateLink 端点FQDN。这会为域名服务终端节点可以访问的VPC终端节点服务创建一个 elastic network 接口。

云管理员
任务描述所需技能

将 Application Load Balancer 添加为目标。

要将应用程序负载均衡器添加为网络负载均衡器的目标,请按照AWS 文档中的说明进行操作。

应用程序开发人员

创建负载均衡器:

创建 Amazon EFS 文件系统:

创建 Secrets Manager 密钥:

创建一个 Amazon RDS 实例:

创建 Amazon ECS 组件

其他资源: