在最近的一篇博客中,亚马逊宣布为其弹性容器服务(ECS)和弹性容器注册表(ECR)提供 AWS PrivateLink 支持。 借助 AWS PrivateLink,客户可以为 ECS 和 ECR 创建端点,这些端点在其虚拟私有云(VPC)中显示为具有私有 IP 地址的弹性网络接口。
AWS PrivateLink 是一种网络技术,旨在以高度可扩展和高可用的方式访问 AWS 服务,同时将网络流量限制在 AWS 网络内。 如果没有这项技术,Amazon EC2 实例需要通过公共网络下载 保存在 ECR 中的 Docker 镜像或者与 ECS 控制平面进行通信。
借助 PrivateLink,Amazon EC2 实例既可以通过私有子网从 Amazon ECR 获取这些镜像,也可以通过公共子网获取。 实例还可以通过 AWS PrivateLink 端点与 ECS 控制平面通信,无需使用公网网关或 NAT 网关。最后,由于流量不经过公网,极大降低了遭到分布式拒绝服务攻击和暴力破解的风险。
在这篇博客中,AWS 容器服务开发人员 Nathan Peck 表示,带有 AWS PrivateLink 的网络架构变得更加简单。此外,他写道:
它允许你拒绝私有 EC2 实例访问 AWS 服务之外的其它任何内容,从而增强了安全性。 当然,这是假设你想要屏蔽那些实例对公网的访问。
要实现这种网络架构,客户需要创建多个 AWS PrivateLink 资源:
用于 ECR 的 AWS PrivateLink 端点——允许 VPC 中 的实例与 ECR 通信,以便下载镜像清单。
用于 Amazon S3 的 Gateway VPC 端点——允许实例从托管它们的底层私有 Amazon S3 存储桶下载镜像层。
用于 ECS 的 AWS PrivateLink 端点——允许实例与 ECS 控制平面中的遥测和代理服务通信。
来源: https://aws.amazon.com/blogs/compute/setting-up-aws-privatelink-for-amazon-ecs-and-amazon-ecr/
创建用于 ECR 的 AWS PrivateLink 接口的典型方式是通过 VPC 控制台中的端点创建向导。 ECR 本身需要两个接口端点:
com.amazonaws.region.ecr.api
com.amazonaws.region.ecr.dkr
如博客中所述,用户需要通过一系列步骤来创建这些端点:
选择 AWS 服务和端点
指定应添加 AWS PrivateLink 接口的 VPC 和子网
启用端点所需的私有 DNS 名称
为接口本身定义安全组
创建端点
来源: https://aws.amazon.com/blogs/compute/setting-up-aws-privatelink-for-amazon-ecs-and-amazon-ecr/
接下来,为了创建 ECR 端点,用户还需要为 S3 创建网关 VPC 端点,让 ECR 可以存储 Docker 镜像层。 在 AWS 服务列表中选择“com.amazonaws.region.s3”,并选择 VPC 托管,ECS 集群用户就可以完成 S3 网关端点的添加。 最后,用户可以为 ECS 创建 AWS PrivateLink 接口端点,方法是创建三个接口端点,就像为 ECR 创建接口端点那样,这些端点是:
com.amazonaws.region.ecs-agent
*com.amazonaws.region.ecs-*telemetry
com.amazonaws.region.ecs
通过使用这些 AWS PrivateLink 资源,所有容器编排流量都保留在 VPC 内,并且 ECS 集群中的实例可以直接与 ECS 控制平面通信。 此外,实例可以直接下载 Docker 镜像,而无需在 VPC 之外使用公网网关或 NAT 网关进行任何连接。 一个针对 Amazon ECR PrivateLink 问题的 Reddit 帖子提到,后者可以节省成本:
6 至 7TB 数据通过 NAT 网关的连接时间费用约为 32.85 美元/月,加上数据传输费用 270 美元(数据处理费率为 0.045 美元/GB,假设 ECR 在同一地区)。 PrivateLink 的费用是其 1/4。连接时间费用为 7.30 美元/月,6 至 7TB 数据的处理费用为 60 至 70 美元。
更多有关 AWS PrivateLink 定价的详细信息,请参阅定价页面。
查看英文原文:https://www.infoq.com/news/2019/02/aws-privatelink-ecr-ecs
评论