如何在Kubernetes上设置安全的cockroachdb,以便从NodeJs访问

问题描述 投票:0回答:1

我是Kubernetes和CockroachDB的新手。我有一个在Kubernetes集群上运行的安全多节点节点数据库,并且能够在外部公开它并使用蟑螂UI监视它。

service list

现在我想使用pg for Node或sequelize从节点应用程序访问它。但是我得到连接超时。

我相信我必须创建一个客户端证书并使用它来建立连接,但我找不到关于如何执行此操作的Kubernetes特定文档。如果有人成功了,你是如何创建证书的?你是如何在节点应用程序中使用它的?

kubernetes pg cockroachdb
1个回答
1
投票

我已经找到了如何通过获取我为本地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()
  }

});

我将公共pod作为服务暴露在这样​​的kubernetes中

kubectl expose service cockroachdb-public --port=26257 --target-port=26257 --name=cp --type=LoadBalancer

并获取最终分配给该服务的外部IP地址。

实际上非常简单,但是当你第一次接近它时会头疼。感谢那些花时间发表评论的人。

@samstride刚刚注意到你的评论。可能更好地使用除root之外的用户,但您可以获得这样的证书(可能还有其他方式)。

ca(使用cockroachdb-client-secure pod,如果你仍然运行它)

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
© www.soinside.com 2019 - 2024. All rights reserved.