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

时间:2017-09-08 11:20:56

标签: node.js mongodb kubernetes

我在kubernetes中使用部署+服务托管NodeJS应用程序,并在同一个kubernetes集群中提供了自己的部署+服务的mongo。

我的问题是我如何将mongo ip作为:DB_URL=mongo:27017/test通过mongo的kubernetes env到nodeJS app ENV获取我的nodeJS env文件?

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

3 个答案:

答案 0 :(得分:1)

您可以这样访问服务主机/端口:

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

在文档here

中阅读更多内容

您可以使用以下命令打印给定服务的env变量:

kubectl exec myapp-deployment-3599435869-fn70t   -- printenv | grep SERVICE

答案 1 :(得分:0)

您不能将您的连接建立在POD IP上。您应该坚持使用服务(最好使用服务名称)或考虑StatefulSet,以便能够始终以mongo-1或类似的方式访问您的mongo 1st pod

答案 2 :(得分:0)

一种方法是将自己的群集IP地址指定为服务创建请求的一部分。为此,请设置spec.clusterIP字段。用户选择的IP地址必须是有效的IP地址,并且在由API服务器的标志指定的service-cluster-ip-range CIDR范围内

另一个方法是在整个群集中启用DNS,然后所有Pod应该能够自动对服务进行名称解析。 例如,如果您在Kubernetes命名空间"my-service"中有一个名为"my-ns"的服务,则会创建"my-service.my-ns"的DNS记录。存在于"my-ns"命名空间中的窗格应该能够通过简单地对"my-service"进行名称查找来找到它。存在于其他命名空间中的窗格必须将名称限定为"my-service.my-ns"。这些名称查找的结果是群集IP。

https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services