Как подключить облачную функцию Google к базе данных cassandra в кластере kubernetes - PullRequest
0 голосов
/ 28 марта 2019

Я развернул кластер кассандры в облачной платформе Google с помощью kubernetes (с terraform).

Кластер кассандры работает нормально, я запускаю некоторые команды с 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

Пока здесь все в порядке.

Но теперь у меня есть вопрос, который я не знаю, как решить. У меня есть функция Google Cloud, которую я хочу подключить к этой базе данных и вставить некоторые данные.

Каков наилучший способ сделать это? Я думаю, что я не должен выставлять базу данных в Интернете. Но когда я пытаюсь подключить облачную функцию к cassandra.default.svc.cluster.local, я не вижу сервер.

Я использую 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));
};

1 Ответ

0 голосов
/ 28 марта 2019

Ожидается полная SRV запись .

SRV-записи

SRV-записи создаются для именованных портов, которые являются частью обычных или автономных служб.Для каждого именованного порта запись SRV будет иметь вид _my-port-name._my-port-protocol.my-svc.my-namespace.svc.cluster.local.Для обычной службы это разрешает номер порта и имя домена: my-svc.my-namespace.svc.cluster.local.Для автономной службы это разрешает несколько ответов, по одному для каждого модуля, поддерживающего службу, и содержит номер порта и имя домена модуля в форме 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.

...