簡體   English   中英

從Node.js GKE Pod連接到外部MySQL數據庫

[英]Connecting to external mysql db from nodejs GKE pod

我有一個nodejs express應用程序,它使用以下命令連接到mysql數據庫:

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群集時,我無法連接至host:port。

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地址不是負載均衡器的IP地址。 因為負載平衡器是用於入口流量,而不是出口流量。

解決方法是創建一個私有群集,然后使用Google Cloud NAT服務通過單個ip(或ip范圍)路由該群集的出口流量。 一旦完成,我就可以成功連接到數據庫,而無需額外的端點/ mysql服務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM