Я понял, как это сделать, подбирая сертификаты, которые я сгенерировал для локального клиента sql, и повторно используя их в своем приложении узла - вот так
const pool = new Pool({
host: 'xxxx',
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
port:26257,
user:"root",
database:"xxxx",
ssl : {
rejectUnauthorized : false,
ca : fs.readFileSync("./ca/ca.crt").toString(),
key : fs.readFileSync("./ca/client.xxxx.key").toString(),
cert : fs.readFileSync("./ca/client.xxxx.crt").toString()
}
});
Я представил общедоступный модуль как сервис в kubernetes, как это
kubectl expose service cockroachdb-public --port=26257 --target-port=26257 --name=cp --type=LoadBalancer
и взял внешний IP-адрес, который в конечном итоге был назначен службе.
На самом деле довольно просто, но голова царапается, когда вы приближаетесь к нему в первый раз. Спасибо тем, кто нашел время, чтобы прокомментировать.
@samstride только что заметил ваш комментарий. Вероятно, лучше использовать пользователя, отличного от root, но вы можете получить эти сертификаты вот так (вероятно, и другими способами).
ca (используя модуль cockroachdb-client-secure, если он у вас все еще работает)
kubectl exec cockroachdb-client-secure -it -- cat /cockroach-certs/ca.crt > ./ca.crt
ключ
kubectl get secret default.client.root -o jsonpath='{.data.key}' | base64 --decode > client.root.key
сертификат
kubectl get secret default.client.root -o jsonpath='{.data.cert}' | base64 --decode > client.root.crt
person
bruce
schedule
08.02.2018
sslmode=require
(предупреждение: в этом режиме не будет защиты MITM). - person Marc   schedule 08.02.2018