[英]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-name
的auto-generated-name.cassandra.default.svc.cluster.local
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.