You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

学习Kubernetes部署Mongo与Mongo Express遇数据库连接故障

Kubernetes中Mongo与Mongo Express部署连接问题排查

问题说明

正在学习Kubernetes,部署Mongo和Mongo Express节点时遇到连接问题。执行minikube service mongo-express-service启动服务后页面无法正常工作,报错信息:Could not connect to database using connectionString: mongodb://-n 'username'

相关配置与信息

1. 核心配置文件

Mongo-express Deployment及Service

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo-express
  labels:
    app: mongo-express
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo-express
  template:
    metadata:
      labels:
        app: mongo-express
    spec:
      containers:
        - name: mongo-express
          image: mongo-express
          ports:
            - containerPort: 8081
          env:
            - name: ME_CONFIG_MONGODB_SERVER
              valueFrom:
                configMapKeyRef:
                  name: mongodb-configmap
                  key: database_url
            - name: ME_CONFIG_MONGODB_ADMINUSERNAME
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-username
            - name: ME_CONFIG_BASICAUTH_USERNAME
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-username
            - name: ME_CONFIG_MONGODB_ADMINPASSWORD
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-username
            - name: ME_CONFIG_BASICAUTH_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-username
---
apiVersion: v1
kind: Service
metadata:
  name: mongo-express-service
spec:
  selector:
    app: mongo-express
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 8081
      targetPort: 8081
      nodePort: 30000

ConfigMap

ConfigMap名称为mongodb-configmap,其中database_url键的值设置为mongodb-service(对应Mongo Service的名称)

Mongo Deployment及Service

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
        - name: mongodb
          image: mongo
          ports:
            - containerPort: 27017
              hostPort: 27017
          env:
            - name: MONGO_INITDB_ROOT_USERNAME
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-username
            - name: MONGO_INITDB_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mongodb-secret
                  key: mongo-root-password
---
apiVersion: v1
kind: Service
metadata:
  name: mongodb-service
spec:
  selector:
    app: mongodb
  ports:
    - protocol: TCP
      port: 27017
      targetPort: 27017

Secret

Secret名称为mongodb-secret,包含两个键:mongo-root-username(存储Mongo管理员用户名)、mongo-root-password(存储Mongo管理员密码)

问题排查与修复

核心问题

Mongo-express的环境变量配置存在明显错误:

  • ME_CONFIG_MONGODB_ADMINPASSWORD(Mongo认证密码)错误引用了mongo-root-username键
  • ME_CONFIG_BASICAUTH_PASSWORD(Mongo Express自身登录密码)同样错误引用了mongo-root-username键

这两个错误会导致连接Mongo时使用用户名作为密码,认证失败,同时生成格式异常的连接字符串,最终出现页面无法访问的问题。

修复后的Mongo-express环境变量配置

env:
  - name: ME_CONFIG_MONGODB_SERVER
    valueFrom:
      configMapKeyRef:
        name: mongodb-configmap
        key: database_url
  - name: ME_CONFIG_MONGODB_ADMINUSERNAME
    valueFrom:
      secretKeyRef:
        name: mongodb-secret
        key: mongo-root-username
  - name: ME_CONFIG_BASICAUTH_USERNAME
    valueFrom:
      secretKeyRef:
        name: mongodb-secret
        key: mongo-root-username
  - name: ME_CONFIG_MONGODB_ADMINPASSWORD
    valueFrom:
      secretKeyRef:
        name: mongodb-secret
        key: mongo-root-password
  - name: ME_CONFIG_BASICAUTH_PASSWORD
    valueFrom:
      secretKeyRef:
        name: mongodb-secret
        key: mongo-root-password

修复步骤

  1. 编辑Mongo-express的Deployment配置文件,替换上述错误的环境变量配置
  2. 应用更新后的配置:kubectl apply -f <你的mongo-express配置文件名>.yaml
  3. 等待Pod重启完成后,再次执行minikube service mongo-express-service测试服务连接

内容的提问来源于stack exchange,提问作者mohmad khaled

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:47:13