从另一个VPC访问私有RDS数据库

the*_*ebe 4 postgresql ssh amazon-web-services amazon-rds amazon-vpc

我正在尝试使用对等连接从不同的VPC访问私有RDS实例.我有两个VPC:

  1. 172.20.0.0/16带有一个公有子网的VPC-K8S()
  2. 172.17.0.0/16带有一个公有子网(172.17.0.0/24)和3个私有子网(172.17.{1,2,3}.0/24)的VPC-RDS ()

VPC-RDS有2个安全组(不是实际名称):

  1. default,从我的IP接受SSH
  2. db,它接受来自default安全组的端口5432上的TCP .

在私有子网中创建数据库子网组后,我将数据库实例部署在VPC-RDS中,并将其配置为不可公开访问.要从我的工作站访问它,我使用default安全组在VPC-RDS的公共子网中创建一个小实例,并创建一个SSH隧道:

ssh -L 5432:rds-host-name.us-east-1.rds.amazonaws.com:5432  -i "KeyName.pem"  ec2-user@ec2-host-name.compute-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

我可以通过localhost从我的工作站访问RDS.

我希望能够从我的Kubernetes集群(VPC-K8S)访问我的RDS实例.我建立两者之间的对等连接,并配置路由表适当地(在VPC-K8S:172.17.0.0/16 -> pcx-112233; VPC-RDS: 172.20.0.0/16 -> pcx-112233)

我无法从我的一个K8S节点或K8S VPC中的任何实例连接到RDS.我怀疑它与db安全组有关,但即使我打开端口5432到所有IP(0.0.0.0/0)它也没有帮助.

任何想法如何做到这一点,或者这只能通过公共可访问的RDS实例或VPC-RDS和defaultSG中的Bastion主机实现?

the*_*ebe 9

愚蠢的疏忽,但是如果它对任何人都有帮助,我会把它留下来.

我在VPC-RDS中的私有子网使用与公有子网不同的路由表.这样做是为了使互联网地址(用于捕获所有规则0.0.0.0/0)指向NAT网关而不是公共子网中的互联网网关.

我为私有子网的路由表添加了一个规则,用于对等连接(172.20.0.0/16 -> pcx-112233),然后将db安全组配置为接受来自端口5432的TCP流量172.20.0.0/16.

  • Thx为此你节省了我的时间! (2认同)