gpt4 book ai didi

mongodb - 如何在 Kubernetes 集群中公开 MongoDB 副本集的远程连接

转载 作者:行者123 更新时间:2023-12-02 02:18:20 25 4
gpt4 key购买 nike

我在我的 Kubernetes 集群中部署了一个 MongoDB 副本集。借助集群内部的 ClusterIP,MongoDB 副本集可以轻松连接。我什至将它连接到我的 mongo-express 客户端。

//Successfull and working fine internally
mongodb://db-mongodb-0.mycompany-mongodb-headless:27017/db

但是我必须建立远程连接才能进行本地测试和其他服务。我正在使用 Bitnami 提供的 MongoDB helm chart。我在 30001 和 30002 为我的两个副本集打开了一个 NodePort。

我第一次尝试建立远程连接是:

尝试连接我之前打开的 NodePort。我目前正在使用 Mongoose 客户端。我的两个副本集的可用节点端口是 - 30001、30002。

//Unsuccessful
mongoose
.connect(
`mongodb://username:password@<EXTERNAL_IP>:30001,<EXTERNAL_IP>:30002/mydb`,
{
useNewUrlParser: true,
useUnifiedTopology: true,
}
)

然后我的第二次尝试是——

我尝试了端口转发并尝试连接到我的本地主机,就像这样-

kubectl port-forward svc/database-mongodb-0-external 27017:27017

然后我尝试建立这样的连接也失败了

//Unsuccessful 
//MongoError: Authentication failed.
mongodb://username:password@localhost:27017/database

我也在这两种情况下尝试了 ?replicaSet=rs0 查询参数。但运气不好。

我没有尝试打开 LoadBalancer。有没有办法通过我的 Ingress-Nginx Controller 与我的 MongoDB 服务建立远程连接?我不知道这是否可能,但我试图将我的 headless 服务转发到子域。但是那个子域是这样说的——看起来您正在尝试通过 native 驱动程序端口上的 HTTP 访问 MongoDB。我不确定这是否可能!

但最后,我唯一的问题是,如何与在 Kubernetes 集群中设置的 MongoDB 副本集建立或公开远程连接?

我最新的 Bitnami/Mongodb 值是

architecture: replicaset
auth:
rootPassword: 12341234
username: abcd
password: 1234234
database: abcd
replicaSetKey: abcd
persistence:
enabled: true
size: 3Gi
externalAccess:
enabled: true
autoDiscovery:
enabled: true
service:
type: NodePort
nodePorts: ['30001', '30002']
rbac:
create: true

最佳答案

如果我没理解错的话,您想将您的 MongoDB 复制集暴露给一个远程连接。

我正在积极使用 Bitnami MongoDB helm chart,我可以使用您的第一次尝试轻松地本地连接到 helm chart:

  1. 我转发映射端口 27017:27017 的 headless 服务
  2. 我只是使用用户名和密码连接到本地主机,与我的连接字符串的唯一区别是我没有指定数据库:mongodb://<user>:<password>@localhost:27017

要回答您的最后一个问题,您需要在 Official documentation page 中查找, helm chart 几乎没有什么值可以暴露你的 mongodb:

  • service.type=LoadBalancer
  • externalAccess.enabled=true
  • externalAccess.autoDiscovery.enabled

您可以使用这些变量来找到远程公开 MongoDB 的最合适方式。

请注意,如果您启用了 LoadBalancer 和 autoDiscovery,则需要确保您的 k8s 集群前面有一个 LoadBalancer(ELB 如果是 Amazon EKS)。如果您使用的是云管理的 kubernetes 服务,请不要担心最后一点,因为您将立即拥有此功能。

关于mongodb - 如何在 Kubernetes 集群中公开 MongoDB 副本集的远程连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66829061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com