Kubernetes通过环境与NodeJS共享Mongodb变量

0 人关注

我有一个简单的设置,在kubernetes中托管一个使用部署+服务的NodeJS应用程序,在同一个kubernetes集群中还有一个具有自己的部署+服务的mongo。

我的问题是,我如何把mongo的ip放到我的nodeJS环境文件中,作为: DB_URL=mongo:27017/test 通过mongo的kubernetes环境到nodeJS应用ENV?

我认为mongo的服务IP不是恒定的,可能会改变。

node.js
mongodb
kubernetes
SamTheGoodOne
SamTheGoodOne
发布于 2017-09-08
3 个回答
SamTheGoodOne
SamTheGoodOne
发布于 2017-09-10
已采纳
0 人赞同

你可以像这样访问服务主机/端口。

this.url = 'mongodb://'
+ process.env.MYAPP_TRANSACTIONS_MONGO_SERVICE_HOST + ':'
+ process.env.MYAPP_TRANSACTIONS_MONGO_SERVICE_PORT;

在文档中阅读更多内容here

你可以用这个命令来打印你对某一服务的环境变量。

kubectl exec myapp-deployment-3599435869-fn70t   -- printenv | grep SERVICE
    
Radek 'Goblin' Pieczonka
Radek 'Goblin' Pieczonka
发布于 2017-09-10
0 人赞同

你不能把你的连接建立在POD IP上。你应该坚持使用服务(最好是使用服务名称),或者考虑StatefulSet,这将使你有可能总是以mongo-1或类似的方式到达你的mongo第一舱。

你怎么做的?你能不能添加一个链接到一个让我使用服务名称的文献?我总是使用服务的IP和端口,但我如何根据kubernetes来连接这两者?
rrh
Here 是一个使用StatefulSet的例子。 它有一个无头服务(culsterIp: None),可以让你通过名字到达你的pods
Innocent Anigbo
Innocent Anigbo
发布于 2017-09-10
0 人赞同

一种方法是指定你自己的集群IP地址作为服务创建请求的一部分。要做到这一点,需要设置 spec.clusterIP 字段。用户选择的IP地址必须是一个有效的IP地址,并且在 service-cluster-ip-range 通过标志指定给API服务器的CIDR范围