You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从EKS集群连接AWS RDS Postgres:pg_hba.conf无匹配条目

问题:EKS Pod连接RDS Postgres失败,提示无pg_hba.conf条目(未加密)

我正尝试从运行NestJS+TypeORM应用的EKS Kubernetes集群Pod连接AWS RDS Postgres数据库。EKS集群与RDS实例不在同一VPC,但RDS已设置为公开可用。RDS实例端点及其他凭证已作为环境变量配置到应用部署中,通过pgAdmin可正常连接,但Pod启动时出现以下错误:

[Nest] 1  - 08/11/2023, 10:29:43 PM   ERROR [ExceptionHandler] no pg_hba.conf entry for host "18.193.43.189", user "postgres", database "development", no encryption
error: no pg_hba.conf entry for host "18.193.43.189", user "postgres", database "development", no encryption

当前TypeORM配置如下:

TypeOrmModule.forRootAsync({
  useFactory: (): TypeOrmModuleOptions => ({
    type: process.env.DB_TYPE as any,
    host: process.env.DB_HOST,
    port: parseInt(process.env.DB_PORT),
    username: process.env.DB_USERNAME,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    entities: ['dist/**/*.entity{.ts,.js}'],
    migrations: ['dist/**/database/migration/**/*{.ts,.js}'],
    subscribers: ['dist/**/*.subscriber/{.ts,.js}'],
    migrationsRun: true,
    synchronize: true,
    uuidExtension: 'pgcrypto',
    schema: 'public',
    logging: process.env.DB_LOGGING === 'true',
    migrationsTableName: 'florence_migration',
    namingStrategy: new SnakeNamingStrategy(),
    ssl: false,
    options: { encrypt: false },
  }),
})

RDS Postgres配置及关联VPC入站安全组截图:

  • RDS配置截图
  • VPC入站安全组截图

解决方法

错误核心是AWS RDS公开可用的Postgres默认强制加密连接,但你的TypeORM配置关闭了SSL/加密。

  1. 调整TypeORM的SSL配置
    把配置里的ssl: false改为ssl: true,同时更新options参数适配pg驱动:

    ssl: true,
    options: {
      encrypt: true,
      rejectUnauthorized: false // 未配置自定义CA证书时临时关闭验证,生产环境建议添加RDS官方CA证书
    }
    

    生产环境需使用AWS RDS CA证书,示例配置:

    import * as fs from 'fs';
    
    // ...
    ssl: {
      rejectUnauthorized: true,
      ca: fs.readFileSync('./rds-ca-2019-root.pem').toString() // 替换为实际CA证书路径
    },
    options: { encrypt: true }
    // ...
    
  2. 确认RDS SSL强制设置
    检查RDS实例的「SSL连接」配置,确保处于「强制SSL连接」状态(从截图看已开启,可再次确认)。

  3. 验证安全组规则覆盖Pod出口IP
    确保RDS安全组的入站规则允许EKS Pod的出口IP或EKS集群NAT网关IP访问5432端口。pgAdmin能连接说明你的本地IP已被允许,但Pod的出口IP可能不同,需补充对应规则。

内容的提问来源于stack exchange,提问作者Nikola Bozic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:34:58