首页 > 解决方案 > mongo db的用户名和密码是什么

问题描述

我正在Windows 机器上的流浪构建裸机集群上做这个练习。

能够成功运行该应用程序。

留言簿应用

但是我无法连接到数据库以查看数据,例如来自 mongo db compass。

使用指南针连接到 mongodb

用户 ID 或密码应该是什么?

经过一番研究,我使用以下步骤进入 mongo 容器并验证数据。但我想使用像指南针这样的客户端连接到数据库。

使用以下命令查找 mongo db 后端数据库 pod 的部署位置。

vagrant@kmasterNew:~/GuestBookMonog$ kubectl get pods -o wide
NAME                       READY   STATUS    RESTARTS   AGE     IP              NODE          NOMINATED NODE   READINESS GATES
frontend-848d88c7c-95db6   1/1     Running   0          4m51s   192.168.55.11   kworkernew2   <none>           <none>
mongo-75f59d57f4-klmm6     1/1     Running   0          4m54s   192.168.55.10   kworkernew2   <none>           <none>

然后 ssh 进入该节点并执行

docker container ls 

找到 mongo db 容器

它看起来像这样。我删除了不相关的数据。

CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS     NAMES
1ba3d05168ca   dc77715107a9             "docker-entrypoint.s…&quot;   53 minutes ago   Up 53 minutes             k8s_mongo_mongo-75f59d57f4-5tw5b_default_eeddf81b-8dde-4c3e-8505-e08229f97c8b_0      

来自SO的参考

docker exec -it 1ba3d05168ca bash

在这种情况下来自SO的另一个参考

mongo
show dbs
use guestbook
show collections
db.messages.find()

最后我能够验证数据

> db.messages.find()
{ "_id" : ObjectId("6097f6c28088bc17f61bdc32"), "message" : ",message1" }
{ "_id" : ObjectId("6097f6c58088bc17f61bdc33"), "message" : ",message1,message2" }

但问题是如何从 mongo db compass 中查看这些数据?我正在使用 NodePort 类型公开前端和后端服务。你可以在下面看到它们。

以下是我从上述示例中获得的部署的 k8s 清单文件。

前端部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
  labels:
    app.kubernetes.io/name: guestbook
    app.kubernetes.io/component: frontend
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: guestbook
      app.kubernetes.io/component: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app.kubernetes.io/name: guestbook
        app.kubernetes.io/component: frontend
    spec:
      containers:
      - name: guestbook
        image: paulczar/gb-frontend:v5
        # image: gcr.io/google-samples/gb-frontend:v4
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
        ports:
        - containerPort: 80

前端服务。

apiVersion: v1
kind: Service
metadata:
  name: frontend
  labels:
    app.kubernetes.io/name: guestbook
    app.kubernetes.io/component: frontend
spec:
  # if your cluster supports it, uncomment the following to automatically create
  # an external load-balanced IP for the frontend service.
  # type: LoadBalancer
  type: NodePort
  ports:
  - port: 80
    nodePort: 30038
  # - targetPort: 80
  #   port: 80
  #   nodePort: 30008

  selector:
    app.kubernetes.io/name: guestbook
    app.kubernetes.io/component: frontend

接下来是 mongo db 部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
  labels:
    app.kubernetes.io/name: mongo
    app.kubernetes.io/component: backend
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: mongo
      app.kubernetes.io/component: backend
  replicas: 1
  template:
    metadata:
      labels:
        app.kubernetes.io/name: mongo
        app.kubernetes.io/component: backend
    spec:
      containers:
      - name: mongo
        image: mongo:4.2
        args:
          - --bind_ip
          - 0.0.0.0
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 27017

最后是mongo服务

apiVersion: v1
kind: Service
metadata:
  name: mongo
  labels:
    app.kubernetes.io/name: mongo
    app.kubernetes.io/component: backend
spec:
  ports:
  - port: 27017
    targetPort: 27017
    nodePort: 30068
  type: NodePort
  selector:
    app.kubernetes.io/name: mongo
    app.kubernetes.io/component: backend

标签: mongodbkubernetes

解决方案


简短的回答:没有。

长答案:您正在使用该mongo图像,您可以在https://hub.docker.com/_/mongo上提取自述文件。这表明默认情况下禁用身份验证,必须通过--auth命令行参数手动启用。这样做时,您可以通过环境变量指定初始身份验证配置,然后在引用的 .d/ 文件夹中指定更复杂的内容。


推荐阅读