如何在Kubernetes中使用外部MongoDB服务

时间:2019-09-06 14:39:19

标签: mongodb typescript kubernetes

我一直在为工作部署设置Kubernetes集群。我将MongoDB托管在外部Droplet上,并希望配置外部服务访问。

我正在关注此tutorial。 当我将我的配置与kubectl一起应用时,一切似乎都运行良好。

我的设置服务和端点

kind: Service
apiVersion: v1
metadata:
 name: mongo
spec:
 ports:
 - name: mongodb
   port: xxxx
------
kind: Endpoints
apiVersion: v1
metadata:
 name: mongo
subsets:
 - addresses:
     - ip: 159.89.x.x
   ports:
     - port: xxx

我正在使用打字稿进行开发,这是我目前建立数据库连接的方式

const MONGO_URI = `mongodb://${config.mongourl}:${config.mongoport}/${config.collection}?authSource=admin`;
 const options ={
    user:`${config.mngusername}`, 
    pass:`${config.mngpassword}`,
    keepAlive: true, 
    keepAliveInitialDelay: 300000,
    useNewUrlParser: true,
    useCreateIndex: true
 }
mongoose.connect(MONGO_URI, options);

我的问题是,如何在代码中使用设置服务/部署。
谢谢

1 个答案:

答案 0 :(得分:1)

有很多使用外部服务的方式,例如:

  1. 在您的应用中对服务的IP:端口进行硬编码。
  2. 在应用程序中使用环境变量,并通过configmaps注入它们。
  3. 创建服务/端点,ExternalName服务或带有External IPs的服务。这使您的应用程序可以使用 Kubernetes的Service Discovery机制。

您可以使用以下方法:
 const MONGO_URI = 'mongodb://mongo/${config.collection}?authSource=admin';
名称mongo将被映射到159.89.x.x:xxx