从Nodejs Gke Pod连接到外部MySQL DB



我有一个nodejs express应用,该应用使用:

连接到mysql db
const dbconfig = {
 client: 'mysql',
 connection: {
     host: config.db.host,
     user: config.db.user,
     password: config.db.password,
     database: config.db.database,
     port: config.db.port,
     charset: 'utf8',
     ssl: {
         ca: fs.readFileSync(__dirname + '/root_ca.pem')
     }
 }
}

在我本地的Docker Env中,此连接成功了,但是将其部署到Kube群集上时,我无法连接到主机:端口。

设置VPC以允许在该主机/端口上入口/出口流量。

也设置了服务和端点:

kind: "Service"
apiVersion: "v1"
metadata:
 name: "mysql"
spec:
 ports:
  - name: "mysql"
    protocol: "TCP"
    port: 13306
    nodePort: 0
selector: {}
---
kind: "Endpoints"
apiVersion: "v1"
metadata:
 name: "mysql"
subsets:
 - addresses:
   - ip: "34.201.17.84"
   ports:
    - port: 13306
      name: "mysql"

更新:仍然没有运气,但更多的信息表明吊舱和节点无法到达主机。

因此,在Google支持的帮助下,我能够找到解决问题的解决方案。问题在于,将列入到数据库的白名单的IP地址不是LoadBalancer的IP地址。由于负载量是用于入口流量而不是出口流量的。

解决此问题的工作是创建一个私有集群,然后使用Google Cloud Nat服务通过单个IP(或IP范围)路由该集群的出口流量。完成此操作后,我就可以成功连接到DB,而无需额外的端点/MySQL服务。

相关内容

  • 没有找到相关文章

最新更新