簡體   English   中英

如何將谷歌雲功能連接到kubernetes集群中的cassandra數據庫

[英]How to connect a google cloud function to cassandra database in kubernetes cluster

我在google雲平台上使用kubernetes(帶有terraform)部署了一個cassandra集群。

cassandra集群運行良好,我正在使用kubectl exec -it cassandra-0 bash運行一些命令,並且數據傳播到所有其他節點,一切運行良好。

當我運行host cassandra我看到了這個:

cassandra.default.svc.cluster.local has address 10.32.1.4
cassandra.default.svc.cluster.local has address 10.32.1.5
cassandra.default.svc.cluster.local has address 10.32.3.12

一切都是對的。

但現在我有一個問題,我不知道如何解決。 我有一個谷歌雲功能,我想連接到這個數據庫並插入一些數據。

做這個的最好方式是什么? 我想我不應該將數據庫暴露給互聯網。 但是當我嘗試將雲功能連接到cassandra.default.svc.cluster.local我看不到服務器。

我在cassandra服務上使用cluster_ip = "None"

更新:添加了以下信息:

我的Google Cloud功能是這樣的:

exports.helloGET = function helloGET (req, res) {
    const cassandra = require('cassandra-driver');
    const client = new cassandra.Client({ contactPoints: ['cassandra.default.svc.cluster.local'], localDataCenter: 'DC1', keyspace: 'my_bd_name' });

    const query = 'SELECT * FROM User';
    client.execute(query)
        .then(result => console.log('Users: ', dump(result.rows)));

    res.send('Cassandra loaded... :' + dump(result.rows));
};

預計會有完整的SRV記錄

SRV記錄

為命名端口創建SRV記錄,這些端口是普通服務或無頭服務的一部分。 對於每個命名端口,SRV記錄的格式為_my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local 對於常規服務,這將解析為端口號和域名: my-svc.my-namespace.svc.cluster.local 對於無頭服務,這將解析為多個答案,一個用於支持服務的每個pod,並包含auto-generated-name.my-svc.my-namespace.svc.cluster.local形式的pod的端口號和域名auto-generated-name.my-svc.my-namespace.svc.cluster.local

在你的情況,你創建了一個無頭的服務(沒有群集IP為你使用cluster_ip = "None" ),並需要找到auto-generated-nameauto-generated-name.cassandra.default.svc.cluster.local

暫無
暫無

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

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