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

如何在Kubernetes中使用外部MongoDB服务,mongodb,typescript,kubernetes,Mongodb,Typescript,Kubernetes,我一直在为我的工作部署设置Kubernetes集群。我将MongoDB托管在外部droplet上,并希望配置外部服务访问 我正在关注这一点。 当我使用kubectl应用我的配置时,一切似乎都运行良好 我的设置服务端点(&E) kind: Service apiVersion: v1 metadata: name: mongo spec: ports: - name: mongodb port: xxxx ------ kind: Endpoints apiVersion: v1 me

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

我正在关注这一点。 当我使用kubectl应用我的配置时,一切似乎都运行良好

我的设置服务端点(&E)

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
我正在使用typescript进行开发,这就是我目前设置DB连接的方式

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);
我的问题是,如何使用代码中的安装服务/部署。

谢谢

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

  • 对应用程序中服务的IP:端口进行硬编码
  • 在应用程序中使用环境变量并将其注入
  • 使用创建服务/端点、服务或服务。这允许您的应用程序使用 库伯内特斯的机制
  • 在您的情况下,您可以使用:
    const MONGO_=“URI”mongodb://mongo/${config.collection}?authSource=admin'

    由于名称
    mongo
    将映射到
    159.89.x.x:xxx

    ,您是否询问如何从集群访问服务?如果是,您只需使用服务名称:mongodb://mongo:portmongo 看起来没有定义,POD启动时总是试图使用默认MongoDB设置连接到默认,我有一个非常类似的设置,端点/服务指向外部MongoDB服务器,我就是这样做的。您可能希望通过在POD中执行一些名称查找来检查POD是否可以看到该名称。我希望它与上一个解决方案一样简单,但$mongo似乎仍然不明确您是否尝试访问
    $mongo
    ,或
    mongo
    ?使用该服务设置,
    mongo
    应该可用。我搞错了。这是mongo,而不是$mongo。无论如何,您的应用程序是否与服务位于同一名称空间(默认)?您可以尝试改用
    mongo.default
    。您还可以尝试使用环境变量:$MONGO\u SERVICE\u HOST和$MONGO\u SERVICE\u PORT。要调试DNS,您可以进入pod并尝试
    curl mongo