目标
我的目标是从AWS EKS集群中运行的吊舱连接到RDS (Postgres)数据库。我使用Terraform来提供服务,但不一定要寻找Terraform代码解决方案。
我试过的
我已经创建了数据库(减少了密码、username...etc等设置)。像这样:
resource "aws_db_instance" "rds-service" {
name = "serviceDB"
engine = "postgres"
db_subnet_group_name = aws_db_subnet_group.service_subnet_group.name
}
然后创建一个安全组,以允许通信量。
resource "aws_security_group" "db" {
name = "service-rds-access"
vpc_id = module.vpc.vpc_id
ingress {
description = "Postgres from VPC"
from_port = 5432
to_port = 5432
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
它使用了我创建的子网组(注意到RDS只部署在私有子网上,并且我使用的子网是子网的子集,用于在EKS上部署服务)。
resource "aws_db_subnet_group" "service_subnet_group" {
name = "service-subnet-group"
subnet_ids = [module.vpc.subnet_a_private_id, module.vpc.subnet_b_private_id]
}
什么不起作用
在尝试从Pod连接时,我无法到达RDS。我还尝试过将一个shell放入荚中,并尝试手动连接到RDS实例,如下所示:
运行psql --version
:psql (PostgreSQL) 11.9
,然后当我试图通过psql
进行身份验证时,如下所示:
psql --host=$HOST_NAME --port=5432 --username=$USER_NAME --password --dbname=postgres
我有(编辑是我的):
psql: could not connect to server: Connection timed out
Is the server running on host "<hostname>.amazonaws.com" <IP> and accepting
TCP/IP connections on port 5432?
发布于 2020-12-22 13:34:22
发布于 2020-12-22 15:14:12
由于阿米德的提示,我在调试这个问题上有了更多的可见性。我错过了将我创建的vpc_security_group_ids
附加到RDS资源。因此,添加vpc_security_group_ids = [aws_security_group.db.id]
为我解决了这个问题。
https://stackoverflow.com/questions/65408905
复制相似问题