Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法验证部署在kubernetes中的Mongodb_Mongodb_Docker_Kubernetes - Fatal编程技术网

无法验证部署在kubernetes中的Mongodb

无法验证部署在kubernetes中的Mongodb,mongodb,docker,kubernetes,Mongodb,Docker,Kubernetes,您好,我已经在kubernetes上部署了mongodb V-4.2.6,下面是yaml文件 # Service to expose MongoDB apiVersion: v1 kind: Service metadata: name: mongo namespace: namespace-name labels: app: mongo spec: ports: - name: mongo port: 27017 targetPort: 27017

您好,我已经在kubernetes上部署了mongodb V-4.2.6,下面是yaml文件

# Service to expose MongoDB
apiVersion: v1
kind: Service
metadata:
  name: mongo
  namespace: namespace-name 
  labels:
    app: mongo
spec:
  ports:
  - name: mongo
    port: 27017
    targetPort: 27017
  clusterIP: None
  selector:
    app: mongo
    tier: db
  type: ClusterIP

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
  namespace: namespace-name
  labels:
    tier: "db"
    app: "mongo"   
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo
      tier: "db"
  template:
    metadata:
      labels:
        app: mongo
        tier: "db"
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: mongo
        image: mongo:4.2.6
        resources:
            limits:
              memory: "2Gi"
            requests:
              memory: "512Mi"
        env:
        - name: MONGO_INITDB_ROOT_USERNAME
          value: "admin"
        - name: MONGO_INITDB_ROOT_PASSWORD
          value: "password"
        - name: MONGO_INITDB_DATABASE
          value: admin
        command: 
          - mongod
          - --auth
        ports:
        - containerPort: 27017
        volumeMounts:
        - name: nfs1
          mountPath: /data/db
      volumes:
        - name: nfs1
          nfs:
            server: 0.0.0.0
            path: "/path/to/volumes"

如果我尝试使用上述yaml文件中指定的凭据(db.auth(“admin”,“password”))登录,我将在mongodb中收到身份验证失败消息。我在stackoverflow中发现了相关问题,但找不到解决方案。任何人都可以帮助我从yaml文件中创建管理员用户。

从部署文件中删除
命令
,它就会工作。因为当您在清单中设置
MONGO\u INITDB\u ROOT\u用户名
MONGO\u INITDB\u ROOT\u密码
ENV变量时。Mongo容器将自行启用
--auth
。因此,您不需要显式地指定。看一看

# Service to expose MongoDB
apiVersion: v1
kind: Service
metadata:
  name: mongo
  namespace: namespace-name 
  labels:
    app: mongo
spec:
  ports:
  - name: mongo
    port: 27017
    targetPort: 27017
  clusterIP: None
  selector:
    app: mongo
    tier: db
  type: ClusterIP

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
  namespace: namespace-name
  labels:
    tier: "db"
    app: "mongo"   
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo
      tier: "db"
  template:
    metadata:
      labels:
        app: mongo
        tier: "db"
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: mongo
        image: mongo:4.2.6
        resources:
            limits:
              memory: "2Gi"
            requests:
              memory: "512Mi"
        env:
        - name: MONGO_INITDB_ROOT_USERNAME
          value: "admin"
        - name: MONGO_INITDB_ROOT_PASSWORD
          value: "password"
        - name: MONGO_INITDB_DATABASE
          value: admin
        command: 
          - mongod
          - --auth
        ports:
        - containerPort: 27017
        volumeMounts:
        - name: nfs1
          mountPath: /data/db
      volumes:
        - name: nfs1
          nfs:
            server: 0.0.0.0
            path: "/path/to/volumes"
更新的YAML

env:
        - name: MONGO_INITDB_ROOT_USERNAME
          value: "admin"
        - name: MONGO_INITDB_ROOT_PASSWORD
          value: "password"
        - name: MONGO_INITDB_DATABASE
          value: admin
        ports:
        - containerPort: 27017

从部署文件中删除
命令
,它就会工作。因为当您在清单中设置
MONGO\u INITDB\u ROOT\u用户名
MONGO\u INITDB\u ROOT\u密码
ENV变量时。Mongo容器将自行启用
--auth
。因此,您不需要显式地指定。看一看

更新的YAML

env:
        - name: MONGO_INITDB_ROOT_USERNAME
          value: "admin"
        - name: MONGO_INITDB_ROOT_PASSWORD
          value: "password"
        - name: MONGO_INITDB_DATABASE
          value: admin
        ports:
        - containerPort: 27017

这对我不管用,我很生气